信息收集

信息收集是一件很无聊的事,但是又很有用,上次学校的ctf就挂在信息收集上,现在就慢慢晚上本篇,记录常用的工具手册。

主动信息搜集

nmap

nmap三四层扫描无敌的存在,有大量的脚本可用。
格式:nmap [Scan Type(s)] [Options] {target specification}

主机发现

1
2
3
4
5
6
7
8
9
10
-sL: 计算并显示要扫描的主机
-sn: 只探测主机存活情况而不做更深层的扫描
-Pn: 不做主机发现,默认所有主机都在线
-PS/PA/PU/PY [portlist]: 对指定端口进行TCP SYN/ACK or UDP或SCTP探测
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-PO[protocol list]: 使用Ping
-n/-R:默认有时做反向域名解析,这两个参数是总是不做/做解析
--dns-servers <serv1[,serv2],...>: 指定dns
--system-dns: 使用系统dns解析
--traceroute: 路由追踪

扫描技术

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-PS [portlist] (TCP SYN Ping)
-PA [portlist] (TCP ACK Ping)
-PU [portlist] (UDP Ping)
-PE; -PP; -PM (ICMP Ping Types)
-PR (ARP Ping)
--system-dns (使用系统域名解析器,一般不使用)
-sS (TCP SYN半开扫描)默认
-sT (TCP 全连接扫描)
-sU (UDP扫描)
-sN; -sF; -sX (TCP Null,FIN,and Xmas扫描)
-sA (TCP ACK扫描)
-sW (TCP窗口扫描)
-sM (TCP Maimon扫描)
--scanflags (定制的TCP扫描)可以使用数字,也可以使用URG, ACK,PSH, RST,SYN,and FIN组合
-sI <zombie host[:probeport]> (僵尸扫描)
-sO (IP协议扫描)
-b <ftp relay host> (FTP弹跳扫描)参数格式是: username:password@server:port。 Server
-sV (版本探测)
--allports (不为版本探测排除任何端口)
--version-intensity <intensity> (设置 版本扫描强度)默认7,可选1-9,等级越高准确率越高速度越慢
--version-light (打开轻量级模式) 2级
--version-all (尝试每个探测) 9级
--version-trace (跟踪版本扫描活动) 输出探测数据
-sR (RPC扫描)

服务识别

1
2
3
4
-sV: Probe open ports to determine service/version info
--version-light: Limit to most likely probes for faster identification
--version-all: Try every single probe for version detection
--version-trace: Show detailed version scan activity (for debugging)

系统探测

1
2
3
-O (启用操作系统检测)
--osscan-limit (针对指定的目标进行操作系统检测)
--osscan-guess; --fuzzy (推测操作系统检测结果)

速度时间

1
2
3
4
5
6
7
8
9
10
11
12
--min-hostgroup <milliseconds>; --max-hostgroup <milliseconds>(调整并行扫描组的大小)
--min-parallelism <milliseconds>; --max-parallelism <milliseconds>(调整探测报文的并行度)
--min-rtt-timeout <milliseconds>, --max-rtt-timeout <milliseconds>,--initial-rtt-timeout <milliseconds> (调整探测报文超时)
--host-timeout <milliseconds> (放弃低速目标主机)
--scan-delay <milliseconds>; --max-scan-delay <milliseconds>(调整探测报文的时间间隔)
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (设置时间模板)
模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、aggressive (4)和insane(5)。
前两种模式用于IDS躲避,Polite模式降低了扫描
速度以使用更少的带宽和目标主机资源。默认模式为Normal,因此-T3
实际上是未做任何优化。Aggressive模式假设用户具有合适及可靠的网络从而加速
扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。
-f (报文分段); --mtu (使用指定的MTU)

反ID(P)S,firewall

1
2
3
4
5
6
7
-S <IP_Address> (源地址哄骗)
-e <interface> (使用指定的接口)
--source-port|-g <portnumber> (源端口哄骗)
--data-length <number> (发送报文时 附加随机数据)
--ttl <value> (设置IP time-to-live域)
--randomize-hosts (对目标主机的顺序随机排列)
--spoof-mac <mac address,伪造源mac地址,正确的--spoof-mac参数有, Apple,0,01:02:03:04:05:06, deadbeefcafe,0020F2, 和Cisco.

结果输出

1
2
3
4
5
6
7
8
9
10
11
12
-oN <filespec> (标准输出到指定文件)
-oX <filespec> (XML输出)
-oG <filespec> (Grep输出)
-oA <basename> (输出至所有格式)
-v (提高输出信息的详细度)用vv会更详细
-d [level] (提高或设置调试级别)共9级
--packet-trace (跟踪发送和接收的报文)
--iflist (列举接口和路由)
--append-output (在输出文件中添加)
--resume <filename> (继续中断的扫描)需指定之前的标准/Grep输出文件
--stylesheet <path or URL> (设置XSL样式表,转换XML输出)
--no-stylesheet (忽略XML声明的XSL样式表)

