一、域环境了解&基本信息搜集
下载主机镜像可以到msdn下载
https://msdn.itellyou.cn/2. 
搭建的域环境
后面还陆续搭建了一些
(一)域控的搭建
DNS指向本机IP地址 net模式。更改计算机名为DC(可选),密码123.com
然后一直下一步到添加服务器角色选择两个服务
然后一直下一步到安装(安装失败可能是因为弱密码的原因)
安装成功后,点击这个进行升级成域控控制器
到这一步设置一个密码,然后疯狂下一步
搭建成功后发现名称前面已经多了一个域了
然后自动重启修改密码登录即可
(二)域内主机的搭建
首先设置IP:192.168.41.20,DNS指向域控的IP,不然找不着域控
设置完成后去ping一下abc.com(域名)和192.168.41.10(域控),要能够ping通
(三)加入域和退出域
在域控上为 Win_Server2008R2创建用户创建域控制器账户
创建一个名叫ZhangSan的用户,密码123.com,Ser08就叫ZhangSan
然后在Win_Server2008R2上将此电脑加入到abc.com这个域中来
点击加入域后,这里需要域控的管理员账户密码验证
然后切换账户使用在域控创建的ZhangSan登录到域内,密码123.com
同样地将Win_Server2003也加入到这个域中来,
登录用户名
LiSi@abc.com,密码也为123.com
登录加入到域内的主机:
本地用户登录:机器名\用户名 ZS-PC\ZhangSan
域内用户登录:域名\用户名 abc\ZhangSan
机器用户和system区别
当我们在域内主机登录的不是域内账户时,向域控查询是被拒绝的,我们可以提权到system权限,以这台机器的名义去向域控查询。
工具incognito.exe的使用
我试了用这个工具从普通用户提权至system很难,只能从administrator变成system
使用方法:进入到工具目录,命令行输入命令查看可用令牌
然后再输入使用哪个令牌调用cmd程序
就是system权限 可以向域控查询信息了
、
Windows本地认证
用户密码明文主要两种加密方式:LM-HASH 和 NTML-HASH加密
本质上就是DES加密和MD4加密
工具QuarksPwDump.exe的使用
NTLM协议
(Challenge)挑战-响应(Response)机制
认证机制大体分为四步:
第一步:client会向server发起请求连接协商一些相关东西,比如说传输协议的版本什么的,这个协商是为了照顾低版本,更好的兼容
第二步:Server会生成一个16(V2协议)位或8位(V1协议)随机字符,即Challenge,保存在本地,并将Challenge传给Client.
第三步:当Client接收到Challenge时,用想在Server上登录的username的NTLM-hash对Challenge进行加密、和用户名、域名、机器名等相关信息,生成Response发送给Server
第四步:Server在收到Response后,将用相同的方式进行加密生成另一个Response,然后对比两个结果,如果相同,则验证成功,如果不同就失败
NTLM realy攻击
这里的NTLM realy攻击是指的Net-NTLM v2,不是NTLM哈希值。只是简称。
进行NTLM
Relay攻击有两步:第一个是中间人捕获net-NTLM哈希,第二步是中间人再重放到目标主机完成认证。
它发生在NTLM认证的第三步:就是client发送response的时候,其中带着Net-NTLM
v2哈希值。他的格式为:
username::domain:challenge:NTProofStr:blob
主要捕获方式分为三大类:
通过漏洞触发认证
钓鱼
本地触发认证
我看了有些文章结合利用很多,利用的也很深入,这里先不深入了。
因为捕获的net
NTLM不能直接发送,需要封装到应用层协议,比如SMB,LDAP,HTTP等,所以有的就是封装到什么协议就叫什么realy,比如SMB
realy攻击,就是封装成SMB协议然后发送的。
Kerberos协议
Kerberos协议认证流程
上图中,TGT:ticket granting
ticket,意思就是说你可以去访问票据授予服务器了,ST:server
ticket,就是你可以去访问服务器了
认证的详细过程:
一、跟AS通信
客户端先给AS发送身份信息
当AS认证通过后返回客户端一张TGT
提供身份信息的数据包是AS-REQ(AS-requests)。发送TGT的数据包是
AS-REP(AS-response),krbtgt是域控上面的一个专门进行身份验证的账户。
客户端对TGT进行解密,获取CT_SK的明文
用户重新封装TGT,发送给TGS
二、跟TGS通信
⑤TGS收到客户端发来的TGT后,查看servername,然后使用krbtgt的HASH进行解密,再用解密出来的CT_SK解密上面部分。再验证两部分的相关内容是否相等,相等则给客户端发送一张ST
其中server hash是客户端将要访问的那个服务器的机器账户的hash值。
三、客户端跟目标服务器的通信
- 客户端收到ST后进行CT_SK解密,然后再重新封装
- 客户端给目标系统发送ST,目标服务器先解密下面再解密上面,然后对比,相关内容一致两者就建立了信任关系。
本地工作组信息搜集
★收集ip信息ipconfig,如果有双网卡,那就能发现更多资产了
★查询操作系统和版本信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
或systeminfo| findstr /B /C:"OS 名称" /C:"OS 版本"
★查看系统体系结构echo %PROCESSOR_ARCHITECTURE%
★查看安装的软件及版本
wmic product get name,version
或powershell "Get-WmiObject -class win32_product | Select-Object
-Property name,version"
★查看本机运行的服务wmic service list brief
★查看进程tasklist
或wmic process list brief
★查看电脑开机自启程序,可以改成我们的木马
wmic startup get command,caption
★查看计划任务(如果出现无法加载列资源 输入:chcp 437)
★查看电脑开机时间net statistics workstation
★查看用户列表信息net user
或wmic useraccount get name ,SID(推荐)
★查看当前会话列表net session
★查看端口信息netstat -ano
★查看补丁信息
wmic qfe get Caption,Description,HotFixID,InstalledOn
★查询共享列表net share
或wmic share get name,path,status
★查询路由信息route print
★查看防火墙状态netsh firewall show state
★关闭防火墙
Windows server 2003: netsh firewall set opmode disable
Windows server 2003之后: netsh firewall set opmode disable
或者netsh advfirewall set allprofiles state off
★2003及之前的版本,允许指定的程序(以111.exe为例)进行全部的连接
netsh firewall add allowedprogram c:\111.exe "allownc" enable
2003之后的版本,允许指定的程序进行全部的连接
netsh advfirewall firewall add rule name="pass nc"dir=in action=allow
program="C:\111.exe"
允许指定程序退出,命令如下
netsh advfirewall firewall add rule name="Allownc" dir=out
action=allow program="C: \111.exe"
允许3389端口放行,命令如下(也可改为其他端口)
netsh advfirewall firewall add rule name="RemoteDesktop" protocol=TCP
dir=in localport=3389 action=allow
★开启或者关闭3389端口
开启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
★收集本机的wifi信息
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show
profiles') do @echo %j | findstr -i -v echo | netsh wlan show
profiles %j key=clear
★查询RDP端口
reg query
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\Winstations\RDP-Tcp" /V PortNumber
★查询当前保存的凭据cmdkey /l
★查询arp信息arp -a
★查看最近打开的文件dir %APPDATA%\Microsoft\Windows\Recent
★查询本地工作组net localgroup
★查询本地工作组de具体组在后面加上组名即可,例如
net localgroup administrators
★查看RDP凭据
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
★查看杀软等信息
wmic /node:localhost /namespace:\\root\securitycenter2 path
antivirusproduct get displayname /format:list
域内基本信息收集
★查看当前权限whoami /all
判断当前主机是不是域内用户?是什么权限?
★判断域的存在 以下命令都可以
ipconfig /all
systeminfo
net config workstation
net time /domain
如果没有加入域就是这样的
★查看域内所有计算机net view /domain:域名
★查询域内所有工作组列表
net group /domain
★查询上面这些用户组里面的具体用户
net group "工作组名" /domain
比如上面这个就是查询这个域成员计算机列表
★查询域内用户信息net user /domain,跟上面的Domain
Users组里查出来是一样的
★获取域信任列表nltest /domain_trusts
定位域控的位置
★查询域控的机器名nltest /dclist:abc
或者也可以用上面的net time /domain获取
然后ping这个机器名,因为DNS服务器跟DC一般是同一台电脑
这个IP就可能是域控的IP
或者nslookup 主机名
★这个命令就可以直接查询域控主机名和IP了
nslookup -type=SRV _ldap._tcp
★查看域控制器组,就是之前查出来的域内所有工作组里面,有这个DC用户
net group "Domain Controllers" /domain
定位域管理员
找到域管理员登录的主机,主要用这下面4款工具。体会不同工具的区别
此次实验环境
- 工具psloggedon.exe可以显示本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果指定了用户名而不是计算机,psloggedon.exe
会搜索网络邻居中的计算机,并显示该用户当前是否已登录。
用法:psloggedon.exe [-] [-l] [-x] <\\computername或username>
第一次在CS上运行的时候要加上一个参数-accepteula
因为这个工具打开是需要点击一个Agree的,由于没有远程桌面点击不了,后面就不用加这个参数了
当ZS登录域管后,在另一台域内账户主机上扫描,
总结:可见这个工具本地账号能用,而且能找到域内所有主机。要是找到的主机登录账户没有显示出来,那很可能就是域管账户
- pveFindADUser.exe
可用于查找AD用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过RDP登录的用户、用于运行服务和计划任务的用户。
pveFindADUser.exe -current
在登录的本地管理员账号的主机上无法抓取
在另一台登录的域内管理员用户的主机上面运行,抓取如下
抓取到了所有主机,并且找出了域管,但是本机登录的就是域管理员账号没有分析出来。
当我在ZS上面登录域管,找到主机但是账户没能显示出来,
总结:可用于定位域控,找到域内所有主机,要是找到的主机登录账户没有显示出来,那很可能就是域管账户
- netview.exe 是一个枚举工具,使用 WinAPI 枚举系统
-d domain:指定从中提取主机列表的域。如果没有指定,则使用当前域。
-g group:指定用户搜寻的组名。如果没有指定,则使用 Domain Admins。
在本地管理员主机上可以发现域内其他主机(好像没找到除域控外其他登录了域管账号的主机),能找到域控
在ww的主机上运行才能发现
总结:可用于定位域控和发现登录了域内账户的主机有哪些。
敏感数据定位
指定目录下搜索特定敏感文件,如C盘下搜索后缀为txt的文件
dir /a /s /b c:\"*.txt"
还有一些其他后缀的,如
.xml\.mdb\.sql\.mdf\.eml\.pst\.conf\.bak\.pwd\.pass\.login\.user
指定目录下的文件中搜集各种账号密码
findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php
*.jsp *.xml *.cgi *.bak
标红的可替换为userpwd\pwd\login\user
内网IP扫描
ICMP协议扫描
cmd命令 shell for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.41.%I
| findstr "TTL="
fping工具扫描
fping是一个小型命令行工具,用于向网络主机发送ICMP
回应请求,类似于ping,但在ping多 个主机时性能要高得多。
fping IP1 IP2 -c //扫描多个IP 10次
fping -a -g 192.168.41.0/24 //扫描C段IP
ARP协议扫描
cmd命令arp -a
arp.exe工具扫描
arp.exe -t 192.168.41.0/24
NetBIOS协议扫描
几乎所有的局域网都是在NetBIOS协议的基础上工作的,在网络中使用计算机名通讯就是使用NetBIOS协议,开启之后,局域网中的其他计算机可以发现并找到你的计算机。
nbtscan工具
nbtscan.exe 192.168.41.0/24
Fscan工具扫描
项目地址https://github.com/shadow1ng/fscan/
常见用法fscan.exe -h ip默认扫描全部,其他用法见项目地址
可以扫描出内网主机和主机名,以及开放的端口
还可以自动探测存在哪些漏洞可以利用
Kscan工具扫描
项目地址https://github.com/lcvvvv/kscan
常用命令kscan.exe -t ip
kscan.exe –spy
内网端口扫描
ScanLine工具扫描
轻量级工具,扫描速度快
常见用法scanline.exe -bhpt 21-23,80,139-139,143,443,445,3389,3306 IP
scanline.exe -bhpt 80,443 192.168.41.0-254(后一个IP写完整也可以)
Telnet协议端口扫描
Telnet协议是TCP/IP协议族的一员,是Internet远程登录服务的标准协议和主要方式。在目标计算机上使用Telnet协议,可以与目标服务器建立连接。如果只是想快速探测某台主机的某个常规高危端口是否开放,使用
telnet命令是最方便。
但是我的虚拟机这个服务好像都是默认关闭的,这就需要目标机器是开启这个服务了。
telnet + IP+端口
如果目标机器开启了这个端口,在命令窗口就会瞬间清屏状态,就只剩光标在闪动,在CS上面我试了没反应
如果目标没开启这个端口就会请求超时,连接失败
Kscan、Fscan、CS插件
IP和端口都是可以一次多个扫描的
kscan.exe -t IP -p 端口
fscan.exe -h IP -p 端口
域环境初步了解工具
链接:https://pan.baidu.com/s/1HOFnFEz-UU1yYC5eRrlZ8g?pwd=woli
提取码:woli
内网基本信息搜集
链接:https://pan.baidu.com/s/1I-39N8BdMIEVHZ-P-3JQGg?pwd=woli
提取码:woli