信息收集是指通过各种方式获取所需要的信息,以便我们在后续的渗透过程更好的进行。最简单的比如说目标站点的IP、中间件、脚本语言、端口、邮箱等等。我觉得信息收集在我们渗透测试的过程当中,是最重要的一环,这一环节没做好,没收集到足够多的可利用的信息,我们很难进行下一步的操作。

一、踩点

1、踩点的概念

踩点指的是预先到某地考察,为后续工作做准备,获取信息的过程就叫踩点,在渗透测试中,第一步要做的就是信息收集,即踩点。这里的踩点主要是尽可能收集关于目标网络的信息以找到各种能有效入侵对方网络的方法,通常我们使用扫描器来实现,通过扫描器我们可以发现各种远程服务的端口,提供哪些服务以及服务器版本等内容。

当然,在实战中,我们信息收集的过程也要慎用各种扫描器,我们的信息收集过程应该是隐蔽的,悄无声息的,不应该让对方的应急团队察觉到你的意图。

2、Google hacking

还要学会使用搜索引擎,如Google hacking,善用Google,它的功能很强大,这里列举一些常用的Google语法供大家参考:

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
intext: 
这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:网络安全.
将返回所有在网页正文部分包含"网络安全"的网页.allintext:使用方法和 intext 类似.
intitle:
和上面那个 intext 差不多,搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:网络安全.将返回所有网页标题中包含"网络安全"的网页.同理 allintitle:也同 intitle 类似.
cache:
搜索 google 里关于某些内容的缓存,有时候也许能找到一些好东西哦.
define:
搜索某个词语的定义,搜索:define:hacker,将返回关于 hacker 的定义.
filetype:
这个我要重点推荐一下,无论是撒网式攻击还是我们后面要说的对特定目标进行信息收集都
需要用到这个.搜索指定类型的文件.例如输入:filetype:doc.将返回所有以doc结尾的文件URL.
当然如果你找.bak、.mdb 或.inc 也是可以的,获得的信息也许会更丰富:)
info:
查找指定站点的一些基本信息.
inurl:
搜索我们指定的字符是否存在于 URL 中.例如输入:inurl:admin,将返回 N 个类似于这样的连
接:http://www.xxx.com/xxx/admin,用来找管理员登陆的 URL 不错.allinurl 也同 inurl 类似,可指
定多个字符.
link:例如搜索:inurl:www.xxx.com 可以返回所有和 www.xxx.com 做了链接的 URL.
site:
这个也很有用,例如:site:www.xxx.com.将返回所有和 xxx.com 这个站有关的 URL.
对了还有一些操作符也是很有用的:
+把 google 可能忽略的字列如查询范围
-把某个字忽略
~同意词
.单一的通配符
*通配符,可代表多个字母
""精确查询
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
下面开始说说实际应用(以下内容均在 google 上搜索), 
对于一个居心叵测的攻击者来说,可能他最感兴趣的就是密码文件了.而 google 正因为其强
大的搜索能力往往会把一些敏感信息透露给他们.用 google 搜索以下内容:
intitle:"indexof"etc
intitle:"Indexof".sh_history
intitle:"Indexof".bash_history
intitle:"indexof"passwd
intitle:"indexof"people.lst
intitle:"indexof"pwd.db
intitle:"indexof"etc/shadow
intitle:"indexof"spwd
intitle:"indexof"master.passwd
intitle:"indexof"htpasswd
"#-FrontPage-"inurl:service.pwd
有时候因为各种各样的原因一些重要的密码文件被毫无保护的暴露在网络上,如果被别有用
心的人获得,那么危害是很大的。

感兴趣的师傅可以参考google-hacking-database,里面集成了很多语法:https://www.exploit-db.com/google-hacking-database

3、 Github以及其他信息收集途径

① Github

在Github中,可能会存在源码泄露、AccessKey泄露、密码、服务器配置泄露等情况,常见的搜索技巧有:

  • @example.com password/pass/pwd/secret/credentials/token
  • @example.com username/user/key/login/ftp/
  • @example.com config/ftp/smtp/pop
  • @example.com security_credentials/connetionstring
  • @example.com JDBC/ssh2_auth_password/send_keys

② shodan、Zoomeye等在线网站

ZoomEye 拥有两大探测引擎:Xmap 和 Wmap,是一个检索网络空间节点的搜索引擎。通过后端的分布式爬虫引擎(无论谁家的搜索引擎都是这样)对全球节点的分析,对每个节点的所拥有的特征进行判别,从而获得设备类型、固件版本、分布地点、开放端口服务等信息。

ZoomEye 支持公网设备指纹检索和 Web 指纹检索

网站指纹包括应用名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据库等。设备指纹包括应用名、版本、开放端口、操作系统、服务名、地理位置等

常见的语法有:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
定位国家---           country:US
搜索城市--- city:xx
搜索组件--- app:组件名
搜索版本--- ver:5.0
搜索端口--- port:80
搜索服务名-- service:SSH
搜索操作系统- OS:Linux
搜索网段--- cidr:1.1.1.1/24
指定网站域名搜索-- site:www.baidu.com
指定主机名--- hostname:www.baidu.com
指定设备名--- device:router
指定首页关键词--- keyword:sec


快捷键:
显示帮助 shift+/
隐藏该帮助 ESC
回到首页 shift
高级搜索 Shift +s
聚焦搜索框 s

想了解更多的可以看下这篇文章:

