信息收集

信息收集概述

信息收集是指黑客为了更加有效地实施攻击而在攻击前或攻击过程中对目标的所有探测活动

作用

  1. 了解组织安全架构
  2. 缩小攻击范围
  3. 描绘网络拓扑
  4. 建立脆弱点数据库

信息收集分类

主动信息收集:于目标主机进行直接交互,从而拿到目标信息,缺点是会记录自己的操作信息

被动信息收集:不与目标主机进行直接交互,通过搜索引擎或者社会工程等方式间接的获取目标主机的信息

信息收集基本思路

信息收集由来-黑客攻击模型

信息收集,俗称踩点。

渗透测试最重要的阶段之一就是信息收集

为了启动渗透测试,用户需要收集关于目标网络资产等信息

用户得到的信息越多,渗透测试成功的概率也就越高

在这里插入图片描述
在这里插入图片描述

信息收集-域名收集

whois协议

  • 一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商、注册邮箱,电话,姓名等信息)。 https://whois.domain.cn/
  • 查询可以借助网上的网页接口简化的线上查询工具 http://whois.chinaz.com/

子域名

  • 子域名,是顶级域名(.com 、.cn 、.top)的下一级,域名整体包括两个“ . ”或包括一个“ / ”。如:百度顶级域名为baidu.com。其下有news.baidu.com 、 tieba.baidu.com 、 zhidao.baidu.com ……等子域名。收集子域名可以很大程度知道目标所拥有的网站等资产信息。工具:子域名挖掘机等。 在线子域名爆破:http://scan.javasec.cn/

旁站c段

查询旁站指某个服务器同一个ip地址所有域名

查询c段指某个服务器ip地址所在c段ip地址的所有域名

旁站:http://stool.chinaz.com/same?s=tianyisheng.com.cn&page=1

企业征信

企业征信机构记录了一家企业的基本信息,历史改革,股东及出资等信息的平台

查询:https://icredit.jd.com 天眼查:https://www.tianyancha.com

备案号查询

备案号是网站是否合法注册经营的标志,一个网站域名要上线必须要经过备案程序,通过备案号反查可查询目标的所有合法网站

查询: http://icp.chinaz.com

通过对征信、备案信息查询以及网络页面浏览获取:

  1. 企业基本信息
  2. 员工信息(手机号码、邮箱、姓名等),组织框架、企业法人、企业综合信息等
  3. 员工信息包括:员工姓名、员工工号、员工家庭及交际信息、上网习惯等
  4. 员工身份信息:员工简历,员工身份证,手机号,生日,家乡,住址等个人信息
  5. 员工社交账号信息:qq号,qq群,微博,微信,支付宝,员工邮箱账号等

DNS查询(查旁站的一种手段)

获取域名或者ip地址,并进行反向查找以快速显示同一服务器承载的所有其他域

查询:Viewdns:http://viewdns.info

ip查询

根据ip地址查询同一ip地址的其他信息

查询:http://www.114best.com

微步:https://x.threatbook.cn/

密码收集

github是全球最大的面向开源及私有软件项目的托管平台

许多企业的开发人员在上传开源代码到github往往忽略了将密码等敏感信息删除导致信息泄露

Google hacking

搜索引擎都会提供相应的搜索语法,通过搜索语法可以快速得到想要的信息

推荐搜索引擎:必应:bing.com 、百度:baidu.com 、 谷歌:google.com

推荐语法:

  • Intitle:搜索网站标题含有的关键字
  • Inurl:搜索url含有的关键字
  • Intext:搜索网页正文含有的关键字
  • Site:搜索特定网站和网站域名
  • Filetype:搜索特定文档格式

URL采集器:快速切换搜索引擎,快速获得搜索结果

网站架构

获取操作系统类型:windows、linux

数据库类型:SQL server、MYSQL、MariaDB、Oracle、access等

web中间件:nginx 、apache 、 jboss 、tomcat 、iis 、weblogic等

网站开发语言:php 、asp 、aspx 、jsp 、py等

指纹识别

探测网站是否使用开源cms:开源的内容管理系统

  • 渗透方法:搜索引擎搜搜开源cms已知漏洞库
  • 常见CMS:WordPress 、Dedecms 、Discuz 、PhpWeb 、 PhpWind 、 Dvbbs 、PhpCMS 、 ECShop 、SiteWeaver 、AspCMS 、帝国 、Z-Blog

在线指纹识别网站:

  • 云悉指纹:http://www.yunsee.cn
  • WhatWeb:https://whatweb.net/

端口扫描

端口扫描技术通常使用专门的端口扫描工具来进行。可以详细收集目标开放的端口、服务、应用版本、操作系统、活跃主机等多种信息

端口扫描流程:

在这里插入图片描述

端口扫描器

主流方式

  • TCP Connect Scan
  • TCP SYN Scan(半开放)
  • UDP Scan

其他扫描方式

  • TCP Null
  • TCP FIN
  • TCP ACK

服务识别技术

识别端口上运行的服务,识别方式有基于端口、基于banner和基于指纹三种。

基于端口:根据端口默认运行的服务进行判断

基于banner:根据访问端口获取的欢迎页面来判断

基于指纹:根据不同系统不同服务具有不同的TCP/IP协议栈来判断

三种识别方式在准确率和效率上各有不同,实际使用通常会相互配合使用

识别方式 准确率 效率
基于端口
基于banner
基于指纹

Nmap端口扫描器使用

Nmap(Network Mapper),在网络中具有强大的信息收集能力

Nmap具备主机探测、服务/版本检测、操作系统检测、网络路由跟踪、Nmap脚本引擎的功能,在kali中右键鼠标选择“打开终端”输入nmap和对应参数进行使用

基本命令格式: nmap [参数] IP/IP段、主机名

如:nmap -v -sS -o 10.2.2.2

Nmap TCP扫描端口选项:

-sT 使用TCP连接扫描,对目标主机所有端口进行完整的三次握手,如果成功建立连接则端口是开放的

-sS 使用半开连接(SYN stealth)扫描,使用SYN标记位的数据包进行端口探测,收到SYN/ACK包则端口是开放的,收到RST/ACK包则端口是关闭的

-sA TCP ACK扫描是使用ACK标志位数据包,若目标主机回复RST数据包,则目标端口没有被过滤(用于发现防火墙的过滤规则)

-sN TCP NULL扫描不设置标志位,标志头是0,返回RST数据包则端口是关闭的,否则端口是打开过滤状态

-sF TCP FIN扫描只设置FIN标志位。若返回。若返回RST数据包则端口是关闭的,否则端口是打开过滤状态

-sX TCP XMAS扫描设置FIN、PSH、URG标志位,若返回RST数据包则端口是关闭的,否则端口是打开过滤状态

-sM TCP Maimon扫描使用FIN/ACK标识的数据包,端口开放就丢弃数据包,端口关闭则回复RST(BSD)。

-sW TCP窗口扫描,检测目标返回的RST数据包的TCP窗口字段,字段值是正值说明端口是开放状态,字段值为0,则端口关闭

-sI TCP Idle扫描,使用这种技术,将通过僵尸主机发送数据包与目标主机通信

Nmap UDP扫描端口选项:

-sU 使用UDP数据包进行扫描,返回UDP报文,则端口是开放的;返回不可达则端口处于关闭或过滤状态

Nmap目标端口选项:

-p 扫描指定的端口

-F 快速扫描100个常用的端口

-r 顺序扫描,按从小到大的顺序进行端口扫描

Nmap输出选项:

-oN 标准输出为指定的nmap文件

-oX 生成XML格式文件可以转换成HTML文件

-oG 标准输出为指定的gnmap文件

-oA 文件名不用加后缀 三种格式同时输出

其他常用选项:

-sV 检测服务端软件版本信息

-O 检测操作系统信息

-Pn 将所有的主机视为已开启,跳过主机发现过程

-A 探测服务版本、对操作系统进行识别、进行脚本扫描、进行路由探测

-sP 扫描网段中存活的主机

使用UDP探测scanme.nmap.org的DNS(53),SNMP(161),NTP(123)服务服务

nmap -sU scanme.nmap.org -p 53,161,123

获取ip地址段10.10.10.0/24所有在线主机

nmap -sP 10.10.10.0/24

找出192.168.100.0/24网段所有开放80端口的ip,并把结果保存到result中

nmap -sT -p 80 192.168.100.* --open -oG result.txt

常用的nmap命令

  1. 获取远程主机的系统类型及开放端口

    nmap -sS -PO -sV -O <target>
    

    这里的<target>可以是单一ip,或主机名,或域名,或子网

    -sS TCP SYN扫描(又称半开放,或隐身扫描)

    -p0 允许你关闭ICMP pings

    -sV 打开系统版本检测

    -O 尝试识别远程操作系统

    其他选项:

    -A 同时打开操作系统指纹和版本检测,进行综合扫描

    -v 详细输出扫描情况

    nmap -sS -P0 -A -v <target>
    
  2. 列出开放了指定端口的主机列表

    nmap -sT -p 80 192.168.1.* | grep open
    
  3. 在网上寻找所有在线主机

    nmap -sP 192.168.0.*
    
  4. Ping指定范围内的IP地址

    nmap -sP 192.168.1.100-254
    
  5. 在某段子网上查找未占用的Ip(T4表示扫描级别)

    nmap -T4 -sP 192.168.2.0/24 && egrep
    "00:00:00:00:00:00" /proc/net/arp
    
  6. 进行漏洞检测脚本进行漏洞扫描

    nmap --script=vuln 192.168.0.1-254
    
  7. 在局域网上查找Conficker’蠕虫病毒

    nmap -PN -T4 -p139,445 -n -v -script=smb-check-vulns-script-args asfe=1 192.168.0.1-254
    

