「内网渗透」利用非常规手段突破安全策略上线CS
cac55 2024-10-10 04:36 30 浏览 0 评论
前言
本文为一篇利用非常规手段突破安全策略的内网渗透记录
【查看资料】
环境简述&说明
- web打点getshell,webshell是冰蝎,权限为.net,权限很低,服务器为server 2016,目标不出网!
- 装有杀毒软件(火绒、微软自带的WD),ASMI默认开启,而且对power shell有特殊策略限制。
- Tcp、icmp、DNS协议不通,无法直接与公网的cs服务端建立连接,(内网的cs服务端也无法与其建立连接)公网也无法访问目标web服务(纯内网web服务)
- 极其严格的出入站策略
入站规则:只有http允许入站,只有一个80、8080两http端口能供内网机器正常访问
出站规则:不允许非8080端口对外通讯。
手绘了一张拓扑图,将就着看一下。
为什么要上线cs
webshell权限太低,限制性大,需要上线cs提权,因为cs是采用反射dll来加载pe程序,从而在执行一些敏感操作的时候能起到一定的bypass作用,例如mimikatz抓密码等操作。
像转储LSA到本地然后再dumphash都是行不通的,因为webshell权限太低了,转储LSA至少得管理员权限。
而且目标网络环境较为苛刻,任何非http协议的通讯都会被防火墙拦截,无法正常建立一个具有交互功能的shell。
坑点一:利用Pystinger反向代理上线cs
在查阅相关资料后,发现网上大部分文章都通过Pystinger来实现内网反向代理,利用http协议将目标机器端口映射至cs服务端监听端口,能在只能访问web服务且不出网的情况下可以使其上线cs。
但是这里有个问题,公网cs服务器无法访问目标的web服务,只有同处于在一个内网的机器才能访问目标web服务,所以无法直接在服务器上搭建pystinger将目标机端口反向代理至公网cs监听端口上。
这里采用的解决方法是直接在本机上搭建一个cs服务,然后再进行pystinger反代操作。
1.本地起一个cs服务
2.常规配置reserver型监听器,监听端口60020(上面图中6002少写了个0...)
3.proxy.aspx上传至目标服务器,访问:
4.stinger_server.exe 上传到目标服务器,执行命令:
start D:\stinger_server.exe 0.0.0.0
5.跳板机本地执行命令:
stinger_client -w http://10.1.1.1:8080/2.aspx-l 0.0.0.0 -p 4002
6.免费处理一下resever_bind,上传至目标并执行不上线,执行一下tasklist发现shell.exe已经执行了,就是不上线,pystinger报错。
最后的结果是,报错,具体原因不知道,可能是目标web环境有问题,可能是reserver型shell通讯有问题。
遂Pystinger反代上线cs失败。
坑点二:正向代理+正向shell上线公网CS
既然反向代理行不通,那就用正向代理,然后采用正向shell来连接。
目标机器不出网,本机能出网,可通过本机当作跳板机将目标机器的正向shell带出来。
原理图:
常见的http隧道工具Neo-reGeorg、reGeorg(应该这两款用得比较多)能适用于大多数网络环境,但是在这里就是不行,会出现跳板机直接与cs服务器断开的情况,而cs的connect正向连接请求是由跳板机的beacon发出的,你只能将beacon代理进socks隧道才能使connect请求能连接正向shell的监听端口,但因为目标机不出网,在跳板机的beacon进入代理隧道之后是无法连接到处于公网的cs服务端的,所以只能是端口对端口映射,而不能用http协议搭建的socks隧道(我猜的)。
所以这里将使用ABPTTS进行http隧道搭建。
- ABPTTS优点
对抗特征检测十分优秀
创建的隧道十分稳定
1、 配置abptts:
python abpttsfactory.py -o server \\生成服务端脚本,初始化。
2、 上传server脚本到目标机器
坑点三:文件上传
这个地方冰蝎、大马都传文件传不上去,只能用哥斯拉的大文件上传把abptts.aspx传了上去(后面exe的上传也是用的哥斯拉的大文件上传功能)exe文件落地也是个坑,在正常环境中,我们可以用certutil、powershell等方法下载exe到目标上,但是这台机器他不出网,因为出站规则的原因,甚至都无法访问内网中其他机器的web服务器,最后用哥斯拉的大文件上传解决了这个问题。
上传完成之后的abptts.aspx地址:http://10.1.1.1:8080/abptts.aspx
访问一下abptts.aspx,页面回显一长串密文说明abptts客户端正常
3、 启动http隧道
Python abpttsclient.py -c server/config.txt -u "http://10.1.1.1:8080/abptts.aspx"-f 127.0.0.1:7777/127.0.0.1:1111
这里的127.0.0.1:7777是本机端口,127.0.0.1:1111是目标机的端口
意思是将目标机的1111端口通过http隧道映射至本机的7777端口,你向本地的7777端口发送的请求都将转发至目标机的1111端口。
坑点四:正向Bind免杀
Cs的正向shell介绍(beacon tcp)
正向shell的作用原理是,bind在目标机器上开放一个监听端口,等待其他主机来访问这个监听端口,子Beacon从父Beacon接受请求,而不是直接与cs服务端通讯。
而反向shell则是,由目标发起请求访问cs服务端的监听端口
1.创建一个正向监听器:
2.生成正向载荷(在生成正向载荷的时候只能选择stageless Beacon ):
为什么使用正向shell:
假若目标机器的出站规则十分严格且目标也不出网,反向shell在这种情况下则无法正常与cs服务端保持通讯。
假若采用正向shell的话,在无论他的入站规则多严格,他也不会去阻止本地端口之间的通讯,这样就能绕过严格的出入站规则策略。
- 通讯过程:
Cs服务端(公网)--> 跳板机(父baecon)--> 7777端口--> 目标8080端口(http隧道)--> 目标1111端口(子baecon)
- Bypass分析
在目标机的防火墙眼中是本地的8080端口与本地的1111端口通讯,而攻击机与目标的8080端口则是正常被允许的交互行为,从而bypass了出入站策略。
正向Bind免杀
上面有提到过目标上有火绒和WD两款杀毒,直接上传正向shell肯定是会被秒杀的,本地测试报毒。
Reserver_Bind免杀较为简单,直接生成shellcode,通过分离免杀等方法加载shellcode。
但是正向shell不能生成shellcode,它属于stageless型Beacon,而stageless型Beacon无法生成shellcode,所以无法通过常规的分离式免杀来绕过杀毒。
- 提一下stager与stagerless的区别:
stager和stagerless型beacon - Stager型:只包含简单的加载逻辑部分,stager通过将c2的payload加载进内存从而实现pe加载,这种加载方式也就是反射型DLL加载。
- Stagerless型:stager+payload全写死在木马中,相比较于Stager型体积更大,特征码更明显。
由下图可以看到,在生成payload的时候没有正向bind监听器这个选项,只有Reserver监听器选项。
- 既然无法通过混淆加载器的方法来免杀,那就加强壳+定位特征码的方法来免杀。
国内大部分杀软估计都是基于模糊hash算法的特征码查杀,对代码层强混淆几乎就能绕过大部分杀毒,强壳(ASPack、upx、Safengine、VMPoject,实测Aspack、upx效果不是很好)。
主要用到的工具:VirTest5.0+ Resource Hacker +SafengineShielden+upx - VirTest5.0:
自动化定位特征码,因为不会汇编,所以就直接用010Editor修改特征码的十六进制来破环特征码。
- 其他修改特征码的方法: 替换汇编函数、调换指令顺序、指令跳转。
注意:在修改完特征码之后,要测试exe还能不能正常运行。 - SafengineShielden
反LPK注入、反调试器附加、反内存转储选上,复杂度拉满,虚拟机检测不要打勾。
- 最后加一层upx壳(upx壳视情况而定,有时候加了upx壳反而会被杀),Resource Hacker加入一个任意图标文件,成功过掉火绒。
目标机运行正向shell
上传正向bind,在冰蝎上执行 D:/beacon_se.exe,可以看到木马在目标机上开启了1111端口,我们通过http隧道去连接这个位于目标机1111端口上的正向bind。
本机(跳板)正向连接shell
本机(攻击者)上线cs作为跳板机,然后在本机shell中执行
connect 127.0.0.1 7777
成功正向上线 10.1.1.1,但是上线的shell权限极低,mimikatz无法运行,因为正向shell的原因,就算提权成功也无法直接反弹shell,而且因为目标系统是2016,插件中的常见提权脚本都会提权失败。
PrintSpoofer提权
上传PrintSpoofer.exe至目标主机。
执行如下命令,以system的权限运行我的正向shell,那么我将得到一个system权限的shell,而不是asp的低权限shell。
C:\Windows\Temp\PrintSpoofer -c D:/1111_se.exe
Netstat -ano确认一下有没有在本地开放一个1111端口。
正向shell正常运行,跳板机再次连接正向bind。
connect 127.0.0.1 7777
成功提权,渗透至此已基本结束战斗,得到一个system权限的正向shell,mimikatz抓密码,无明文,但能拿到hash。
绕过杀毒添加用户&&登录桌面
Net1改名添加用户,报错,必然是被火绒拦截了,上杀器直接驱动层干杀软。
本地实验能干掉,但是不知道为什么在目标上就实现不了。
换思路:火绒、360等国内杀毒拦截添加用户命令往往只针对net、net1这俩进程,并没有hook底层函数,所以我们只需要不去执行net、net1而去直接调用底层函数就能绕过杀毒的监控。
原理不去深度剖析了,网上有文章。
- Windows API 添加管理员用户
项目地址:https://github.com/newsoft/adduser
绕过杀毒添加上了一个用户,接下来就是常规操作,用打印机漏洞提权,利用sys权限切换到adminsitrator用户的桌面。 - hash传递攻击
再或者就是hash传递,直接上adminsitrator的桌面。sekurlsa::pth /user:Administrator /domain:用户名 /ntlm:194f34439dd27846db00c6723036da6b "/run:mstsc.exe /restrictedadmin"194f34439dd27846db00c6723036da6b
Hash传递的好处就是,动静更小,不需要新建用户,留下的痕迹更少,降低攻击者被发现的概率。
如下图:
跟上面操作一样,把对方的3389端口反向代理至本地,连接之。
最后附上登录的桌面的截图,登上来就是一个backstab的报错,这刚好就解释了之前在干火绒的时候,为什么没有kill成功(因为程序兼容性问题导致崩溃了)。
总结
总结一下整个渗透过程中有趣的几个点,整个流程大概花了两天的时间,主要是有几个地方踩坑了。
- 第一点:写http隧道马的时候,用哥斯拉直接编辑新建一个隧道马,但是连接的时候报错,可能是哥斯拉出现了数据断流,导致写进去的文件缺东西了,后来直接把隧道马传上去就不报错了。
- 第二点:网上的例子大多数都用pystinger反代cs服务端来处理这种不出网上线cs的情况,但是可能因为目标网络环境的不一样导致各种玄学报错,所以Pystinger的局限性还是很大的,而且Pystinger客户端还不免杀。
- 第三点:正向shell免杀,不多说的,cs的无阶段木马都是这样,无法通过混淆加载器的方法免杀。
- 第四点:正向shell的提权,cs插件提权只能反弹一个反射型的shell,无法反弹正向shell。
- 第五点:有趣的是,无阶段木马是能生成powershell脚本的,而powershell脚本是很好混淆免杀的,但是目标是server2016,默认开启AMSI,混淆免杀在它面前形同虚设。(要是目标是2012、2008系统就可以通过powershell正向bind上线)
结尾
本还可以尝试msf的正向bind,自带混淆器,效果可能更好。
本次渗透是在获得授权的真实环境中进行的。
在利用pystinger反向代理套反向shell失败的情况下,改用正向代理中套正向shell来上线不出网主机。
最后
关注我,持续更新!私我获取【网络安全学习资料·攻略】
相关推荐
- 电工电路图中二极管、三极管的符号标识
-
1、二极管二极管是一种常用的具有一个PN结的半导体器件,它具有单向导电性,通过二极管的电流只能沿一个方向流动。二极管只有在所加的正向电压达到一定值后才能导通。在电工电路图中,二极管以专用的图形符号和电...
- 开关部件在电工电路中的符号标识
-
1、在电工电路中还常常绘制有具有专门含义的图形符号,认识这些符号对于快速和准确理解电路图十分必要。在识读电工电路的过程中,还常常会遇到各种各样的功能部件的图形符号,用于标识其所代表的物理部件,例如各种...
- 走过路过 别错过!整理最全电工电路各种元器件及辅料字母符号解析
-
走过路过别错过!整理最全电工电路各种元器件及辅料字母符号解析建议收藏备用起来以备不时之需!每天学习一点点就会有收获!...
- 熬夜吐血整理的电工电路的字母符号!及各种元器件实物图解符号!
-
熬夜吐血整理的电工电路的字母符号!及各种元器件实物图解符号!...
- 电气人士接好了!史上最全的电气符号介绍
-
有没有人像小编一样看到这样的图纸就犯晕啊?像这样的图纸对于电气人士来说应该不陌生吧,可是对于一些刚入行的,或者在电气行业却不是技术岗位的人来说,那与天书没什么区别。今天小编狠狠心,为大家搜集了一些关于...
- 新手工程师,这些电路图符号你都了解吗?
-
以下电路图符号大全,千万别弄错了噢~~更多行业信息可查阅快点PCB平台订阅号:eqpcb_cp。...
- 电工学习通(一):电路图符号知识大全(安科瑞任心怡、许玉龙)
-
电路图符号知识我们常说的电路图呢是一种以物理电学标准符号来绘制各MOS管电子元器件组成和关系的电路原理布局图,听不懂也没关系,我们只要记住以下几点就可以了:电路图符号数量众多,大致可以分为四个类别:传...
- 常用电子元器件电路符号及实物外形图,你值得拥有
-
作为一名电工初学者,认识并了解常用的电子元器件是一项必备的基本技能,这包括电子元器件的电路符号、实物、用途等。本文电工学习网小编和大家分享一些电子元器件的电路符号及实物外形图,希望对大家的学习有所帮助...
- 电工常用的符号及单位
-
常用的符号及单位①欧姆定律I=U/R(适用于电阻电路,如白炽灯)②电能计算W=P·t(W为我们常说的电度,P为功率多少瓦或千瓦,t为时间小时计量)例如一个220V,60W的白炽灯,在220V电压工...
- 电路图常用的字母符号及释义(详细版!)
-
你是不是在查看电路图时常遇到一些看不懂的字母或字符,不明白它们表示什么含义?今天小编整理了一些电路图常用的字母符号及其释义,供大家查阅,赶快收藏吧!在之前的文章,小编大致整理了绘制电路图常涉及的电路符...
- 最全电工电路的字母符号大全!电工必备知识技能!建议收藏备用
-
最全电工电路的字母符号大全!电工必备知识技能!建议收藏备用!每天学习一点点就会有收获!学海无涯!...
- 电路符号大全,赶快收藏
-
认识电路符号是绘制电路图的前提。绘制电路图需要涉及的电路符号罗列出来有很多,大致可以分为五个类别:基本电路符号、传输路径符号、开关和继电器符号、集成电路组件以及限定符号。基本电路符号绘制基础电路图可能...
- 电气电路的图形符号,不怕看不懂电路图啦
-
一、电压、电流、电池的图形符号//二、信号灯、信号器件、按钮、旋钮开关和测量仪表的图形符号//三、负载开关的图形符号//四、熔断器的图形符号//五、继电器、接触器、接触器触点和操作器件的图形符号//六...
- 图解普通电阻器电路符号的含义,初学者必看
-
电子元器件的电路符号中含有许多有用的、对电路分析有益的识图信息,掌握了电子元器件电路符号的识图,电路分析就会简单一些。电阻器电路符号图1-1所示是普通电阻器电路符号图解示意图。在电路分析中,为了表述方...
- 电路图符号大全(电容、电阻、二极管、三极官、集成电路)
-
基础知识薄弱,不懂工作原理,不会看图、识图,这里更多电路图(原理图)符号大全、电路图形符号(指用一种书画图形代表一种电子元件)(比如:电容、电阻、二极管、三极官、集成电路等等)的符号为初学...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)