无论是通过外网打点,还是水坑钓鱼,进入内网后的第一步,也是最重要的一步就是信息收集,而且信息收集往往是一直穿插在整个内网渗透 过程中。
工作组和域的区分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
1 .ipconfig /all有Primary Dns Suffix(主 DNS 后缀)就说明是域内,空的则当前机器应该在工作组。 2 .net config workstation =工作组特征= ------------------------------------------------ 软件版本 Windows 10 Home China 工作站域 WORKGROUP 登录域 MicrosoftAccount ------------------------------------------------ =域特征= ------------------------------------------------ 工作站域 HACK7 工作站域 DNS 名称 hack7.local 登录域 HACK7 ------------------------------------------------ 3 .systeminfo这里注意字体大小写,工作组一般都是全大写,但是遇到的也有小写的情况,暂时不明白怎么设置的 =工作组特征= ------------------------------------------------ 域: WORKGROUP ------------------------------------------------ =域特征= ------------------------------------------------ 域: hack7.local ------------------------------------------------ 4 .net time /domain=工作组特征= ------------------------------------------------ 找不到域 WORKGROUP 的域控制器。 请键入 NET HELPMSG 3913 以获得更多的帮助。 ------------------------------------------------ =域特征=[需要域用户才能成功查询] ------------------------------------------------ \\DC.hack7.local的当前时间是2020 /7 /12 13 :21 :32 ------------------------------------------------
工作组内信息收集
工作组采取的一般都是常规渗透方法,因为工作组一般都是个人和少数服务器。
1 2 3 4 5 6 7 8 9
通常使用的方法有: 扫描网段中的web服务,常用的有phpstudy,wampserver等,来寻找搭建的服务漏洞 扫描开放端口信息,以及对应的服务,判断是否存在漏洞。 扫描主机由于没有更新到最新版本导致的系统漏洞,比如MS17-010,补丁号为KB4013389 hash抓取,hash注入,hash碰撞,口令爆破,IPC登陆,WMI,未授权访问,文件共享系统。 ARP嗅探/欺骗攻击(Cain和Ettercap) DNS劫持,会话劫持。 社会工程学 ...
本机信息收集
用户系统信息收集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
1 .查看当前用户权限whoami /all 2 .查看系统信息systeminfo systeminfo /S 192.168 .1.101 /U testlab\test /P "test" 查看远程机器的系统配置 3 .查当前机器的机器名,知道当前机器是干什么的hostname 4 .查看在线用户,注意管理员此时在不在quser query user qwinsta 5 .查当前机器中所有的用户名,开始搜集准备用户名字典net user 6 .查当前机器中所有的组名,了解不同组的职能,如:IT,HR,admin,filenet localgroup 7 .查指定组中的成员列表net localgroup "Administrators" 8 .查询本机所有的盘符wmic logicaldisk get description,name,size,freespace /value fsutil fsinfo drives需要管理员权限 fsutil fsinfo volumeinfo C:|findstr "卷名" 查看卷名称,需要管理员权限 9 .防火墙相关netsh firewall show state查看防火墙状态 netsh firewall show config查看防火墙配置 设置防火墙日志存储位置: netsh advfirewall set currentprofile logging filename "C:\Windows\temp\FirewallLOG.log" 关闭防火墙: netsh firewall get opmode disable (WIN2003之前) netsh advfirewall set allprofiles state off (WIN2003之后) 允许某个程序的全连接: netsh firewall add allowdprogram C:\nc.exe "allow nc" enable (WIN2003之前) 允许某个程序连入: netsh advfirewall firewall add rule name="pass nc" dir =in action=allow program="C:\nc.exe" 允许某个程序外连: netsh advfirewall firewall add rule name="pass nc" dir =in action=allow program="C:\nc.exe" 10 .其他set 查看当前机器的环境变量配置,看有没有我们可以直接利用到的语言环境ver 查看当前机器的NT内核版本,不弹窗 winver 查看当前机器的NT内核版本,弹窗,在非图形界面不执行这个命令 net share 查看当前机器开启的共享 driverquery 查看当前机器安装的驱动列表 net share public_dir="c:\public" /grant:Everyone,Full 设置共享 dir /a-r -d /s /b找当前用户可读写目录,回显可能会很多
网络连接信息收集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 .查看tcp/udp网络连接状态信息netstat -ano 查看本机所有的tcp,udp端口连接及其对应的pid netstat -anob 查看本机所有的tcp,udp端口连接,pid及其对应的发起程序 netstat -ano | findstr "ESTABLISHED" 查看当前正处于连接状态的端口及ip netstat -ano | findstr "LISTENING" 查看当前正处于监听状态的端口及ip netstat -ano | findstr "TIME_WAIT" 查看当前正处于等待状态的端口及ip 2 .查看网络配置ipconfig /all 3 .查看本地DNS缓存ipconfig /displaydns 4 .查看路由表route print 5 .查找有价值的内网arp通信记录arp -a 6 .跟踪本机出口iptracert 8.8 .8.8
软件进程信息收集
1 2 3 4 5 6 7 8 9 10 11
1 .查看杀毒软件wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState,pathToSignedProductExe 2 .查看本机安装程序wmic product get name /value wmic product get name,version 3 .查看当前机器的进程信息tasklist /svc 显示当前机器所有的进程所对应的服务 [只限于当前用户有权限看到的进程] tasklist /m 显示本地所有进程所调用的dll [同样只限于当前用户有权限看到的进程] tasklist /v 寻找进程中有无域管启用的进程,或者杀软进程 tasklist /S 192.168 .1.1 /U testlab\test /P "test" 查看远程主机进程列表 taskkill /im iexplore.exe /f 用指定进程名的方式强行结束指定进程
历史凭证信息收集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
引用自:https://github.com/klionsec/RedTeamer 批量抓取当前机器上的 "各类基础服务配置文件中保存的各种账号密码" 比如,各种数据库连接配置文件,各类服务自身的配置文件(redis,http basic...)... 想办法 "控制目标 运维管理 / 技术人员 的单机,从这些机器上去搜集可能保存着各类敏感网络资产的账号密码表" 比如, *.ls,*.doc,*.docx, *.txt.... 抓取各类 "数据库客户端工具中保存各种数据库连接账号密码 比如,Navicat,SSMS[MSSQL自带客户端管理工具,里面也可能保存的有密码(加密后的base64)] 抓取当前系统 " 注册表中保存的各类账号密码hash" [ Windows ] 抓取当前系统所有 " 本地用户的明文密码/hash" [ Windows & linux ] 抓取当前系统的所有 " 用户token" [ Windows ] 抓取 " windows凭据管理器中保存的各类连接账号密码" 抓取 " MSTSC 客户端中保存的所有rdp连接账号密码" 抓取各类 " VNC客户端工具中保存的连接密码" 抓取 " GPP目录下保存的各类账号密码" [ 包括组策略目录中XML里保存的密码hash 和 NETLOGON目录下的某些脚本中保存的账号密码 ] 抓取各类 " SSH客户端工具中保存的各种linux系统连接账号密码", SecureCRT,Xshell,WinSCP,putty 抓取各类 " 浏览器中保存的各种web登录密码和cookie信息",Chrome [360浏览器],Firefox,IE,QQ浏览器 抓取各类 " 数据库表中保存的各类账号密码hash" 抓取各类 " FTP客户端工具中保存的各种ftp登录账号密码", filezila, xftp... 抓取各类 " 邮件客户端工具中保存的各种邮箱账号密码", forxmail, thunderbird... 抓取各类 " SVN客户端工具中保存的所有连接账号密码及项目地址" 抓取各类 " VPN客户端工具中保存的各种vpn链接账号密码"
用户敏感文件收集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
1 .查看本机hosts文件type c:\Windows\system32\drivers\etc\hosts2 .指定目录下搜集各类敏感文件dir /a /s /b d:\"*.txt" dir /a /s /b d:\"*.xml" dir /a /s /b d:\"*.mdb" dir /a /s /b d:\"*.sql" dir /a /s /b d:\"*.mdf" dir /a /s /b d:\"*.eml" dir /a /s /b d:\"*.pst" dir /a /s /b d:\"*conf*" dir /a /s /b d:\"*bak*" dir /a /s /b d:\"*pwd*" dir /a /s /b d:\"*pass*" dir /a /s /b d:\"*login*" dir /a /s /b d:\"*user*" 3 .指定目录下的文件中搜集各种账号密码findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak 4 .查看,删除 指定文件type c:\windows\temp\admin_pass.bak 查看某个文件内容del d:\ad\*.* /a /s /q /f 强制删除指定路径下的所有文件tree /F /A D:\ >> file_list.txt 导出指定路径下的文件目录结构 rd /q/s c:\windows\temp\test 删除文件夹
存活主机探测
基于icmp
1
for /L %I in (0 ,1 ,254 ) DO @ping -w 1 -n 1 192.168 .7 .%I | findstr "TTL=" >> pinglive.txt
不确定情况下,常见内网ip探测(来源:https://mp.weixin.qq.com/s/AUgBlRjH_USaZXgmMDYzSg )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
@echo off rem 内网存活段自动发现脚本 [Windows ] rem By Klion rem 2020.7 .1 setlocal enabledelayedexpansion for /l %%i in (0 ,1 ,255 ) do ( for /l %%k in (0 ,1 ,255 ) do ( ping -w 1 -n 1 10 .%% i.%%k.1 | findstr "TTL=" >nul || ping -w 1 -n 1 10 .%%i.%%k.254 | findstr "TTL=" >nul if !errorlevel! equ 0 (echo 10 .%%i.%%k.0 /24 is alive ! >> alive.txt ) else (echo 10 .%%i.%%k.0 /24 May be sleeping ! ) ) ) for /l %%s in (16 ,1 ,31 ) do ( for /l %%d in (0 ,1 ,255 ) do ( ping -n 1 -w 1 172 .%%s.%%d.1 | findstr "TTL=" >nul || ping -w 1 -n 1 172 .%%s.%%d.254 | findstr "TTL=" >nul if !errorlevel! equ 0 (echo 172 .%%s.%%d.0 /24 is alive ! >> alive.txt ) else (echo 172 .%%s.%%d.0 /24 May be sleeping ! ) ) ) for /l %%t in (0 ,1 ,255 ) do ( ping -n 1 -w 1 192.168 .%%t.1 | findstr "TTL=" >nul || ping -n 1 -w 1 192.168 .%%t.254 | findstr "TTL=" >nul if !errorlevel! equ 0 (echo 192.168 .%%t.0 /24 is alive ! >> alive.txt ) else (echo 192.168 .%%t.0 /24 May be sleeping ! ) )
扫描的话建议直接在内网进行扫描,速度和准确率都比较有保障,做扫描之前尽量确定下内网是否有流量监控设备,或者把动静做到最小,管理员发现后很可能会直接断网或采取其他措施丢失当前主机权限。
1 2
常用的工具[最多10 秒一个c 段]:nbtscan[基于smb 和netbios 的内网主机发现方式]、Ladon、fscan、自开发工具... socks代理扫描:goby、railgun
端口信息探测
Ladon8.2更新功能
相关分析:基于NTLM探测Windows版本信息(https://mp.weixin.qq.com/s/yBFGrb9D8nmO0KLGjYds8g )
1 2 3 4 5 6
[+] WmiInfo (135) [+] SmbInfo (445) [+] WinrmInfo (5985/80/8080/443) [+] MssqlInfo(1433) [+] ExchangeInfo(443) [+] RdpInfo(3389)
域内信息收集
下文仅限于域内的信息收集,均不会涉及域内认证原理等概念,后面会对windows认证方式单独写一篇总结。
net组件搜集域内信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
net user /domain查看当前域中的所有用户名,根据用户名总数大概判断域的规模 net user xingzheng /domain 查看指定用户在当前域中的详细属性信息 net accounts /domain查看当前域的域内账户密码设置策略,密码长短,错误锁定等信息 net config workstation查看当前的登录域 net view 查看当前域中在线的机器,不太直观,批处理把机器名对应的ip也显示出来 ---- host2ip.bat:先获取机器名保存为computers.txt,然后运行下面的脚本得到pic.csv @echo off cls echo Useage: %0 computers.txtfor /f %%a in (%1 ) do ( echo ping %%a -4 -n 1 |find /i "ping" >> log.txt ping %%a -4 -n 1 |find /i "ping" > %%a.txt for /f "tokens=2 delims=[]" %%b in (%%a.txt) do ( @echo %%a,%%b >> pic.csv del /f /q %%a.txt ) ) echo end >> end.txt---- WIN10下使用Net view会出现如下报错 System error 1231 System error 6118 解决:https://social.technet.microsoft.com/Forums/en-US /6 f102ed1-8e76 -4cb7 -8dec -05714466d441 /net-view -system -error -1231 ?forum=win10itpronetworking ---- net view /domain查看内网种所有的域数量和名称 net view /domain:domain_name查看指定域中在线的计算机列表 net time /domain查看时间服务器,一般域控会做时间服务器 net group /domain查看当前域中的所有组名 net group "domain admins" /domain查看当前域中的域管账户 net group "enterprise admins" /domain查看当前域中企业管理员组用户 net group "domain computers" /domain查看当前域中的所有的计算机名(登录过该域的计算机) net group "domain controllers" /domain查看域控制器主机名 net group "exchange servers" /domain查看域内是否存在Exchange
其他补充
1 2 3 4 5 6 7 8
wmic useraccount get Caption,sid获取域内所有用户sid nltest /domain_trusts查看域内信任关系 nltest /domain_trusts /all_trusts /v /server:<域控ip> 查询指定server的信任域 nltest /dsgetdc:<域名> /server:<域控ip> 查询域详细信息 nltest /dclist:<域名>列出域控制器 nslookup -q =mx hack7.local查看域内邮件服务器 nslookup -q =ns hack7.local查看域内DNS服务器 netdom query pdc查看域内的主域控,仅限win2008及之后的系统
dsquery导出域信息
利用dsquery 工具搜集域内信息,域成员机器需要自己传上去
1 2 3 4 5 6 7
dsquery computer查看当前域内的所有机器,dsquery工具一般在域控上才有,不过你可以上传一个dsquery dsquery user查看当前域中的所有账户名 dsquery group 查看当前域内的所有组名 dsquery subnet查看到当前域所在的网段,结合nbtscan使用 dsquery site查看域内所有的web站点 dsquery server查看当前域中的服务器(一般结果只有域控的主机名) dsquery user domainroot -name admin* -limit 240 查询前240 个以admin开头的用户名
csvde导出域信息
1 2 3 4
如果你有一个当前有效的域用户账户及密码 csvde.exe -f c:\windows\temp\e.csv -n -s 192.168 .1.100 (DC的IP) -b <域用户名> <域名> <域用户密码> 如果你可以使用域成员主机的system权限或者当前就在DC上 csvde.exe -f c:\windows\temp\e.csv -n -s 192.168 .1.100 (DC的IP)
导出域内dns记录
sharpadidnsdump
普通域用户即可
https://github.com/b4rtik/SharpAdidnsdump
域渗透——普通用户权限获得DNS记录 (3gstudent.github.io)
dnscmd
域管权限,域控自带
域渗透——DNS记录的获取 (3gstudent.github.io)
AdFind
C++实现(未开源),用于查询域内信息
http://www.joeware.net/freetools/tools/adfind/index.htm
常用命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 .列出域控制器名称AdFind -sc dclist 2 .查询当前域中在线的计算机AdFind -sc computers_active 3 .查询当前域中在线的计算机(只显示名称和操作系统)AdFind -sc computers_active name operatingSystem 4 .查询当前域中所有计算机AdFind -f "objectcategory=computer" 5 .查询当前域中所有计算机(只显示名称和操作系统)AdFind -f "objectcategory=computer" name operatingSystem 6 .查询域内所有用户AdFind -users name 7 .查询所有GPOAdFind -sc gpodmp
Bloodhound/Sharphound
BloodHound以用图与线的形式,将域内用户、计算机、组、Sessions、ACLs以及域内所有相关用户、组、计算机、登陆信息、访问控制策略之间的关系更直观的展现在Red Team面前进行更便捷的分析域内情况,更快速的在域内提升自己的权限。它也可以使Blue Team成员对己方网络系统进行更好的安全检测及保证域的安全性。 这里直接介绍需要在内网机器中执行的相关命令: 此工具的导出相对来说比较暴力,且目前此工具 exe 原版已经被识别并被各种杀软查杀,包括微软win10自带的杀软 Windows Defender 。
详细参考: https://www.anquanke.com/post/id/214046
SPN扫描
不同于常规的tcp/udp端口扫描,由于spn本质就是正常的Kerberos请求,所以扫描是非常隐蔽,日前针对此类扫描的检测暂时也比较少。大部分win系统默认已自带spn探测工具即:setspn.exe,此操作无需管理权限,需域内机器执行。
1
setspn -T target.com -Q */*可完整查出当前域内所有spn
详细介绍:域安全-SPN扫描
ldapsearch
详细介绍:渗透基础——活动目录信息的获取
定位域控
查询dns解析记录
若当前主机的dns为域内dns,可通过查询dns解析记录定位域控。
1 2 3 4 5 6 7 8 9 10 11 12 13
C:\Users\xingzheng>nslookup -type =all _ldap._tcp.dc._msdcs.hack7.local DNS request timed out. timeout was 2 seconds. 服务器: UnKnown Address: 192.168 .86.109 _ldap._tcp.dc._msdcs.hack7.local SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dc.hack7.local dc.hack7.local internet address = 192.168 .86.109
SPN扫描
在SPN扫描结果中可以通过如下内容,来进行域控的定位。
1
CN=DC,OU=Domain Controllers,DC=hack7,DC=loca
net group
1 2 3 4 5 6 7 8 9 10 11
C:\Users\xingzheng>net group "domain controllers" /domain 这项请求将在域 hack7.local 的域控制器处理。 组名 Domain Controllers 注释 域中所有域控制器 成员 ------------------------------------------------------------------------------- DC$ 命令成功完成。
端口识别
扫描内网中同时开放389和53端口的机器。
1 2 3 4 5 6 7 8
端口:389 服务:LDAP、ILS 说明:轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口。 端口:53 服务:Domain Name Server(DNS) 说明:53 端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。通过DNS服务器可以实现域名与IP地址之间的转换,只要记住域名就可以快速访问网站。 端口:88 服务:Kerberros安全认证系统
- source:se7ensec.cn
评论