Nmap六种端口形态

nmap对端口进行扫描中,当nmap向目标主机发送报文并根据返回报文从而认定端口的6种状态的含义(注意:这六种状态只是nmap认为的端口状态,例如:有些主机或者防火墙会返回一些不可靠的报文从而妨碍nmap对端口开放问题的确认)

Open:端口处于开放状态,例如:当nmap使用TCP SYN对目标主机某一范围的端口进行扫描时,我们知道TCP SYN报文是TCP建立连接的第一步,所以,如果目标主机返回SYN+ACK的报文,我们就认为此端口开放了并且使用了TCP服务

Closed:端口处于关闭状态。例如TCP SYN类型的扫描,如果返回RST类型的报文,则端口处于管理状态。这里我们值得注意的是关闭的端口也是可访问的,只是没有上层的服务在监听这个端口,而且,只是在我们扫描的这个时刻为关闭,当我们在另一个时间段进行扫描的时候,这些关闭的端口可能会处于open的状态

Filtered(过滤的):由于报文无法到达指定的端口,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的。当nmap收到icmp报文主机不可达报文(例如:type为3,code为13(communication administratively prohibit)报文)或者目标主机无应答,常常会将目标主机的状态设置为filtered

Unfiltered(未被过滤的):当nmap不能确定端口是否开放的时候所打上的状态,这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没能够被nmap访问。端口被定义为Unfiltered只会发生在TCP ack扫描类型时返回RST的报文。而端口被定义为filtered状态的原因是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,如:type为3,code为13的报文(通常被认为的禁止communication administratively prohibited,或者主机通过多次重复发送没有收到任何回应)

Open|filtered状态:这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如udp,ip protocol,TCP null,fin和xmas扫描类型

Closed|filtered状态:这种状态主要出现在nmap无法区分端口处于closed还是filtered时。此状态只会出现在 IP ID idle scan

masscan端口扫描器使用

简要原理

MASSCAN不建立完整的TCP连接,收到SYN/ACK之后,发送RST结束连接。选项–banner除外

基本使用

单端口扫描
扫描443端口的B类子网
$ Masscan 10.11.0.0/16 -p443
多端口扫描
扫描80或443端口的B类子网
$ Masscan 10.11.0.0/16 -p80,443
扫描一系列端口
扫描22到25端口的B类子网
$ Masscan 10.11.0.0/16 -p22-25
快速扫描

默认情况下,Masscan扫描速度为每秒100个数据包,这是相当慢的。为了增加这速度,只需提供该–rate选项并指定一个值

扫描100个常见端口的B类子网,每秒100000个数据包

$ Masscan 10.11.0.0/16 --ports 1-100 --rate 100000
排除目标

–excludefile参数,包含要避免的范围列表的文件的名称

例:扫描B类子网,但避免在exclude.txt中的

$ Masscan 10.11.0.0/16 --port 1-100 --excludefile exclude.txt
扫描十大端口的网络
$ masscan 10.11.0.0/16 --top-ten --rate 1000000
扫描所有端口的网络
$ masscan 10.11.0.0/16 -p0-65535 --rate 1000000
结果保存

可以使用标准的Unix重定向器将输出发送到文件:

$ Masscan 10.11.0.0/16 --port 1-100 > results.txt

-oX filename:输出到filename的XML

-oG filename:输出到filename在grepable格式

-oJ filename:输出到filename在JOSN格式

Oneforall子域名爆破工具

python oneforall.py --target example.com run	收集

example.com是你想收集的域名

brute.py --target domain.com --word True run	爆破

CDN介绍及绕过

如何检测目标站点是否存在cdn?

  1. 站长工具 - 站长之家
  2. nslookup www.baidu.com
    在这里插入图片描述

常见的cdn绕过方法

  • 子域名查询
  • 国外地址请求
  • 邮件服务查询
  • 遗留文件
    me:输出到filename在grepable格式

-oJ filename:输出到filename在JOSN格式

Oneforall子域名爆破工具

python oneforall.py --target example.com run	收集

example.com是你想收集的域名

brute.py --target domain.com --word True run	爆破

CDN介绍及绕过

如何检测目标站点是否存在cdn?

  1. 站长工具 - 站长之家
  2. nslookup www.baidu.com[外链图片转存中…(img-ORJYWjjo-1771422810510)]

常见的cdn绕过方法

  • 子域名查询
  • 国外地址请求
  • 邮件服务查询
  • 遗留文件
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