杂项设置

1
2
3
4
5
6
7
-6 (启用IPv6扫描)
-A (激烈扫描模式选项)含-O,-sV
--datadir <directoryname> (说明用户Nmap数据文件位置)
--send-eth (使用原以太网帧发送)
--send-ip (在原IP层发送)
--privileged (假定用户具有全部权限)
--interactive (在交互模式中启动)

指定扫描目标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
	CIDR类型
192.168.0.1/24 这里的24可以换成X ,1<=X<=32
短横线型
192.168.0-32.1-254 每一段都可以使用短横线指点范围
逗号类型
192.168.0.1,3,5,9
多种类型
hia-hia-hia.com,192.168.0.1/29,192.168.2.3
文件类型
-iL <inputfilename> 从文件中读取,其中每种地址以空格,换行,制表符分隔(可以使用-代表标准输入)
-iR <hostnum> 设置主机数来随机选择目标扫描
特殊类型
--exclude <host1[, 对上面的范围用此参数排除
--excludefile <excludefile> 指定要排除的目标

指定端口

1
2
3
4
-p <port ranges>: 指定端口,默认指定两种协议,可以指定每种协议的:
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: 只扫描常用端口(1200个),默认的端口有1600个
-r: 默认是按随机顺序来扫描的,此选项使用顺序扫描

改变状态

1
2
3
4
5
6
7
程序在执行时,可以使用如下键改变状态:
v / V
增加 / 减少细节
d / D
提高 / 降低调试级别
p / P
打开/ 养老报文跟踪

用法举例

1
2
3
4
5
6
7
8
   nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -P0 -p 80
nmap -v scanme.nmap.org
nmap -sS -O scanme.nmap.org/24
nmap -sV -p 22,
nmap -v -iR 100000 -P0 -p 80
nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

ping

1
Ping  baidu.com			#就用来检查网络的联通性

netmask

1
netmask -s <域名>			查询标准的IP地址及子网掩码

只有在特殊情况下才需要这样查

dmitry

1
dmitry -wnpb <域名>			查询IP,whois,开放的端口等

fping

命令功能: fping命令用来扫描多个主机是否在线
命令格式:fping [参数] [ping的目标]
例:

1
2
3
4
5
6
7
8
9
10
11
12
fping 163.com
fping 123.58.180.8
fping 163.com zjgsu.edu.cn baidu.com
fping 123.58.180.8 202.96.99.58 111.13.101.208 192.168.1.1
fping -g 202.96.99.0/24 或 202.96.99.0 202.96.99.255
-g //指定目标主机列表

fping -c 3 -b 65230 -f ip.txt //-f 读取文件 -c 数据包个数 -b 数据包大小
fping -r 1 123.58.180.8 202.96.99.58 192.168.1.154
-r 1 //设置重试次数为1,默认为3
fping -s 163.com zjgsu.edu.cn baidu.com
-s //打印累计统计信息

hping3

命令功能:防火墙测试、端口扫描、 Idle扫描、拒绝服务攻击、 文件传输、木马功能,其实主要是这个扫描能力强大,支持多种协议而已
命令格式:hping3 主机 [参数]
例:

1
2
3
4
5
6
7
8
9
10
hping3 -1 163.com -c 10
hping3 -1 123.58.180.8 -c 10
-1 //发送ICMP数据包
-c //发送10个数据包
hping3 -1 -i 4 192.168.1.1
-i 4 //设置发送数据包的时间间隔为4秒
hping3 -1 -i u1 123.58.180.8
-i u1 //每1微秒发送一个包,这是一种攻击行为,大家慎用
hping3 -1 163.com -t 100
-t 100 //设置TTL值为100

traceroute

命令功能: traceroute命令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes。
命令格式: traceroute [参数] [主机名或IP地址]
例:

1
2
3
4
5
6
7
8
9
10
traceroute 163.com
traceroute -m 50 163.com
-m 50 //设置检测数据包的最大存活数值TTL为50

traceroute -q 4 www.baidu.com
-q 4 //把探测包的个数设置为4
traceroute -n sina.com
-n //直接使用IP地址而非主机名称
traceroute -w 3 sina.com
-w 3 //把对外发探测包的等待响应时间设置为3秒,防止被检查出来

arping

命令功能: arping命令可以用来测试局域网各个主机之间的连通性,不能用于测试其是否能与互联网连通
命令格式: arping [参数][目的地址 ]
例:

1
2
3
4
5
6
7
8
9
10
11
12
route -n  或 netstat –r  //查看自己的网关ip地址
arping 192.168.1.1
arping -c 3 192.168.1.1
-c 3 //指定发送3次arp请求
arping -i eth0 -c 3 192.168.1.1
-i eth0 //当有多个网卡是指定网卡为eth0
arping -c 10 -r 192.168.1.1
-r //只显示MAC地址
arping -c 3 -i eth0 -t 00:0c:29:4d:e5:97 192.168.1.105
-t //测试00:0c:29:4d:e5:97和192.168.1.105是否绑定在一起
arping -c 3 -i eth0 -T 192.168.1.105 00:0c:29:4d:e5:97
-T //测试192.168.1.105和00:0c:29:4d:e5:97是否绑定在一起

netdiscover

命令功能: Netdiscover是一个主动/被动的ARP侦查工具。使用Netdiscover工具可以在网络上扫描IP地址,ARP侦查工具Netdiscover检查在线主机或搜索为它们发送的ARP请求。
命令格式: netdiscover [参数]?
例:

1
2
3
4
5
6
7
8
netdiscover				//扫描局域网中所有主机
netdiscover -i eth0 -r 192.168.1.0/24
-i eth0 //指定当前网卡为eth0
-r //指定扫描范围
netdiscover -p -i eth0 -r 192.168.1.0/24
-p //被动模式,不发送arp包
netdiscover -l ip.txt
-l //指定扫描范围列表文件

unicornscan

功能: Unicornscan是信息收集和关联分析引擎,它能对TCP/IP设备发起主动扫描,并根据其响应进行分析。主要特点是精确、灵活而且高效,尤其对UDP端口扫描。
例:

1
2
3
4
5
6
unicornscan -m U -Iv 192.168.1.104:1-100   
-m U 扫描方式为UDP扫描
-Iv 查看程序的详尽输出
1-100 扫描1-100端口
unicornscan -m U -Iv 192.168.1.0/24:1-100 -r 1000
-r 每秒发送1000个数据包,默认是300

amap

功能:检测在指定端口上运行的应用程序信息

1
2
3
amap -q 192.168.1.104 -p 80			//检测目标主机80端口上运行的应用程序
amap -bq 192.168.1.104 1-80 //检测目标主机1-80端口上运行的应用程序,
-b获取banner信息 -q不显示关闭的端口信息

被动信息搜集

nslookup

他可以直接进行查询,也可以进入交互式界面(如下图),里面可以设置要使用的dns服务器,设置要查询的内容:

dig

用@直接指定域名服务器最后接查询的类型,可以使用显示语法对结果进行筛选,如下面第二条命令,详细的可以查看帮助信息:


使用-x参数可进行反向解析:

可以这样来查询bind的版本信息,看看是否能够利用dns服务器的漏洞:

这样可以做迭代查询的追踪,发现dns解析存在的问题:

这个可以对配置不当的dns服务器做区域传输,得到所有的解析记录(现在很少见了吧):

host

在这里也是使用TCP的方式做传输:

fierce

看名称就知道这是做暴力破解子域的:

dnsdict6

可以对ipv6做查询,而且也能对ipv4做查询,内置强大的字典,速度也很快,不过在2016里面被删除了,需要自己下载,安装命令如下:

1
2
3
4
5
6
apt-get install libpcap0.8-dev libssl-dev
wget http://www.thc.org/releases/thc-ipv6-1.8.tar.gz
tar xzvf thc-ipv6-1.8.tar.gz
cd thc-ipv6-1.8/
make
sudo make install

具体用法可以使用-h参数查看,破解的准确率,数量和速度都很快的:

dnsenum

结果看着挺舒服的,当指定字典后,他会先进行标准的查询,然后尝试对每一个域名服务器做区域传输,最后使用字典破解:

dnsmap

如图。。。

dnsecon

它支持的查询类型挺多的,可以查看帮助:

1
2
3
4
5
6
7
8
9
std       SOA, NS, A, AAAA, MX and SRV if AXRF on the NS servers fail.
rvl Reverse lookup of a given CIDR or IP range.
brt Brute force domains and hosts using a given dictionary.
srv SRV records.
axfr Test all NS servers for a zone transfer.
goo Perform Google search for subdomains and hosts.
snoop Perform cache snooping against all NS servers for a given domain, testin all with file containing the domains, file given with -D option.
tld Remove the TLD of given domain and test against all TLDs registered in IANA.
zonewalk Perform a DNSSEC zone walk using NSEC records.

使用如下:

whois

使用方式: