frp内网穿透
在长沙农大一次线下赛时,只给到了一台机器的ip;其他机器都是在内网之中,外网访问不到,需要通过给的一台机器来内网穿透到其他内网机器;当时打比赛也想到了这一点。可惜的是,我刚准备上传frp工具时,才发现我只下载了windows版本;当时疏忽大意,没有准备frp的linux版本;(当然内网穿透的工具还有很多);现在想想还挺可惜的;趁着寒假没事做,重新复现一下frp如何内网穿透;
实验环境:
windows11;kali;docker;
实验内容:
在kali上使用docker开启两个容器,一个容器A通过端口转发使得window可以通过kali的ip加转发的端口访问,另一个容器B不做任何转发,
实验目的:
使得windows通过容器A使用frp工具内网穿透到可以访问容器B;
我比较懒,两个容器用的是同一个镜像;frp_one
则是容器A的作用,实现端口转发;frp_two
则是容器B的作用;
通过kali的ip加转发的端口访问,内容就是一句话木马(还是之前实验室内部考核赛的镜像),容器内容无所谓的,只要方便连蚁剑就行;
直接用蚁剑连接
当不知道内网其他机器的ip时,可以先通过自己手动内网搜集,来确定其他ip地址,比如/proc/net/arp
(当与其他机器通信时,arp协议会记录对方的ip和mac地址);
1 | www-data:/var/www/html) $ cat /proc/net/arp |
当然也可以借用fscan
等工具;利用蚁剑上传;
1 | ./fscan_amd64 -h 172.17.0.1/24 |
1 | 172.17.0.2:80 open |
通过以上介绍的两种方法可以确定内网中还存在一个ip172.17.0.3
并且这个ip开放着80
端口;
我们尝试通过frp工具来内网穿透,以致于可以访问172.17.0.3:80
;
上传frp成功后;修改frpc.ini
配置如下;server_addr
根据情况而定,我这里是因为我的攻击机windows的地址是192.168.0.55
;因为当时比赛不可以联网,只能将宿主机,也就是windows当作代理服务器,如果可以联网,将自己的vps当作代理服务器即可
1 | [common] |
修改成功后,给frpc
加可执行权限
1 | chmod +x ./frpc |
并执行
1 | ./frpc -c frpc.ini |
然后再攻击机windows上执行
1 | frps -c frps.ini |
可以看到success
,代表成功了。让我们用浏览器访问一下;
当然浏览器还不可以直接访问,需要借助代理插件,firefox最常用的莫非就是FoxyProxy
了,当然chrome浏览器也有对应的插件;
配置大概如下
接着浏览器输入,即可访问成功了,(我这里两个容器用的是一个镜像,内容是一样的);
1 | http://172.17.0.3/ |
到这里利用frp实现内网穿透的实验基本就做完了,当然,在实战中,情况是千变万化的;面对不同的情况需要做出相应的改变;
可以看到,内网穿透的实现基本是借用工具完成的;并没有让我们敲很多代码啥的;
这里接着介绍一款工具:proxifier
具体功能:允许用户无需对每个应用程序进行单独的配置,就能通过代理服务器或防火墙进行网络连接,因而受到广泛欢迎。
在一些情况下,我们可能需要借助python
的脚本从而实现攻击;这种情况简直太常见了,我们怎么使python通过代理可以访问内网穿透的靶机了,这就需要借助proxifier
工具
这样设置,所有应用都会走我们设置的代理,如果你希望一些应用不走代理,只需要对应设置一下代理规则即可,
1 | import requests |
开启proxifier
;即使我的Chrome没有开启frp代理,依然可以访问;
注意:proxifier最好使用Standard版本;不要使用Portable版本;可能会有问题(一开始我用Portable版本,即使代理规则和代理服务器没有错误,python和其他应用程序始终访问不了172.17.0.3
,直到换成Standard版本);
到这里,frp+proxifier
内网穿透的笔记已经记录完成,但是需要注意的是,我这个实验比较简单,在实战中,往往没有这么简单,需要冷静分析,从而到达效果。