Skip to content

Latest commit

 

History

History
1364 lines (1053 loc) · 65.6 KB

信息收集.md

File metadata and controls

1364 lines (1053 loc) · 65.6 KB

信息收集

注 : 笔记中拓扑图 xmind 源文件在其图片目录下


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


大纲


相关文章


漏洞信息

相关文章

DAST

动态应用测试

动态应用程序安全测试(Dynamic Application Security Testing)技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该 Web 应用是否易受攻击。

web漏扫

漏洞扫描器就是扫描漏洞的工具,它能够及早暴露网络上潜在的威胁,有助于加强系统的安全性。漏洞扫描除了能扫描端口,还能够发现系统存活情况,以及哪些服务在运行。

漏洞扫描器本质上是一类自动检测本地或远程主机安全弱点的程序,能够快速的准确的发现扫描目标存在的漏洞,例如,SQL 注入,XSS 攻击,CSRF 攻击等,并提供给使用者扫描结果,提前探知到漏洞,预先修复。

在渗透过程中,一个好的漏扫工具在渗透测试中是至关重要的,可以说是渗透成功或者失败的关键点。一款优秀的扫描器会使渗透更加轻松,但不是扫描漏洞都能用漏扫扫出来的,比如:逻辑漏洞、一些较隐蔽的 XSS 和 SQL 注入。所以,渗透的时候,漏扫都是需要人员来配合使用的。

漏扫靶机


主动漏扫

相关工具


被动漏扫

相关文章

相关工具

  • chaitin/xray - 长亭的洞鉴漏扫社区版
  • w-digital-scanner/w13scan - 一款插件化基于流量分析的扫描器,通过编写插件它会从访问流量中自动扫描,基于 Python3。
    python3 w13scan.py -s 127.0.0.1:7777 --html # 端口可省略,默认为7778,开启--html即实时生成html报告

综合漏扫

相关工具


IAST

交互式应用测试

交互式应用程序安全测试(Interactive Application Security Testing)是2012年 Gartner 公司提出的一种新的应用程序安全测试方案,通过代理、VPN 或者在服务端部署 Agent 程序,收集、监控 Web 应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。IAST 相当于是 DAST 和 SAST 结合的一种互相关联运行时安全检测技术。

相关文章

相关工具


SAST

静态应用测试

静态应用程序安全测试(Static Application Security Testing)技术通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。

相关资源

相关工具

更多 SAST 工具请参考 语言安全


空间测绘


网络-主机

相关文章

TTL 来判断目的主机的操作系统类型

下面是默认操作系统的 TTL:

1、WINDOWS NT/2000   TTL:128
2、WINDOWS 95/98     TTL:32
3、UNIX              TTL:255
4、LINUX             TTL:64
5、WIN7              TTL:64

修改本机电脑上面的默认 TTL 值

通过修改本机上的 TTL 值可以混淆攻击者的判断 (当然, 很少有用户会这么做).TTL 值在注册表的位置是: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有个 DefaultTTL 的 DWORD 值, 其数据就是默认的 TTL 值了, 我们可以修改 DefaultTTL 里面的 TTL 默认值, 但不能大于十进制的 255.

资产扫描工具

  • JE2Se/AssetScan - 资产探测工具,检测存活,检测风险端口,常规端口,全端口探测等等,对探测的端口的脆弱面进行安全分析进行 - 调用 masscan 端口扫 + 简易漏扫 + 报表生成
  • LangziFun/LangNetworkTopology3 - IP/IP 段资产扫描 --> 扫描开放端口识别运行服务部署网站 --> 自动化整理扫描结果 --> 输出可视化报表 + 整理结果 - 本质还是调用 masscan + 生成报表 实际使用效果不佳
  • Router Scan - 路由器扫描软件, 但扫 C 段也很有用
  • dilap54/RouterScan-console - Router Scan 命令行版
  • TophantTechnology/ARL - ARL 资产侦察灯塔系统旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。 协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面。
  • er10yi/MagiCude - 分布式端口(漏洞)扫描、资产安全管理、实时威胁监控与通知、高效漏洞闭环、漏洞 wiki、邮件报告通知、poc 框架
  • shadow1ng/fscan - 支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写私钥、计划任务反弹shell、读取win网卡信息、web漏洞扫描等。

IP扫描

当设备连接网络,设备将被分配一个 IP 地址,用作标识。通过 IP 地址,设备间可以互相通讯,如果没有 IP 地址,我们将无法知道哪个设备是发送方,无法知道哪个是接收方。IP 地址有两个主要功能:标识设备或网络和寻址。

常见的 IP 位址分为 IPv4 与 IPv6 两大类,IP 地址由一串数字组成。IPv4 由十进制数字组成,并以点分隔,如:172.16.254.1 ;IPv6 由十六进制数字组成,以冒号分割,如:2001:db8:0:1234:0:567:8:1

CIDR处理

ip信息查询

ipv4

IPv4 地址是类似 A.B.C.D 的格式, 它是 32 位, 用 . 分成四段, 用 10 进制表示; 而 IPv6 地址类似 X:X:X:X:X:X:X:X 的格式, 它是 128 位的, 用 : 分成 8 段, 用 16 进制表示;

  • LOL

    # windows
    for /l %i in (1,1,255) do @ ping 192.168.1.%i -w 1 -n 1 | find /i "ttl="
    
    # windows
    # 把前期在外网搜集到的目标子域列表整理好,拿到内网循环ping,然后把解析到的ip截下来
    for /f "delims=" %i in (host.txt) do @ping -w 1 -n 1 %i | findstr /c:"[10." /c:"[192." /c:"[172." >> C:/users/public/out.txt
  • 探测工具

    • alexxy/netdiscover: netdiscover - 内网中实测效果不好,不建议使用
    • nbtscan - NETBIOS nameserver scanner - 内网中实测效果不好
    • nmap
      nmap -sP <网段>/24
      
    • shmilylty/netspy - netspy是一款快速探测内网可达网段工具
      netspy -h                   # 查看帮助信息
      netspy icmpspy              # 使用icmpspy模块进行探测
      netspy arpspy -i eth0       # 指定使用eth0网络接口进行arp协议探测
      netspy tcpspy -p 22 -p 3389 # 使用tcpspy模块进行探测
      netspy udpspy -p 53 -p 137  # 使用udpspy模块进行探测

ipv6

从 IPv4 到 IPv6 最显著的变化就是网络地址的长度,有 128 位长;


MAC扫描

MAC 位址,以太网地址或物理地址,它是一个用来确认网络设备位置的位址。

MAC 地址的长度为 48 位 (6 个字节),通常表示为 12 个 16 进制数,如:00-16-EA-AE-3C-40 就是一个 MAC 地址,其中前 6 位 16 进制数 00-16-EA 代表网络硬件制造商的编号,它由 IEEE(电气与电子工程师协会) 分配,而后 6 位 16 进制数 AE-3C-40 代表该制造商所制造的某个网络产品 (如网卡) 的系列号。只要不更改自己的 MAC 地址,MAC 地址在世界是惟一的。形象地说,MAC 地址就如同身份证上的身份证号码,具有唯一性.

探测工具


端口扫描

通过对目标地址的 TCP/UDP 端口扫描,确定其开放的服务数量和类型。通过端口扫描,可以基本确定一个系统的基本信息,并且结合测试人员的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据.

相关文章

Tips

  1. 有时候扫描主机会碰到显示大量开放端口, 这种可能都是虚的, 是 waf 在起作用.
  2. nmap 在有些场景下不一定能把所有开放端口扫出, 这时候换一个工具说不定有奇效.

LOL

# Linux scanning the 65535 ports
for port in {1..65535};do curl -s http://host:$port;done
for port in {1..65535};do wget -nv http://host:$port;done

# Linux scanning the 65535 ports with raw http request
for port in {1..65535}; do
    echo >/dev/tcp/host/$port &&
        echo "port $port is open" ||
        echo "port $port is closed"
done

# Linux scanning ports
curl http://host:[1-100] 1> 1.txt 2>/dev/null
curl http://host:[8000-9999] 1>> 1.txt 2>/dev/null

端口安全

  • 端口安全 - 记录一些端口渗透时的方法和思路

端口信息

服务器端口的分类

  • 公认端口/特权端口 : 0~1023,它们绑定特定的服务,端口的通信明确表明了某种服务的协议。例如:80端口是HTTP服务端口。
  • 注册端口 : 1024~49151,它们松散地绑定一些服务,就是说有许多服务绑定于这些端口,这些端口同样用于许多其它的目的
  • 动态/私有端口 : 49152~65535,这些端口一般不分配服务,有些较为特殊的程序,特别是木马程序非常喜欢使用这些端口,容易隐蔽。

当然,现实环境中什么端口都有可能承载正常的服务,就比如有人在 8 端口上承载网站

