信息收集是一件很无聊的事,但是又很有用,上次学校的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
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 使用方式: