前辈留下的经验,渗透是将目标透漏的信息进行搜集、整合、进行利用。

目标资产信息搜集的程度,决定渗透过程的复杂程度。

目标主机信息搜集的深度,决定后渗透权限持续把控。

渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。

——Micropoor

一个目标你必须要知道它哪里最薄弱,挑出来,撕开口子拿下它,管你用什么手段,而信息收集是你能够拿下目标最其中最重要的一部分。

被动信息收集

这里指的被动都是可以在公开渠道可以获得的信息,不会与目标信息系统产生连接,有一个专业名词 OSINT(Open-source intelligence)。

我们需要搜集的信息

  • IP 地址段
  • 域名信息
  • 邮件地址
  • 文档、图片数据
  • 公司地址
  • 公司组织架构
  • 联系电话 / 传真号码
  • 人员姓名 / 职务
  • 系统技术架构
  • 公开的商业信息

相关搜索

# IP信息
IP段收集和IP信息 - ipwhois.cnnic.net.cn
一些IP信息 - https://www.ipip.net

# 企业信息查询
企查查 - https://www.qichacha.com
天眼查 - https://www.tianyancha.com
企信 - https://www.qixin.com
企查猫 - https://www.qichamao.com
悉知 - http://www.xizhi.com

# 信息泄露
盘多多 - http://www.panduoduo.net
盘搜搜 - http://www.pansoso.com
盘搜 - http://www.pansou.com
凌云风搜索 - https://www.lingfengyun.com
github - https://github.com

# 网络空间搜索引擎
zoomeye - https://www.zoomeye.org
shodan  - https://www.shodan.io
fofa - https://fofa.so
censys - https://censys.io

# 历史漏洞
wooyun镜像站漏洞详情  - http://www.anquan.us  
butian漏洞认领 - https://butian.360.cn/Loo  
cnvd绵羊墙 - http://www.cnvd.org.cn/sheepWall/list?flag=true

# 备案信息查询
工信部备案查询 - http://beian.miit.gov.cn/state/outPortal/loginPortal.action
站长工具备案查询 - http://icp.chinaz.com

# 域名注册查询(子域名)
whois - http://whois.chinaz.com
西部数码 - https://www.west.cn
百度企业信誉 - https://xin.baidu.com
virustotal在线查询子域名 - https://www.virustotal.com
子域名查询 - https://findsubdomains.com
子域名查询 - http://site.ip138.com

# 判断是否启用CDN
多地ping - http://ping.chinaz.com

# CMS识别
云悉 - http://www.yunsee.cn

查看站点图标文件 - favicon.ico

从微信公众号找找内容,什么注册人信息,最新活动文章呀。

SSL cert

# 使用正常功能点
注册账号,找回密码...

# 扫后台
dirb/dirsearch - 扫描敏感目录
BurpSpider - 抓取站点路径

nslookup

用工具前先大概了解下 DNS 解析过程,解析域名肯定先从本地 DNS 缓存中去找,找不到再向 DNS 客户端与 ISP 的 DNS 服务器(运营商的 DNS 服务器)去查询(叫递归查询),本地 ISP 的 DNS 服务器查询不到会像顶级域发起查询(称作迭代查询)。

常用域名记录:

  • A 主机记录(把一个域名解析到一个IP地址上)
  • cname 别名记录(可以把一个域名解析到另一个域名上)
  • NS 记录(域名服务器的地址记录,用来指定域名由哪台服务器来进行解析)
  • MX 邮件交换记录(会解析到这个域邮件服务器)
  • ptr(把 IP 解析成域名的称反向解析)

    nslookup domain

这里我们查了新浪的域名,server 显示我们本地使用的 DNS 地址,www.sina.com 第一查询就已经出了结果了。我们看到www.sina.com.cn 被 cname 到 us.sina.com.cn 而 us.sina.com.cn 又被 cname 到 wwwus.sina.com,最终的wwwus.sina.com 是 66.102.251.33 与我们第一次查询是一致的。

nslookup.png

我们还可以设置查询的类型(这里 type 可以用 q 代替),这里设置了 MX 就会查询邮件交换记录,当中交换记录中的名称值越小优先级越高,邮箱法邮件的时候回优先选择值最小的,当无法发送会向后选择。还有其他选项 any 是查询所有记录、a 是主机记录、NS 域名服务器的地址、ptr 反向域名查询。

nslookupSetType.png

当中的server是我们本地 DNS,我们还可以使用其他服务器来查这个 domain。
server.PNG

还有一种使用方法,nslookup 后面 -q 跟选项,后面是域名,server 是指定那台 DNS 来解析,不填就默认本地 DNS。
Usage:nslookup [-option] [name | -] [server]
nslookup02.PNG

dig

简便语法:dig [@server] name [type]
@server 是用哪台服务器查询如果不指定会从本地设置的DNS地址查询(在/etc/resolv.conf),name 是你要查的 IP 地址或域名,type 按照什么类型去查不指定会默认用A记录查。

我们查这个域名可以用多个服务器来进行查询,114.114.114.114 是 google 的服务器,不同地区服务器结果可能不一样(智能 DNS)。

dig01.PNG

dig 还有一些选项
digOption.PNG

-t #指定类型
-q #查询的对象域名或IP地址
-x #反向解析 -x address
+noall  #不显示所有信息
+answer #直接显示最终的结果

dig 也可以做反向解析
digOption02.PNG

dig 可以查询 DNS 服务器 bind 软件版本(有漏洞就可能机会利用),如果能拿下 DNS 服务器的数据库那我们就能知道某个域名的所有记录,我们用 dig 或 nslookup 都只是针对这个域名来进行查询而不是域下的主机记录,baidu.com(域名)与 www.baidu.com(www 是主机记录或叫主机名)是不一样的。下面来查询 bind 版本信息

dig +noall +answer txt chaos VERSION.BIND @ns3.dnsv4.com 

前面3个是过滤就不写了,txt是记录类型, chaos是BIND服务器的class类(ANSWER SECTION第三列就是我们的类IN是Internet),VERSION.BIND要查的信息,@ns3.dnsv4.com是我们要查的域。
BindVersion.png
通常DNS服务器信息隐藏也是为了降低安全风险。

DNS 追踪

dig +trace www.baidu.com

+trace是直接跳过本地 DNS 服务器,向顶级域直接请求(迭代查询)。

trace.jpg

root@kali:~# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 8.8.8.8
nameserver 114.114.114.114
nameserver 192.168.66.1

这是本地配置的 DNS 服务。接下来抓包验证。

request.png
request01-1.png
request02.png
1首先请求 8.8.8.8 根域的NS记录,8.8.8.8 返回了根域的域名。2向 8.8.8.8 请求的根域的A(IPV4)记录与AAAA(IPV6)记录,根据响应返回相应的地址,会依次相应13个根域名服务器的记录。
request03.png
request03-1.png

获取完 13 个根域名服务器地址后,主机直接向第 13 个根域中随机选择一个进行查询,这里选的是h.root-servers.net的A记录。根域中并没找到 www.baidu.com 记录,但根域返回了 13 个 com 顶级域,主机没有直接向根域查询 com 域的 IP 而转向本地 DNS 去查,结果一样返回 A 与 AAAA 地址。

request04.png
request04-1.png

随机选了一个 c.gtld-servers.net 的 A 记录来查,com 域给主机返回了 baidu.com 的 ns 记录。接着返回他们的 A 与AAAA 记录
request05.png
request05-1.png

第131个包主机ns记录中随机选择了dns.baidu.com询问,132个包响应并返回查询结果www.baidu.com它被cname到www.a.shifen.com域名上,最终并没有解析到www.a.shifen.com这个域名,只看到的www.a.shifen.com对应的NS记录返回了他们的A记录,至于为什么不向下面的NS记录查询,这个问题暂时还不知道。

DNS区域传输

前面的查询我们只是针对域名来查询,如果能把这个与下的所有主机记录全部查出来,那么成功渗透(攻击面积增大)的可能性会大大增加,这是一个最理想的情况。

DNS区域传输它只发生在本域域名服务器之间,假设一个DNS服务器增加了一条A记录那其它会与其他DNS服务器进行同步,这是正常情况下,如果管理员对它配置不当那测试者也可以与它进行同步,测试者则能够拿到这个域下的所有主机记录,下面来介绍几个工具来测试区域传输。

dig @ns1.example.com example.com axfr 

@ns1.example.com是example.com的域名服务器(NS)这里面儿有example这个域的记录,传输方法是axfr(差异化记录传输)下面用sina做个示例

拒绝了

axfr01.PNG

也可以用host这个工具来测试区域传输

Usage:host [options...] hostname [server]

host -T -l sina.com 8.8.8.8,-T使用TCP方式 -l使用AXFR列出一个域所有的主机。DNS查询是在UDP53端口进行的,而我们区域传输(AXFR)是在TCP53端口进行所以使用-T。

连接到对方53端口出错了。

axfr02.PNG

DNS字典爆破

爆破通常使用字典来进行,这个字典里包含的主机记录的名称如www等,如果查到了会返回一个地址,把这个域和子域的记录全部爆出来。

fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt 
# -dnsserver是指定DNS服务器,-dns要查的域,-wordlist是字典

这里它找到了NS记录还自动尝试区域传输,区域传输失败了用采用字典,因为我们这里的字典还不知道在哪里所以它打不开。

fierce.png

一般工具都自带一个字典,用dpkg -L查询一个包安装文件,这里host.txt应该没错。
fierce-woldlist.png
fierce02.png

whois

kali下有个whois工具,根据whois能查出来注册人手机号、姓名、邮箱、地址等信息

whois.PNG

shodan

shodan它是互联网搜索引擎用于抓取互联网设备,如果设备接入了互联网它就会去抓取设备相关信息,包括摄像头、服务器等,它每个月进行一次互联网扫描。它的语法是根据banner来进行筛选的,下面是它常用语法。

hostname:搜索指定的主机或域名,例如 hostname:google

port:搜索指定的端口或服务,例如 port:21

country:搜索指定的国家,例如 country:CN

city:搜索指定的城市,例如 city:Hefei

org:搜索指定的组织或公司,例如 org:google

isp:搜索指定的ISP供应商,例如 isp:"China Telecom"

product:搜索指定的操作系统/软件/平台,例如 product:"Apache httpd" version:搜索指定的软件版本,例如version:1.6.2

geo:搜索指定的地理位置,参数为经纬度,例如 geo:"31.8639, 117.2808"

before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:"11-11-15"

net:搜索指定的IP地址或子网,例如 net:210.45.240.0/24

需要注意的是,这里的示例加了引号是因为属性的值当中有空格(避免被当成2个条件),比如org:"Starhub Mobile"。下面是示例

net用于搜索IP或子网,下图我们搜索了一下61.136.24.0这个网段的所有设备。shudan不仅可以搜索网段,还能搜索域名下面来组合上面的语法来使用。

shodan-net.png

查找windows系统有开放3389端口并且是天朝帝的。以上是综合了上面一部分语法来筛选过后的结果(内容过多不便截图),IP地址右侧一堆信息就是banner。挑选其中一条连接点进去,这些主机的位置(经纬度)都有显示。其实大可以结合一些有漏洞设备的banner来进行过滤大大提高效率。

integrated .png
x-y.png

shodan社区有一些伙伴进行了他们的语法组合的共享,一些资料放在下面啦,按需取。

share.png

其实不光国外的shodan,国内也有类似的搜索引擎FOFA和ZoomEye。

搜索引擎语法

这些语法可以组合使用,语法之间空格间隔。它只能检测收录的网页,使用robots.txt(有语法需查询)可以禁止搜索引擎收录敏感目录。

inurl:URL存在关键字的网页,例如 inurl:/admin

filetype:指定文件类型,例如 "Wireshark Manual" filetype:pdf

intitle:标题中含有关键字的网页,例如intitle:"雨滴科技管理平台"

intext:正文中含有关键字的网页,例如 intext:"q币 官方 充值"

site:搜索与这个域名相关的URL,例如 site:baidu.com这样会查找关于baidu.com所有的页面,site还可以指定查询哪个国家的顶级域,例如 "huaweidevice" site:jp,这就可以查询日本关于华为的相关的页面。

这里有一份好用的数据库,主要是一些人分享的语法组合。

maltego

CUPP

可定制的个人字典,针对某个目标来爆破。有时会产生奇效。

recon-ng

recon-ng是由Python编写的一个Web侦查框架(综合性工具),它集成了DNS、邮件等等一些信息收集,在框架内都可以完成。recon-ng的一些使用习惯与Metasploit有很大的相似,熟练recon-ng对学习Metasploit有很大的帮助。

进入后用按2下Tab键获取可执行的命令,help可以查看这些命令的使用方法,掌握了查看帮助,一些模块的使用也类似
method.png

netcraft模块通过Netcraft.com来收集ichunqiu.com域的主机名,设置它的选项要搜谁。
set.png

用run运行模块(如果不知道怎么使用模块请多用help或按两下tab)
run.png

这仅仅网站上的结果,还可以通过爆破主机名来获得(结果依据字典质量)大量未搜到的主机名。brute_hosts模块提供这个功能,图中的SOURCE是爆破的对象,WORDLIST是字典位置。爆破结果是不会解析到IP的。
brute_hosts.png

run结果绿色是发现了2个A记录,还有域名对应的不同的IP可能是做了负载均衡。
brute_hosts-run.png

结果存在一个文件里用 show hosts 可以查看结果,图中有部分FQDN被解析了是netcraft模块做了解析。
file-hosts.png

要想解析到IP可以用resolve模块
resolve.png
这个模块的选项可以是,给定一个字符串,或是某个路径下的文件,SQL语句从hosts表中读取,也可以作为对象,下面用SQL语句来做解析。
resolved-options.png
resolved-run.png

当你完成工作后recon-ng可以帮你生成一份报告,报告格式有很多种。
reporting.png

这里选择一个HTML文档好了,设置了创建人与客户以及文件的路径。
reporting.png
result.png

主动信息收集

主动信息收集可能会跟目标产生交互而在对方日志留下记录,当然也可用代理肉鸡等相关做跳板。通常对一个目标系统的渗透需要获取目标活动中的主机,而尽可能找到这些主机的缺陷(扩大攻击面)。

通常会扫服务器端口,如果是Web应用会找隐藏目录、JS文件、功能点这几项。

二层探测

arping第用OSI7层中的第二层(数据链路层)本地存活的主机,在CentOS7中自带。

arp返回信息可靠,用来确定内网主机存活。

用shell脚本循环使用arping工具

#!/bin/bash
# arping 扫当C段
# 问题:计算你当前的子网来确认扫描范围

# seq 255 | xargs -I {} -n 1 arping -c 1 192.168.4.{} |  grep index | cut -d '(' -f 2 | cut -d ')' -f 1 >> ip
read -p "请输入网卡名:" interface
if [ -z $interface ]; then
    echo "需要跟上网卡名"
    exit
fi
ip_add=`ip address show $interface | grep -E 'inet ' | awk '{print $2}' | sed 's/[0-9]\+[/][0-9]\+$//g'`

if [ -z $ip_add ]; then
    echo '获取不到当前网卡'
    echo $ip_add
else
    for num in `seq 254`; do
        arping -c 1 $ip_add$num | grep index | cut -d'(' -f2 | cut -d')' -f1
    done
fi

Netdiscover用于二层探测,有主动与被动探测

#主动
netdiscover -i eth0 -r 1.1.1.0/24
netdiscover -l iplist.txt

#被动
netdiscover -p 

参考文章

标签: none

讨论讨论讨论!