扫描工具

  • nmap
  • masscan
    # 常用
    masscan 127.0.0.0/24 -p80,161,443,873,2181,3389,6379,7001,8000,8009,8080,9000,9009,9090,9200,9300,10000,50070 > results.txt
    
    # 远程登录
    masscan 127.0.0.0/24 -p22,23,3389,5632,5800,5900,5901 > results.txt
    
    # 文件服务
    masscan 127.0.0.0/24 -p20,21,445,873,2049 > results.txt
    
    # 数据库
    masscan 127.0.0.0/24 -p1433,1521,3306,4100,5000,5432,5984,6379,11211,27017,27018 > results.txt
    
    # 单端口扫描
    masscan 127.0.0.0/24 -p443
    
    # 多端口扫描 扫描 80 或 443 端口的 B 类子网
    masscan 127.0.0.0/24 -p80,443
    
    # 扫描一系列端口 扫描 22 到 25 端口的 B 类子网
    masscan 127.0.0.0/24 -p22-25
    
    # 快速扫描
    masscan 127.0.0.0/24 -p80,8000-9000 --rate 100000
    
    # 排除目标
    masscan 127.0.0.0/24 -p80,8000-9000 --excludefile exclude.txt
    
    # 结果保存
    masscan 127.0.0.0/24 -p80,8000-9000 > results.txt
  • msf
    set scanner/portscan/tcp
    set rhosts <ip/CIDR>
    set ports <port>
    set THREADS <s>
    set TIMEOUT <s>
    run
  • gnebbia/halive - 快速对 URL 探活,可以配合端口扫描工具批量检测.
  • hdm/nextnet - 通过扫描 137 端口获得目标路由信息用于扩大网络拓扑的探测
  • hellogoldsnakeman/masnmapscan-V1.0 - 一款端口扫描器。整合了 masscan 和 nmap 两款扫描器. - 实际使用效果一般
  • RustScan/RustScan -rust 写的用于代替 nmap 的端口扫描器
    • 不是很推荐
  • projectdiscovery/naabu - A fast port scanner written in go with a focus on reliability and simplicity. Designed to be used in combination with other tools for attack surface discovery in bug bounties and pentests
    • naabu 是非常好用的扫描器,只不过需要调整使用的参数,默认使用效果并不很好,个人建议是,rate 4000,retries 3,运行多次来扫描不同端口,这样结果又快又准
  • L-codes/MX1014 - 灵活、轻便和快速端口扫描器
  • redtoolskobe/scaninfo
  • zyylhn/zscan

第三方


主机信息


域信息

相关文章

域信息收集相关工具/脚本

  • PowerSploit
  • BloodHound - 域环境分析工具
  • impacket - 一个网络协议工具包
    git clone https://github.com/CoreSecurity/impacket.git
    cd impacket/
    python setup.py install
    cd impacket/examples
    • Ping.py

      一个简单的 ICMP ping 脚本,使用 ICMP echo 和 echo-reply 数据包检查主机状态。

      ./ping.py [Source IP] [Destination IP]
      
    • Lookupsid.py

      通过 [MS-LSAT] MSRPC 接口的 Windows SID bruteforcer 示例,旨在查找远程用户/组。

      ./lookupsid.py test/Administrator:Abcd1234@192.168.1.100
      
    • Rpcdump.py

      该脚本将转储在目标上注册的 RPC 端点和字符串 bindings 列表。它也会尝试将它们与一些知名的端点进行匹配。

      ./rpcdump.py test/Administrator:Abcd1234@192.168.1.100
      
    • Samrdump.py

      与 MSRPC 套件中的安全帐户管理器远程接口通信的应用程序。它将为我们列出目标系统上的用户帐户,可用资源共享以及通过此服务导出的其他敏感信息

      ./samrdump.py test/Administrator:Abcd1234@192.168.1.100
      
    • Wmiquery.py

      它允许发出 WQL 查询并获取目标系统 WMI 对象的描述信息。

      ./wmiquery.py test/Administrator:Abcd1234@192.168.1.100
      
    • getArch.py

      该脚本将连接目标(或目标列表上的)计算机,并使用已记录的 MSRPC 特征收集由(ab)安装的操作系统架构类型。

      ./getArch.py -target 192.168.1.100
      

域环境

查询所有域主机名

dsquery computer

查看所有域

net view /domain

查看域中的用户名

net user /domain
dsquery user

获取域内用户详细信息

wmic useraccount get /all

查询域内所有用户组列表

net group /domain

查看域密码信息

net accounts /domain

获取域信任信息

nltest /domian_trusts

查询域联系人

dsquery contact

查询域中所有的组

dsquery group

查询域中所有的组织单元

dsquery ou

查询域中所有的站点

dsquery site

查询指定域主机名

dsquery computer -name win* -desc desktop -limit 0

查询 n 周未活动的域主机名

dsquery computer -inactive n -limit 0

查询 n 天内未更改密码的域主机名

dsquery computer -stalepwd n

查询指定域的域主机名

dsquery computer -s ip -u username -p password -limit 0

查询域中的配额规范

dsquery quota

查询域中的分区对象

dsquery partition

查看域时间

net time /domain
SPN扫描

SPN 是服务在使用 Kerberos 身份验证的网络上的唯一标识符。 它由服务类、主机名和端口组成。 在使用 Kerberos 身份验证的网络中,必须在内置计算机帐户(如 NetworkService 或 LocalSystem)或用户帐户下为服务器注册 SPN。 对于内置帐户,SPN 将自动进行注册。 但是,如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册 SPN。

SPN 扫描的主要好处是,SPN 扫描不需要连接到网络上的每个 IP 来检查服务端口, SPN 通过 LDAP 查询向域控执行服务发现,spn 查询是 kerberos 票据行为一部分,,域内的主机都能查询 SPN,因此比较难检测 SPN 扫描。所以在域内不用做端口扫描也可以隐蔽地探测域内的服务。当利用 SPN 扫描找到域管登录过的系统,对渗透权限扩展有很大的帮助。

要使用 Active Directory 作为 Kerberos 实现,可以使用 setspn 命令来注册 SPN。要运行此命令,必须满足下列条件:

  • 必须登录到域控制器
  • 必须运行提升了特权的命令提示符(以管理员身份运行)
  • 必须是 Domain Admins 组的成员(或者域管理员已授予你适当的许可权)

SPN 分为两种:

  • 当一个服务的权限为 Local System 或 Network Service,则 SPN 注册在域内机器帐户 (Computers) 下
  • 当一个服务的权限为一个域用户,则 SPN 注册在域用户帐户 (Users) 下

一些注意的服务 :

  • AGPMServer:通常具有所有 GPO 的完全控制权。
  • MSSQL/MSSQLSvc:具有管理员权限的 SQL 服务器通常会有一些有趣的数据。
  • FIMService:通常对多个 AD 林具有管理权限。
  • STS:VMWare SSO 服务,可以提供访问 VMWare 的后门。

对于 RC4 加密的使用 tgsrepcrack 解密

对于 AES 加密的使用 Kirbi2john 转换为 hash,通过 hashcat 爆破

案例

用户 AAA 要访问 MSSQL 服务的资源,进行到 Kerberos 认证的第四步 (TGS-REP) 时,KDC 查询 MSSQL 服务的 SPN,若该 SPN 注册在机器账户 (Computers) 下,TGS 将会查询数据库中所有机器账户 (Computers) 的 ServicePrincipalName 属性,找到对应的账户,使用该账户的 NTLM Hash 对 Client/Server Session KeyClient Info(包含 Client ID)、TimeStamp 加密得到 Client-To-Server Ticket(也称为 ST 票据)。若查询服务的 SPN 注册在域用户账户 (Users) 下,TGS 将会查询数据库中所有域用户账户 (Users) 的 ServicePrincipalName 属性,找到对应的账户,使用该账户的 NTLM Hash 对 Client/Server Session Key、Client Info(包含 Client ID)、TimeStamp 加密得到 Client-To-Server Ticket(也称为 ST 票据)

内置工具 setspn 查询

setspn 是 Windows 内置工具,可以检索用户账户和服务之间的映射,此工具可以添加、删除、查看 SPN 的注册情况。

为账户 god.org/dbadmin 注册 SPNMSSQLSvc/SqlServer.god.org:

setspn -A MSSQLSvc/SqlServer.god.org dbadmin

查看 SPN:

// 查看当前域内的所有 SPN
setspn.exe -q */*

// 查看 god 域内的所有 SPN
setspn.exe -T god -q */*

// 查看 dbadmin 账户的 SPN
setspn -l dbadmin

以 CN 开头的每一行代表一个账户,紧跟下面的信息是与该账户有关的SPN。

机器账户(Computers)为:

CN=OWA2010CN-GOD,OU=Domain Controllers,DC=god,DC=org
CN=MARY-PC,CN=Computers,DC=god,DC=org
CN=SQLSERVER,CN=Computers,DC=god,DC=org
...

域用户账户(Users)为:

CN=krbtgt,CN=Users,DC=god,DC=org
CN=dbadmin,CN=Users,DC=god,DC=org

注册在域用户账户下的 SPNMSSQLSvc/SqlServer.god.org 和 kadmin/changepw

SPN 扫描相关工具

相关文章


域控

查询域管理员用户

net group "Domain Admins" /domain

查找域控

ping test.com               # ping 域名,解析到域控服务器IP地址
net time /domain            # 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名
nltest /DCLIST:test.com     # 查看域控制器机器名
net group "Domain Controllers" /domain              # 查看域控制器组,因为可能有不止一台域控,有主备之分
nslookup -type=all _ldap._tcp.dc._msdcs.test.com    # 若当前主机的dns为域内dns,可通过查询dns解析记录定位域控。
dsquery server
  • BloodHound

  • 端口探测

    通过端口探测方式定位域控, 扫描内网中同时开放 389,636 与 53 的机器,389 默认是 LDAP 协议端口,636 端口是 LDAPS,53 端口默认是 DNS 端口,主要用于域名解析,通过 DNS 服务器可以实现域名与 ip 地址之间转换,他们都是域控机器开放的端口。

  • SPN 扫描定位

    由于 SPN 本身就是正常的 kerberos 请求,所以扫描隐蔽,它不同于 TCP 与 UDP 常规端口扫描。大部分 windows 已经自带 setspn.exe,且此操作无需管理权限。

    setspn -T test.com -Q /
    

    在扫描出的结果中就可以根据

    CN=AD-SERVER,OU=Domain Controllers,DC=test,DC=com 来进行域控的定位。此时已经查询出域控机器。

定位域管理员

  • 为什么要定位域管理员

    在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。也就是说,当计算机被添加到域中,成为域的成员主机时,系统会自动将域管理员组添加到本地系统管理员组中。因此,域管理员组的成员均可访问本地计算机,且具备完全控制权限。

    定位,查看有哪些账号登录了哪些机器,如果我们可以找到域管理员登录了哪些服务器,就可以通过攻击这些服务器并进行尝试利用,以获得域管理员权限。

    定位域管理员的常规渠道,一是日志,二是会话。日志是指本地机器的管理员日志,可以使用脚本或wevtutil工具导出并查看。会话是指域内每台机器的登陆会话,可以使用netsess.exe或powerview等工具查询

  • psloggedon.exe - pstools 中自带, 其原理为检查注册表 HKey_USER 项的 key 来查询,会调用 NetSession api, 所以有些功能需要管理员权限。

    # 此工具用于查看本地登录的用户和通过本地计算机或远程计算机资源登录的用户
    
    psloggedon.exe [-] [-l] [-x] [\\computername或username]
    # -	显示支持的选项和用于输出值的度量单位
    # -l 	仅显示本地登录,而不显示本地和网络资源登录
    # -x	不显示登录时间
    # \computername	指定要为其列出登录信息的计算机的名称
    # username	指定用户名,在网络中搜索该用户登陆的计算机
    
    # \\后面接的是域控机器名,看一下登录过域控的用户名
    # \\接的是用户名,那就会搜索网上邻居的计算机,并显示当前用户是否已经登录
  • PVEFindADUser.exe - 查找域用户位置、某计算机上登录用户。运行需要计算机支持framework2.0 且以管理员权限运行

    pvefinaduser.exe -current   # #将获取域内所有计算机上当前登陆的所有用户, 结果保存到 report.csv 文件
    # -last	将获取目标计算机的最后一个登陆用户
    # -target	指定要查询的计算机。
    # -current [“username”]	-current 参数显示每台 PC 上当前登录的用户在域中。如果指定用户名(在引号之间),则仅将显示该特定用户登录的 PC
    # -noping	阻止尝试枚举用户登录名之前对目标计算机执行 ping 命令
  • netview.exe - netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 找寻登录会话,利用 NetShareEnum 找寻共享,利用 NetWkstaUserEnum 枚举登录的用户,netview.exe 还可以查询共享入口和有价值的用户。

    netview.exe [参数]
    # -f	filename.txt: 指定要提取主机列表的文件
    # -e	filename.txt: 指定要排除的主机名的文件
    # -o	filename.txt: 将所有输出重定向到指定的文件
    # -d	filename.txt: 指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表
    # -g	group: 指定搜索的组名。如果没有指定,则在 Domain Admins 组中搜索
    # -c	对已找到的共享目录 / 文件的访问权限进行检查
  • nmap 脚本

    smb-enum-domains.nse: 对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等
    smb-enum-users.nse: 在进行域渗透时,如获取了域内某台主机权限,但权限有限,无法获取更多的域用户信息,可借助此脚本对域控制器进行扫描
    smb-enum-shares.nse: 遍历远程主机的共享目录
    smb-enum-processes.nse: 对主机的系统进程进行遍历,通过此信息,可知道目标主机运行着哪些软件
    smb-enum-sessions.nse: 获取域内主机的用户登陆会话,查看当前是否有用户登陆
    smb-enum-discovery.nse: 收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS 机器名、NetBIOS 域名、工作组、系统时间等信息
    
  • PowerSploit

    Set-ExecutionPolicy -ExecutionPolicy Bypass
    import-module .\Recon.psd1
    # Invoke-UserHunter: 找到域内特定的用户群,接受用户名、用户了表和域组查询,接收一个主机列表或查询可用的主机域名。可以使用 Get-NetSession 和 Get-NetLoggedon(调用 NetSessionEnum 和 NetWkstaUserEnumAPI) 扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,在使用时不需要管理员权限,在本地执行该脚本
    
    # Invoke-StealthUserHunter: 只需要进行一次查询,就可以获取域里面的所有用户,使用方法为,从 user.HomeDirectories 中提取所有用户,并对没太服务器进行 Get-NetSession 获取。因不需要使用 Invoke-UserHunter 对没太机器进行操作,所以这个方法的隐蔽性相对较高(但涉及的机器不一定全面)。PowerView 默认使用 Invoke-StealthUserHunter 如果找不到需要的信息,就使用 Invoke-UserHunter
    
    Get-NetLocalGroupMember -ComputerName 主机名 -GroupName administrators
    # 指定远程计算机,指定枚举管理员组
  • Netsess.exe - 收集所有活动域的会话列表

  • BloodHound


工控资产

相关文章

相关工具

  • nmap
  • ISF
    scanners/s7comm_scan        # 选择 S7 扫描插件
    scanners/vxworks_6_scan     # 选择 vxworks 扫描插件
    scanners/cip_scan           # 选择 cip_scan 扫描插件
  • plcscan - 通过 s7comm 或 modbus 协议扫描 PLC 设备的工具。
  • msf
    use auxiliary/scanner/scada/modbusdetect

网站

教程/案例

资产扫描工具

  • smicallef/spiderfoot - SpiderFoot 是一个 Python 编写的免费开源的网站信息收集类工具,并且支持跨平台运行,适用于 Linux、*BSD 和 Windows 系统。提供了 GUI 界面。可以获取网站子域、电子邮件地址、web 服务器版本等等信息。
  • broken5/WebAliveScan - 对目标域名进行快速的存活扫描、简单的指纹识别、目录扫描
    pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    python3 webscan.py --target target.txt --port 80
    python3 webscan.py --target target.txt --port small
    python3 webscan.py --target target.txt --port large
  • projectdiscovery/httpx
  • tomnomnom/httprobe

真实IP

为什么要寻找真实 IP?,当某个企业使用了 CDN/云防线/反向代理等方式对服务进行架构设计时,我们通过 ping 命令等并不能直接将请求传递到真实的服务器上,而是经过一层设置对该请求进行转向,导致到我们不能获取到真实服务器的开放端口等信息进行收集。

相关文章

相关工具

tips

  • Nslookup

    nslookup + 域名

  • phpinfo

  • 利用邮件服务器找到真实 IP

    Web 跟 Email 服务属同服务器的情况下可以通过 Email 来查询目标真实 IP 地址,但如果 Web 跟 Email 属不同服务器,那么我们通过 Email 得到的可能只是邮件服务器的 IP 地址。

  • 多地 ping 域名

    利用在线网站服务多地 ping 测试

  • "常识"判断

    在反查网站 ip 时,如果此网站有 1000 多个不同域名,那么这个 ip 多半不是真实 ip.

    如果一个 asp 或者 asp.net 网站返回的头字段的 server 不是 IIS、而是 Nginx,那么多半是用了 nginx 反向代理,而不是真实 ip.

    如果 ip 定位是在常见 cdn 服务商的服务器上,那么是真实 ip 的可能性就微乎其微了.

  • 子域名查找

    利用一些在线查询的网站,例如 https://dnsdb.io/zh-cn/ 只需输入 baidu.com type:A 就能收集百度的子域名和 ip

    Google 搜索 Google site:baidu.com -www 就能查看除 www 外的子域名

    总结:收集子域名后尝试以解析 ip 不在 CDN 上的 ip 解析主站,真实 ip 成功被获取到.

  • 历史 DNS 解析记录

    上面下面这么多方法里,这个应该是成功率较高的了

    通过查询历史的 DNS 解析 IP,有可能得到真实 IP

  • SSL 证书

  • 查询网站标题找到真实 IP

    有提议通过遍历全球 IP 端口匹配标题来找源 IP 的方法,太不切实际了,与其这样不如直接到 shodan 搜索网站标题 Title,这样说不定还更快.

  • F5 LTM 解码法

    当服务器使用 F5 LTM 做负载均衡时,通过对 set-cookie 关键字的解码真实 ip 也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即 487098378 取出来,然后将其转为十六进制数 1d08880a,接着从后至前,以此取四位数出来,也就是 0a.88.08.1d,最后依次把他们转为十进制数 10.136.8.29,也就是最后的真实 ip.

    其实我就像问一句,你家祖传的 F5 设备不更新的吗?

  • DDOS 消耗

    我看过不少文章将通过 DDOS 来消耗对方流量,只要把流量打光,就会回滚到原始 IP,还特别拿 cloudflare 举例,但是目前, cf 免费版就提供 ddos 无限量防护.

  • 拿下 CDN 节点服务器的权限

    离谱,你还不如社工管理员服务器 IP 地址来得快呢


子域

子域名(或子域;英语:Subdomain)是在域名系统等级中,属于更高一层域的域。比如,mail.example.com 和 calendar.example.com 是 example.com 的两个子域,而 example.com 则是顶级域 .com 的子域。

在渗透测试的时候,往往主站的防御会很强,常常无从下手,那么子站就是一个重要的突破口,因此子域名是渗透测试的主要关注对象.

域名级别

  • 顶级域名

    顶级域名又分为两类:

    • 国家顶级域名(national top-level domainnames,简称 nTLDs),200 多个国家都按照 ISO3166 国家代码分配了顶级域名,例如中国是 .cn,美国是 .us,日本是 .jp 等;

    • 国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .com,表示网络提供商的 .net,表示顶级标杆、个人的 .top,表示非盈利组织的 .org 等。

  • 二级域名

    二级域名是互联网 DNS 等级之中,处于顶级域名之下的域。 二级域名是域名的倒数第二个部份,例如在域名 example.com 中,二级域名是 example 。

  • 三级域名

    三级域名用字母(a~z)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。 如无特殊原因,采用申请人的英文名(或者缩写)或者汉语拼音名 (或者缩写) 作为三级域名,以保持域名的清晰性和简洁性。

相关文章

学习资料

相关工具

  • shmilylty/OneForAll - 非常优秀的子域名爆破工具,推荐

    # config/setting.py 配置代理
    # config/api.py 配置 API 信息
    python3 oneforall.py --target ffffffff0x.com run
    python3 oneforall.py --targets ./example.txt run
  • boy-hack/ksubdomain

    ksubdomain -d xxx.com -o out.txt
  • blechschmidt/massdns - 一个高性能的DNS存根解析器,用于批量查找和侦察(子域枚举)。

  • Threezh1/JSFinder - 通过在 js 文件中提取 URL,子域名

  • LangziFun/LangSrcCurise - 持续性的子域名监控

  • tomnomnom/assetfinder - GO语言编写,从社交网站、威胁搜索引擎获取子域的工具

  • infosec-au/altdns - 生成大量的子域列表,配合爆破工具使用

  • Edu4rdSHL/findomain - Rust语言编写的子域枚举工具

  • OWASP/Amass - 多功能信息收集工具

  • lijiejie/subDomainsBrute - 本工具用于渗透测试目标域名收集。高并发DNS暴力枚举

  • bit4woo/teemo - 域名收集及枚举工具

  • ring04h/wydomain - python语言编写的子域枚举工具

  • fwaeytens/dnsenum - 一个枚举DNS信息的 perl 脚本

  • mschwager/fierce - 一个 DNS 侦查工具,用于查找非连续 IP 空间。

  • OJ/gobuster - go 写的枚举工具可爆破目录、DNS、虚拟主机名,速度极快

  • esecuritylab/kostebek - 一种使用公司商标信息来发现其域名的侦察工具

  • MilindPurswani/Syborg - 一个递归 DNS 域枚举器,它既不是主动的也不是完全被动的。该工具仅构造一个域名,然后使用指定的DNS服务器查询该域名。

  • guelfoweb/knock - python 编写的 DNS 枚举工具,支持对 VirusTotal 子域的查询

  • tismayil/rsdl - go语言编写,采用 ping 方式的子域扫描工具

  • joinsec/BadDNS - BadDNS 是一款使用 Rust 开发的使用公共 DNS 服务器进行多层子域名探测的极速工具。

    ./baddns -t target.txt -s domaindict-170W.txt -d depthdict.txt
    
  • projectdiscovery/subfinder - Fast passive subdomain enumeration tool.

    • api 配置文件位于 $HOME/.config/subfinder/provider-config.yaml
  • yunxu1/dnsub - 通过字典枚举、API查询、爬虫的方式用于扫描探测子域名

  • projectdiscovery/dnsx - dnsx is a fast and multi-purpose DNS toolkit allow to run multiple DNS queries of your choice with a list of user-supplied resolvers.

host 碰撞

  • fofapro/Hosts_scan - 一个用于 IP 和域名碰撞匹配访问的小工具,旨意用来匹配出渗透过程中需要绑定 hosts 才能访问的弱主机或内部系统。
  • pmiaowu/HostCollision

Tips


目录扫描

在渗透测试中,在对目标网站进行渗透时,对网站的下级目录进行目录扫描,用以发现目标网站是否存在 OA,网站后台,敏感目录或者任意文件下载等信息.

字典

字典资源见 Power-PenTest Web 字典 部分

相关文章

目录扫描工具

  • ffuf/ffuf - go 写的 web fuzz 工具,很好用,推荐
    ffuf -c -mc 200,301,302,403 -t 50 -u http://testphp.vulnweb.com/FUZZ -w dic.txt
    ffuf -c -mc 200,301,302,403 -t 50 -u http://testphp.vulnweb.com/FUZZ -b "NAME1=VALUE1; NAME2=VALUE2" -w dic.txt # Cookie
  • wfuzz
  • OJ/gobuster - go 写的枚举工具可爆破目录、DNS、虚拟主机名,报错较多
    ./gobuster dir -u http://testphp.vulnweb.com/ -w dic.txt
    
  • nccgroup/dirble - rust 写的目录扫描工具,效果一般
    ./dirble http://testphp.vulnweb.com/ -w dic.txt
    
  • maurosoria/dirsearch - python 写的目录扫描工具,效果一般
  • Nekmo/dirhunt - python 写的目录扫描工具,效果一般
  • Xyntax/DirBrute - python 写的目录扫描工具,效果一般,且长期未更新
  • H4ckForJob/dirmap - python 写的 web 目录、文件扫描工具
  • tomnomnom/waybackurls - 提取 Wayback Machine 已知的域下所有 URL
    cat domains.txt | waybackurls > urls
  • lc/gau - 从AlienVault的Open Threat Exchange,Wayback Machine和Common Crawl中获取已知的URL。

