Kali Linux 秘籍 第四章 信息收集

第四章 信息收集

做者:Willie L. Pritchett, David De Smetlinux

译者:飞龙ios

协议:CC BY-NC-SA 4.0git

简介

攻击的重要阶段之一就是信息收集。为了可以实施攻击,咱们须要收集关于目标的基本信息。咱们得到的信息越多,攻击成功的几率就越高。github

我也强调这一阶段的一个重要方面,它就是记录。在编写这本书的时候,最新的Kali发行版包含了一组工具用于帮助咱们核对和组织来自目标的数据,容许咱们更好地侦查目标。相似Maltego CaseFile和 KeepNote的工具就是一个例子。web

4.1 服务枚举

在这个秘籍中,咱们将会展现一些服务枚举的小技巧。枚举是容许咱们从网络收集信息的过程。咱们将要研究DNS枚举和SNMP枚举技术。DNS枚举是定位某个组织的全部DNS服务器和DNS条目的过程。DN枚举容许咱们收集有关该组织的重要信息,例如用户名、计算机名称、IP地址以及其它。为了完成这些任务咱们会使用DNSenum。对于SNMP枚举,咱们会使用叫作SnmpEnum的工具,它是一个强大的SNMP枚举工具,容许咱们分析网络上的SNMP流量。安全

操做步骤

让咱们以DNS枚举做为开始:服务器

  1. 咱们使用DNSenum进行DNS枚举。为了开始DNS枚举,打开Gnome终端,而且输入一下命令:网络

    cd /usr/bin
    ./dnsenum --enum adomainnameontheinternet.com
> 请不要在不属于你的公共网站或者不是你本身的服务器上运行这个工具。这里咱们将`adomainnameontheinternet.com`做为一个例子,你应该替换掉这个目标。要小心!
  1. 咱们须要获取信息输出,例如主机、名称服务器、邮件服务器,若是幸运的话还能够获得区域转换:dom

  2. 咱们可使用一些额外的选项来运行DNSenum,它们包括这些东西:ssh

    • -- threads [number]容许你设置一次所运行的线程数量。

    • -r容许你开启递归查找。

    • -d容许你设置在WHOIS请求之间的时间延迟,单位为秒。

    • -o容许咱们制定输出位置。

    • -w容许咱们开启WHOIS查询。

    更多WHOIS上的例子,请见WHOIS的维基百科

  3. 咱们可使用另外一个命令snmpwalk来检测Windows主机。Snmpwalk是一个使用SNMP GETNEXT请求在网络实体中查询信息树的SNMP应用。在命令行中键入下列命令:

    snmpwalk -c public 192.168.10.200 -v 2c
  4. 咱们也能够枚举安装的软件:

    snmpwalk -c public 192.168.10.200 -v 1 | grep  hrSWInstalledName
    
    HOST-RESOURCES-MIB::hrSWInstalledName.1 = STRING: "VMware  Tools"
    HOST-RESOURCES-MIB::hrSWInstalledName.2 = STRING: "WebFldrs"
  5. 以及使用相同工具枚举开放的TCP端口:

    snmpwalk -c public 192.168.10.200 -v 1 | grep tcpConnState |  cut -d"." -f6 | sort –nu
    
    21
    25
    80
    443
  6. 另外一个经过SNMP收集信息的工具叫作snmpcheck

    cd /usr/bin
    snmpcheck -t 192.168.10.200
  7. 为了使用fierce(一个尝试多种技术来寻找全部目标所用的IP地址和域名的工具)进行域名扫描,咱们能够键入如下命令:

    cd /usr/bin
    fierce -dns adomainnameontheinternet.com
> 请不要在不属于你的公共网站或者不是你本身的服务器上运行这个工具。这里咱们将`adomainnameontheinternet.com`做为一个例子,你应该替换掉这个目标。要小心!
  1. 为了以指定的词语列表进行相同的操做,键入如下命令:

    fierce -dns adomainnameontheinternet.com -wordlist  hosts.txt -file /tmp/output.txt
  2. 为了在SMTP服务器上启动用户的SMTP枚举,键入如下命令:

    smtp-user-enum -M VRFY -U /tmp/users.txt -t 192.168.10.200
  3. 咱们如今能够记录所得到的结果了。

4.2 判断网络范围

使用上一节中咱们所收集的信息,咱们就能着眼于判断目标网络的IP地址范围。在这个秘籍中咱们将要探索完成它所用的工具。

操做步骤

让咱们经过打开终端窗口来开始执行判断网络范围的步骤:

  1. 打开新的终端窗口,而且键入如下命令:

    dmitry -wnspb targethost.com -o /root/Desktop/dmitry-result
  2. 完成以后,咱们应该在桌面上获得了一个文本文件,名称为dmitry-result.txt,含有收集到的目标信息:

  3. 键入如下命令来执行ICMP netmask请求:

    netmask -s targethost.com
  4. 使用scapy,咱们就能够执行并行路由跟踪。键入如下命令来启动它:

    scapy
  5. scapy启动以后,咱们如今能够输入如下函数:

    ans,unans=sr(IP(dst="www.targethost.com/30", ttl=(1,6))/TCP()
  6. 咱们能够输入如下函数来将结果展现为表格:

    ans.make_table( lambda (s,r): (s.dst, s.ttl, r.src) )
结果以下:
216.27.130.162  216.27.130.163  216.27.130.164 216.27.130.165  
1 192.168.10.1   192.168.10.1    192.168.10.1   192.168.10.1     
2 51.37.219.254  51.37.219.254   51.37.219.254  51.37.219.254   
3 223.243.4.254  223.243.4.254   223.243.4.254  223.243.4.254   
4 223.243.2.6    223.243.2.6     223.243.2.6    223.243.2.6     
5 192.251.254.1  192.251.251.80  192.251.254.1  192.251.251.80
  1. 咱们须要键入如下函数来使用scapy得到TCP路由踪影:

    res,unans=traceroute(["www.google.com","www.Kali- linux.org","www.targethost.com"],dport=[80,443],maxttl=20, retry=-2)
  2. 咱们只须要键入如下函数来将结果展现为图片:

    res.graph()
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-2-2.jpg)
  1. 保存图片只须要下列命令:

    res.graph(target="> /tmp/graph.svg")
  2. 咱们能够生成3D展现的图片,经过键入下列函数来实现:

    res.trace3D()
  3. 键入如下命令来退出scapy:

    exit()
  4. 在得到结果以后,咱们如今能够对其作记录。

工做原理

在步骤1中,咱们使用了dmitry来获取目标信息。参数-wnspub容许咱们在域名上执行WHOIS查询,检索Netcraft.com的信息,搜索可能的子域名,以及扫描TCP端口。选项-o容许咱们将结果保存到文本文件中。在步骤3中,咱们创建了一个简单的ICMP netmask请求,带有-s选项,来输出IP地址和子网掩码。接下来,咱们使用scapy来执行目标上的并行路由跟踪,并在表格中展现结果。在步骤7中,咱们在不一样主机的80和443端口上执行了TCP路由跟踪,而且将最大TTL设置为20来中止这个过程。在得到结果以后,咱们建立了它的图片表示,将它保存到临时目录中,同时建立了相同结果的3D表示。最后,咱们退出了scapy。

4.3 识别活动主机

在尝试渗透以前,咱们首先须要识别目标网络范围内的活动主机。

一个简单的方法就是对目标网络执行ping操做。固然,这能够被主机拒绝或忽略,这不是咱们但愿的。

操做步骤

让咱们打开终端窗口,开始定位活动主机:

  1. 咱们可使用Nmap来寻找某个主机打开或关闭,像下面这样:

    nmap -sP 216.27.130.162
    
    Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-04-27  23:30 CDT
    Nmap scan report for test-target.net (216.27.130.162)
    Host is up (0.00058s latency).
    Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
  2. 咱们也可使用Nping(Nmap组件),它提供给咱们更详细的结果:

    nping --echo-client "public" echo.nmap.org
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-3-1.jpg)
  1. 咱们也能够向指定端口发送一些十六进制数据:

    nping -tcp -p 445 –data AF56A43D 216.27.130.162

4.4 寻找开放端口

在了解目标网络范围和活动主机以后,咱们须要执行端口扫描操做来检索开放的TCP和UDP端口和接入点。

准备

完成这个秘籍须要启动Apache Web服务器。

操做步骤

让咱们经过打开终端窗口,开始寻找开放端口:

  1. 运行终端窗口并输入下列命令做为开始:

    nmap 192.168.56.101
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-4-1.jpg)
  1. 咱们也能够显式指定要扫描的端口(这里咱们指定了1000个端口):

    nmap -p 1-1000 192.168.56.101
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-4-2.jpg)
  1. 或指定Nmap来扫描某个组织全部网络的TCP 22端口:

    nmap -p 22 192.168.56.*
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-4-3.jpg)
  1. 或者以特定格式输出结果:

    nmap -p 22 192.168.10.* -oG /tmp/nmap-targethost-tcp445.tx

工做原理

这个秘籍中,咱们使用Nmap来扫描咱们网络上的目标主机,并判断开放了哪一个端口。

更多

Nmap的GUI版本叫作Zenmap,它能够在终端上执行zenmap命令,或者访问Applications | Kali Linux | Information Gathering | Network Scanners | zenmap来启动。

4.5 操做系统指纹识别

到信息收集的这个步骤,咱们应该记录了一些IP地址,活动主机,以及所识别的目标组织的开放端口。下一步就是判断活动主机上运行的操做系统,以便了解咱们所渗透的系统类型。

准备

须要用到Wireshark捕获文件来完成这个秘籍的步骤2。

操做步骤

让咱们在终端窗口中进行OS指纹识别:

  1. 咱们可使用Nmap执行下列命令,带有-O命令来开启OS检测功能:

    nmap -O 192.168.56.102
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-5-1.jpg)
  1. 使用p0f来分析Wireshark捕获文件:

    p0f -s /tmp/targethost.pcap -o p0f-result.log -l
    
    p0f - passive os fingerprinting utility, version 2.0.8
    (C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns  
    <wstearns@pobox.com>
    p0f: listening (SYN) on 'targethost.pcap', 230 sigs (16  generic), rule: 'all'.
    [+] End of input file.

4.6 服务指纹识别

判断运行在特定端口上的服务是目标网络上成功渗透的保障。它也会排除任何由OS指纹之别产生的疑惑。

操做步骤

让咱们经过开始终端窗口来进行服务指纹识别:

  1. 打开终端窗口并键入如下命令:

    nmap -sV 192.168.10.200
    
    Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-03-28  05:10 CDT
    Interesting ports on 192.168.10.200:
    Not shown: 1665 closed ports
    PORT STATE SERVICE VERSION
    21/tcp open ftp Microsoft ftpd 5.0
    25/tcp open smtp Microsoft ESMTP 5.0.2195.6713
    80/tcp open http Microsoft IIS webserver 5.0
    119/tcp open nntp Microsoft NNTP Service 5.0.2195.6702  (posting ok)
    135/tcp open msrpc Microsoft Windows RPC
    139/tcp open netbios-ssn
    443/tcp open https?
    445/tcp open microsoft-ds Microsoft Windows 2000 microsoft-ds
    1025/tcp open mstask Microsoft mstask
    1026/tcp open msrpc Microsoft Windows RPC
    1027/tcp open msrpc Microsoft Windows RPC
    1755/tcp open wms?
    3372/tcp open msdtc?
    6666/tcp open nsunicast Microsoft Windows Media Unicast  Service (nsum.exe)
    
    MAC Address: 00:50:56:C6:00:01 (VMware)
    Service Info: Host: DC; OS: Windows
    
    Nmap finished: 1 IP address (1 host up) scanned in 63.311  seconds
  2. 咱们也可使用amap来识别运行在特定端口或端口范围内的应用,好比下面这个例子:

    amap -bq 192.168.10.200 200-300
    
    amap v5.4 (www.thc.org/thc-amap) started at 2012-03-28  06:05:30 - MAPPING mode
    Protocol on 127.0.0.1:212/tcp matches ssh - banner: SSH-2.0- OpenSSH_3.9p1\n
    Protocol on 127.0.0.1:212/tcp matches ssh-openssh - banner:  SSH-2.0-OpenSSH_3.9p1\n
    amap v5.0 finished at 2005-07-14 23:02:11

4.7 Maltego 风险评估

在这个秘籍中,咱们将要开始使用Maltego的特殊Kali版本,它能够在信息收集阶段协助咱们,经过将得到的信息以易于理解的形式展现。Maltego是开源的风险评估工具,被设计用来演示网络上故障单点的复杂性和严重性。它也具备从内部和外部来源聚合信息来提供简洁的风险图表的能力。

准备

须要一个帐号来使用Maltego。访问https://www.paterva.com/web6/community/来注册帐号。

操做步骤

让咱们从启动Maltego开始:

  1. 访问 Applications | Kali Linux | Information Gathering | OSINT Analysis | maltego来启动Maltego。窗口以下:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-1.jpg)
  2. 点击开始向导的Next来查看登陆细节:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-2.jpg)
  3. 点击Next来验证咱们的登陆凭证。验证以后,点击Next以继续:

  4. 选择transform seed设置,以后点击Next

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-3.jpg)
  5. 这个向导在跳到下个页面以前会执行屡次操做。完成以后,选择Open a blank graph and let me play around并点击Finish

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-4.jpg)
  6. 最开始,将Domain实体从Palette组件拖放到New Graph标签页中。

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-5.jpg)
  7. 经过点击建立的Domain实体来设置目标域名,而且编辑Property View中的Domain Name属性。

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-6.jpg)
  8. 目标一旦设置好,咱们就能够开始收集信息了。最开始,右键点击建立的Domain实体,而且选择Run Transform来显示可用的选项:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-7.jpg)
  9. 咱们能够选择查找DNS名称,执行WHOIS查询,得到邮件地址,以及其它。或者咱们还能够选择运行下面展现的所有转换。

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-8.jpg)
  10. 咱们甚至能够经过在连接的子节点上执行相同操做,来得到更多信息,直到咱们找到了想要的信息。

工做原理

在这个秘籍中,咱们使用Maltego来映射网络。Maltego是一个开源工具,用于信息收集和取证,由Paterva出品。咱们经过完成开始向导来开始这个秘籍。以后咱们使用Domain实体,经过将它拖到咱们的图表中。最后,咱们让Maltego完成咱们的图标,而且查找各类来源来完成任务。Maltego十分有用,由于咱们能够利用这一自动化的特性来快速收集目标信息,例如收集邮件地址、服务器的信息、执行WHOIS查询,以及其它。

社区版只容许咱们在信息收集中使用75个转换。Maltego的完整版须要$650。

更多

启用和禁用转换能够经过Manage标签栏下方的Transform Manager窗口设置:

一些转换首先须要接受才可使用。

4.8 映射网络

使用前面几个秘籍得到的信息,咱们就能够建立该组织网络的蓝图。在这一章的最后一个·秘籍中,咱们会了解如何使用Maltego CaseFile来可视化地编译和整理所得到的信息。

CaseFile就像开发者的网站上那样,至关于不带转换的Maltego,但拥有大量特性。多数特性会在这个秘籍的“操做步骤”一节中展现。

操做步骤

当咱们从启动CaseFile来开始:

  1. 访问Applications | Kali Linux | Reporting Tools | Evidence Management | casefile来启动CaseFile。

  2. 点击CaseFile应用菜单的New来建立新的图表:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-1.jpg)
  3. 就像Maltego那样,咱们将每一个实体从Palette组建拖放到图表标签页中。让咱们从拖放Domain实体以及修改Domain Name属性来开始。

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-2.jpg)
  4. 将鼠标指针置于实体上方,而且双击注解图标来添加注解。

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-3.jpg)
  5. 让咱们拖放另外一个实体来记录目标的DNS信息:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-4.jpg)
  6. 连接实体只须要在实体以前拖出一条线:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-5.jpg)
  7. 按需自定义连接的属性:

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-6.jpg)
  8. 重复步骤5~7来向图中添加更多关于该组织网络的信息。

    ![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-7.jpg)
  9. 最后咱们保存了信息图表。图表的记录能够在以后打开和编辑,若是咱们须要的话,和咱们从已知目标得到更多信息的状况同样。

工做原理

在这个秘籍中,咱们使用Maltego CaseFile来映射网络。CaseFile是个可视化的智能应用,能够用于判断数百个不一样类型信息之间的关系和现实世界的联系。它的本质是离线情报,也就是说它是个手动的过程。咱们以启动CaseFile而且建立新的图表做为开始。接下来,咱们使用了收集到或已知的目标网络信息,而且开始向图表中添加组件来作一些设置。最后一保存图表来结束这个秘籍。

更多

咱们也能够加密图表记录,使它在公众眼里更安全。为了加密图表,须要在保存的时候选择Encrypt (AES-128)复选框并提供一个密码。

相关文章
相关标签/搜索