https://www.programminghunter.com/article/7143642821/

③ 天眼查,站长工具等

image-20220326192658584

image-20220326193204069

④ 绕过CDN获取真实ip

查找子域名

很多时候,一些重要的站点会做CDN,而一些子域名站点并没有加入CDN,而且跟主站在同一个C段内,这时候,就可以通过查找子域名来查找网站的真实IP。

常用的子域名查找方法和工具:

(1)搜索引擎查询:

如Google、baidu、Bing等传统搜索引擎,site:baidu.com inurl:baidu.com,搜target.com|公司名字。

(2)一些在线查询工具
1
2
3
4
5
http://tool.chinaz.com/subdomain/
http://i.links.cn/subdomain/
http://subdomain.chaxun.la/
http://searchdns.netcraft.com/
https://www.virustotal.com/
(3)子域名爆破工具
1
2
3
4
Layer子域名挖掘机
wydomain:https://github.com/ring04h/wydomain
subDomainsBrute:https://github.com/lijiejie/
Sublist3r:https://github.com/aboul3la/Sublist3r
网站邮件头信息

比如说,邮箱注册,邮箱找回密码、RSS邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP。

利用SSL证书寻找真实IP

证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。

SSL证书搜索引擎:

1
https://censys.io/ipv4?q=github.comCensys 证书搜索:
扫描全网

通过Zmap、masscan等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实IP。

ZMap号称是最快的互联网扫描工具,能够在45分钟扫遍全网。

1
https://github.com/zmap/zmap

Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。

1
https://github.com/robertdavidgraham/masscan
国外访问

一般的站点在国内可能会有CDN,但是在国外的用户覆盖率比较低,所以通过国外的节点进行请求往往能获取真实IP

⑤ 端口扫描:

一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行扫描。在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。以上定义只针对网络通信端口,端口扫描在某些场合还可以定义为广泛的设备端口扫描,比如某些管理软件可以动态扫描各种计算机外设端口的开放状态,并进行管理和监控,这类系统常见的如USB管理系统、各种外设管理系统等。

(1)可以通过Nmap(Nmap是一个网络连接端口扫描工具,用来扫描网上的电脑具体开放的网络连接端口。可以确定哪些服务运行在哪些的连接端口上,并且可以推断计算机运行哪个操作系统。所以它是网络安全管理人员必用的软件之一,甚至用以评估网络系统安全);

(2)通过masscan(masscan是网络安全中常用的技术手段,通过对于特定的IP范围和端口范围进行穷举扫描,发现网络中开放的端口,从而为进一步的探查提供基本信息)

⑥ 旁站查询

C段主机是指与目标服务器在同一C段网络的服务器,攻击目标的C段存活主机是信息收集的重要信息,很多单位企业的内部服务器可能都会在一个C段网络中。

还可以用NMAP进行C段扫描,使用命令【nmap -sn IP/24】,对目标IP的C段主机存活扫描,根据扫描的结果可以判断目标IP的C段还有哪些主机存活,然后对存活的主机进行渗透,拿到最高权限后进行内网渗透。

可以通过K8_C段旁注工具、WebRobot、御剑,Cain、Sniffit 、Snoop、Tcpdump、Dsniff等工具进行查询;

也可以用在线查询地址:http://www.webscan.cc/http://www.5kik.com/

⑦ WAF查询

类似的有wafw00f(需要安装),可以识别是否有waf防护,是什么waf。

https://scan.top15.cn/web/:还可以查旁站及其他信息

二、WINDOWS和LINUX系统的基础命令

打点:基本信息收集(外围)

Banner 操作系统信息,web容器信息,开发商,cms信息

主机内部信息收集

主机存活探测

win

for /1 %i in (1,1,254) do @ping -w 1 -n 1 10.0.1.%i|findstr /c:”TTL=”

linux

for i in {1..254..1};do ping -w 1 -c 1 121.5.144.$i|grep“ttl”|awk’{print $4}’ |awk -F “:” ‘{print $1}’;done

主机信息收集

ipconfig /all //看网卡配置,判断当前是否存在域环境

netsh wlan show profiles wifi名 key=clear //看wifi密码

net localgroup //查看分组信息

net user 用户名 //查看用户基本信息

net user 用户名 密码 /add

net user 用户名 密码 /der

systeminfo | findstr /B /C:”OS 名称” /C:”OS 版本”

systeminfo | findstr “KB”

net share //看共享目录

net use \192.168.1.130\C$ 密码 /user:用户名 IPC管道连接

      dir \\192.168.1.130\C$        //查看目录

     copy 本地文件 \\192.168.1.130\C$\windows        //上传文件

    copy \\192.168.1.130\C$\calc.exe c:\        //下载文件

net cofig workstation        //查看工作站

netstat -ano //查找端口开放情况

whoami //查看当前用户

whoami /user //获取当前用户的sid

whoami /all //查看所有的信息

whoami /priv //查看当前用户的权限

ver //看操作系统

wmic:

    process

            wmic process get Name,ProcessId,ThreadCount     //获取指定进程信息

            wmic process list brief         //列出进程信息

            wmin /node:127.0.0.1 process call create calc    //远程调用

    os

            wmic os get WindowsDirectory, SystemDirectory,CountryCode

    product 

            wmic product get name,version        //慢

wmic /node:localhost /namespace:\root\SecurityCenter2 path AntivirusProduct Get displayname /format:list //远程查找杀软