浏览器爬虫工具

  • 0Kee-Team/crawlergo
    # 假设你的 chromium 安装在 /tmp/chromium/ ,开启最大10标签页,爬取 AWVS 靶场
    ./crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/
    
    # 使用代理
    ./crawlergo -c /tmp/chromium/chrome -t 10 --request-proxy socks5://127.0.0.1:7891 http://testphp.vulnweb.com/
    
    # json 输出
    ./crawlergo --output-json out.json -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/
    cat out.json | jq '.req_list' > out2.json
    cat out2.json | jq '.[].url' > url.txt
    sed -i 's/.//' url.txt && sed -i 's/.$//g' url.txt
  • jaeles-project/gospider
  • chaitin/rad

js收集

  • lc/subjs - Fetches javascript file from a list of URLS or subdomains.

Tips

  • 使用 burp 的 Intruder 爆破模块扫描目录也是以一种很好的选择,当其他扫描器没有结果时不妨尝试一下。

参数fuzz

相关工具


指纹

指纹是指网站 CMS 指纹识别、计算机操作系统以及 web 容器的指纹识别等。

应用程序一般在 html、js、css 等文件中包含一些特征码,这些特征码就是所谓的指纹。当碰到其他网站也存在次特征时,就可以快速识别出该程序,所以叫做指纹识别。

在线工具

相关文章

相关工具


旁站 & 反查

旁站是和目标网站在同一台服务器上的其它的网站;如果从目标站本身找不到好的入手点,这时候,如果想快速拿下目标的话,一般都会先找个目标站点所在服务器上其他的比较好搞的站下手,然后再想办法跨到真正目标的站点目录中。C 段是和目标机器 ip 处在同一个 C 段的其它机器;通过目标所在 C 段的其他任一台机器,想办法跨到我们的目标机器上。

相关工具

  • Sma11New/ip2domain - 批量查询ip对应域名及百度权重、备案信息;ip反查域名;ip查备案信息;资产归属查询;百度权重查询

在线工具


历史快照

大部分网站都存在历史快照,往往这些快照都有存在些敏感信息或者曾经被挂过暗链。

在线工具

例子

https://webcache.googleusercontent.com/search?q=cache:www.baidu.com

whois与备案

什么是 whois

whois(读作“Who is”,非缩写)是用来查询域名的 IP 以及所有者等信息的传输协议。简单说,whois 就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。

命令行下使用

在线 whois 查询

在线备案查询


截图

相关工具


OSINT

  • Digital-Privacy - 一个关于数字隐私搜集、保护、清理集一体的方案,外加开源信息收集(OSINT)对抗

业务信息

公司信息

移动应用

  • APP商店
    • (华为/小米/OPPO/三星/...)应用商店
    • App Store
  • 微信/支付宝小程序

相关工具

  • ouxinLou/company-crawler - 天眼查爬虫&企查查爬虫,指定关键字爬取公司信息
  • wgpsec/ENScan_GO - 一款基于各大企业信息 API 的工具,解决在遇到的各种针对国内企业信息收集难题。一键收集控股公司 ICP 备案、APP、小程序、微信公众号等信息聚合导出。

员工信息

收集渠道

  • qq群
  • 微信群
  • 钉钉群
  • 线上/下活动

email

企业邮箱的邮箱后缀名一般为企业的域名,为便于员工可以方便的进行工作通信,企业会对外网开放邮箱登录地址。因此在前期的信息收集中掌握大量的邮箱账号对于破解企业邮箱非常有帮助。

相关工具

  • laramies/theHarvester - E-mails, subdomains and names
  • nettitude/Prowl - 一个电子邮件收集工具,它可以搜索与用户搜索术语相关联的个人资料,并识别职位。还确定指定组织的当前工作列表。
  • 按域名搜索
  • Taonn/EmailAll - 一款强大的邮箱收集工具
    git clone https://github.com/Taonn/EmailAll.git
    cd EmailAll
    pip3 install -r requirements.txt
    
    python3 emailall.py --domain example.com run
    
  • MSF Module - 这个模块比较拉胯,不建议使用
    use auxiliary/gather/search_email_collector
    show options
    set domain ffffffff0x.com
    run