Kali Linux渗透测试——信息收集

详细介绍渗透测试中信息搜集的基本思路和常用方法,包括主动信息搜集和被动信息搜集两个方面
摘要由CSDN通过智能技术生成

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

渗透测试标准(PTES:http://www.pentest-standard.org)的七个阶段:

1.前期交互阶段:讨论确定渗透测试范围、方式、限制条件等
2.情报收集阶段:通过主被动信息收集,获取目标系统的服务、系统配置、网络拓扑等
3.威胁建模阶段:根据收集的信息,确认合适的渗透测试方法
4.漏洞分析阶段:分析目标系统漏洞,编写漏洞利用代码,确定可以突破的攻击点
5.渗透攻击阶段:入侵系统,获取控制权
6.后渗透测试阶段:扩大攻击范围,入侵核心服务器,预置后门,实现持续控守,挖掘目标系统更多具有价值的信息
7.生成渗透测试报告:汇集关键情报、漏洞信息,分析安全防御系统的薄弱环节、补漏及升级方案等

一、被动信息收集

被动信息收集即不向目标系统进行探测,不会留下任何痕迹。通过网络、公开渠道进行信息收集 。收集的内容包括IP地址段、域名信息、邮件地址、⽂档图⽚数据、公司地址、公司组织架构、联系电话 / 传真、⼈员姓名 / 职务、目标系统使⽤用的技术架构、公开的商业信息等。

(一)DNS信息收集

1.域名是分级的概念,而FQDN是域名下的主机(如:www.baidu.com),注意两者不同。
2.域名记录类型:A、CNAME、PTR、MX、NS、TXT、TTL
3.DNS查询工具

  • nslookup
    eg:nslookup -type=ns baidu.com 8.8.8.8
  • dig (相比于nslookup准确性更高,功能更全)
    eg:
    dig @8.8.8.8 www.sina.com mx:向8.8.8.8服务器请求域名解析
    dig +trace baidu.com:由本机迭代查询域名
    dig -x <ip> +short:反查ip对应的域名 (PTR记录),+short可以简略输出,在写批量反查脚本时很有用
  • Amass
    由OWASP维护的安全项目,使用多种开源信息收集和主动侦察技术,拥有更强大的资产发现和子域名挖掘功能。Amass下分intel、enum、viz、track、db、dns等六个子命令,intel用于发现目标资产,enum用于枚举子域名,viz将枚举结果可视化,track用于比较两次枚举结果的差异,db用于管理Amass收集的信息库,dns用于解析域名。
    传送门:https://github.com/OWASP/Amass
    eg:
    amass intel -list:列出所有用于发现目标资产的源和获取方式
    amass intel -active -src -whois -d sina.com:采用主动扫描技术,横向发现sina.com所属机构的更多资产,并注明信息来源
    amass enum -active -ip -d sina.com:采用主动扫描技术,纵向枚举sina.com子域名,并列出域名对应的ip地址
    amass enum -active -d sina.com -brute -w subdomains-top1million-5000.txt -ip -o results.txt
    注意:Amass多次查询后IP可能被BAN
  • 在线查询工具:https://www.ping.cn/dns

4.DNS字典爆破

5.DNS域名注册信息

6.CDN、云平台

CDN及云平台主机并非公司的固有资产,实操时首先要对其进行判断,及时排除或绕过,避免事倍功半。

  • ping:如果响应返回的主机域名和ping请求的域名不同,则为应用了CDN
  • nslookup:如果查询的域名有CNAME记录,且解析出有多个IP地址,则为应用了CDN
  • 在线查询工具:
    http://ping.chinaz.com/
    https://www.ping.cn/dns
    如果查询结果为多个ip,或者发现多个地点ping检测返回不同的ip,则为应用了CDN

(二)搜索引擎信息收集

1.Shodan
全球最早开放的网络空间搜索引擎,主要针对服务器、网络摄像头、交换机、路由器等网络基础设备的IP做扫描,侧重于主机层面,常见filter:net、city、country、port、os、hostname、server
eg:
net:211.144.145.1/24 county:CN city:beijing port:22 os:windows hostname:www.baidu.com server:apache HTTP/1.1 200 OK

2.Google
常见filter:+内容、-内容、intitle、intext、inurl、site、filetype

注意:
+-与后边的内容之间不能有空格,+内容内容的检索结果是相同的

② 关键字之间的空格相当于逻辑与,大写OR表示逻辑或

③ 如果想同时检索一个类别中得多个参数,则用allintitle、allintext、allinurl,或者多个条件相与

④ google目前不支持country、city等定位关键词检索

eg:
intitle:"netbotz appliance" "ok" inurl:qq.txt

allintext:course math senior 效果等同于 intext:course intext:math intext:senior

3.钟馗之眼
中国首个半开放式的网络空间搜索引擎,由知道创宇创建,国产撒旦,主要针对网络设备指纹、域名、web服务器进行扫描,侧重于WEB应用层面,常见filter:cider、city、country、port、os、hostname、site、device、app、ver
eg:
app:apache ver:2.4 cider:211.144.145.1/24 county:CN city:beijing os:windows site:baidu.com

在高级搜索中有图形化界面可以使用

4.FOFA
由白帽汇推出了网络空间资产搜索引擎,主要针对路由器、交换机、防火墙等网络资产,常见filter:title、ip、port、ports、body、app、host、region、country
eg:
region="北京" && host="www.baidu.com" && app="apache" || app="nginx && ports="3389,80,445"

5.Censys
由密歇根大学和Rapid7公司共同合作完成,项目创建之初旨在用于学术研究,其所有数据都是免费的,除了针对网络设备作扫描外,还可以针对域名和证书进行查询,常见filter:protocols、tags、“<ip>”、location,支持and、or、not
eg:
protocols:("23/telnet" or "21/ftp") tags:scada location.country_code:US 80.http.get.status_code:[200 TO 300]

(三)公开漏洞信息平台

一些公开漏洞信息平台公布有系统和软件的最新漏洞信息,这对于1day漏洞的挖掘和利用非常有用,常见的平台如下:

  • Metasploit
    基于Metasploit相应模块进行漏洞利用(搜索模块如:search ms14-068

  • Exploit-DB
    在Kali中searchsploit或在 Exploit-DB官网 搜索Exp (如:ms14-068),在Exp基础上进行漏洞利用(可能需要对Exp进行修改、编译等)

  • 漏洞分析网站
    网上有很多漏洞分析的网站,公布有最新漏洞信息、PoC等,如:

    知道创宇的漏洞分享学习平台:Seebug
    国家信息安全漏洞共享平台:CNVD
    美国国家计算机通用漏洞数据库:NVD
    非常好用的漏洞信息公开平台:CX Security

  • Microsoft官方文档
    微软安全公告是微软官方公布的漏洞信息文档,包括MS编号漏洞的详细情况及相应补丁信息,最新的CVE漏洞信息可以在安全更新指南中了解

(四)METADATE

图片的exif信息,可以用exiftool工具查看或修改。

二、主动信息收集

直接与目标系统交互通信,无法避免留下访问的痕迹,但可以使用第三方电脑进行探测,如控制僵尸转发扫描包。

(一)主机发现

1.二层发现
利用ARP协议发包探测,扫描速度快、可靠,但是不可路由

  • arping:查看ip对应的mac地址。
    eg:arping -c 1 -R 1.1.1.1
  • netdiscover:专用于二层发现,可用于主被动扫描,注意主动扫描行为容易暴露。
    eg:
    主动发现:netdiscover -i eth0 -r 1.1.1.0/24
    被动发现:netdiscover -p
  • scapy:可以作为单独工具使用,也可作为python包进行调用,可以进行抓包、注入网络流量等多种操作。

2. 三层发现
利用IP、ICMP协议发包探测,可路由,但是速度比二层发现慢,容易被边界防火墙过滤。

  • ping
  • fping:ping的升级版本,可以扫描多个地址。
    eg:fping -g 192.168.1.1 192.168.1.10
  • hping:能够发送几乎任意的tcp/ip包,功能强大但是每次只能扫描一个目标。
    eg:hping3 1.1.1.1 --icmp -c 2
  • nmap
    eg:nmap -sn 1.1.1.1-254

3. 四层发现
利用TCP、UDP协议发包探测,可路由且结果可靠,不太可能被防护墙过滤,甚至能发现所有端口都被过滤的主机,但是扫描速度较慢。

  • TCP发现
    未经请求的ACK-RST
    SYN-SYN/ACK、RST
    eg:
    nmap 1.1.1.1-254 -PU53 -sn
    nmap 1.1.1.1-254 -PA80 –sn
  • UDP发现
    ICMP端口不可达,UDP包一去不复返,假设ICMP响应代表发现主机,目标系统过滤ICMP包时可能产生误判。
    eg:hping3 --udp 1.1.1.1 -c 1

(二)端口扫描

端口对应网络服务及应用端程序,但是不能仅凭借端口来判断服务。

1.TCP端口扫描

  • 隐蔽扫描—SYN:不建立完整连接,应用日志不记录扫描行为。
    eg:
    nmap -sS -iL iplist.txt -p 80,21,22,23
    hping3 1.1.1.1 --scan 80,21,25,443 -S
    scapy: sr1(IP(dst="192.168.60.3")/TCP(dport=80),timeout=1,verbose=1)
  • 全连接端口扫描:
    eg:
    scapy : sr1(IP(dst="192.168.20.2")/TCP(dport=22,flags='S'))
    nmap -sT 1.1.1.1 -p 80,21,25 #默认扫描常用的1000个端口
    nc -nv -w 1 -z 192.168.60.4 1-100
  • 僵尸扫描:十分隐蔽,可以伪造源地址,但是僵尸机条件必须满足:闲置系统,且IPID递增
    发现僵尸机:nmap -p445 192.168.1.133 --script=ipidseq.nse
    扫描目标:nmap 172.16.36.135 -sI 172.16.36.134 -Pn -p 0-100

僵尸扫描原理open
僵尸扫描原理close

图1 僵尸扫描原理

2.UDP端口扫描

  • nmap
    eg:namp -sU 1.1.1.1 -p 22
  • scapy
    eg:sr1(IP(dst="1.1.1.1")/UDP(dport=53),timeout=1,verbose=1)

(三)服务扫描

1. BANNER信息扫描
Banner中包含了软件开发商、软件名称、服务类型、版本号等信息,通过软件版本,可以直接发现已知的漏洞。

  • nc
    eg:nc -nv 1.1.1.1 22
  • dmitry
    eg:dmitry -pb 172.16.36.135
  • nmap
    eg:nmap -sT 1.1.1.1 -p 22 --script=banner
  • python.socket实现
import socket
bangrab = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
bangrab.connect(("1.1.1.1",22))
bangrab.recv(4096)
bangrab.close()
exit()  #Banner不允许抓取,recv无返回将挂起

2.识别服务
可以通过Banner识别服务,也可以通过一些特征行为和响应字段识别

  • nmap
    eg:nmap 1.1.1.1 -p 80 -sV

(四)操作系统识别

可以通过TTL等一些特征值进行识别,TTL起始值:
Windows:128(65-128)
Linux/Unix:64(1-64)
某些Unix:255

  • nmap
    nmap -O 1.1.1.1
  • python.scapy实现
from scapy.all import *
win=1.1.1.1”
linu=1.1.1.2”
awin=sr1(IP(dst=win)/ICMP())
alinu=sr1(IP(dst=linu)/ICMP())
if alinu[IP].ttl<=64:
    print “host is Linux”
else:
    print “host is windows

(五)SNMP扫描

SNMP被称为信息的金矿,经常被错误配置,而且是明文传输,容易被抓包分析,默认端口为161/udp和162/udp。

  • onesixtyone
    eg:
    onesixtyone 192.168.1.0/24 public
    onesixtyone -c dict.txt -i hosts -o my.log -w 100
  • snmpwalk
    eg:
    snmpwalk 192.168.0.104 -c public -v 2c 1.3.6.1.4.1.77.1.2.25
  • snmpcheck
    eg:snmpcheck -t 192.168.20.199 -c private -v 2

(六)SMB扫描

SMB协议是微软历史上出现安全问题最多的协议,实现非常复杂,Windows系统默认开放,默认端口为139/tcp和445/tcp。

  • nmap
    eg:
    nmap -v -p139,445 192.168.60.1-20
    nmap 192.168.60.4 -p139,445 --script=smb-os-discovery.nse
    nmap -v -p139,445 --script=smb-check-vulns --script-args=unsafe=1 1.1.1.1
  • enum4linux
    eg:enum4linux -a 1.1.1.1

(七)SMTP扫描

简单邮件传输协议,是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,默认端口为25/tcp。

  • nmap
    eg:
    nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enumusers.methods={VRFY}
    nmap smtp.163.com -p25 --script=smtp-open-relay.nse

(八)防火墙识别

通过检查回包,可以识别端口是否经过防火墙过滤(有一定误差)
防火墙端口识别

图2 防火墙端口识别

  • nmap
    eg:nmap -sA 1.1.1.1 -p 22

(九)WAF识别

WEB应用防火墙

  • wafw00f
    eg:wafw00f http://www.baidu.com
  • nmap
    eg:nmap www.baidu.com --script=http-waf-detect.nse

信息收集部分最为重要的一个工具:NMAP,必须熟练掌握使用。

虽然在内网扫描尽量不要用这类人尽皆知的工具,但是熟知其工作方式和原理对于学习本身而言还是十分有必要的。


截取nmap version 7.80man手册内容如下:

SYNOPSIS
       nmap [Scan Type...] [Options] {target specification}

DESCRIPTION
       ...That table lists the port number and protocol, service name, and state. The
       state is either open, filtered, closed, or unfiltered.  Open means that an
       application on the target machine is listening for connections/packets on that 
       port.  Filtered means that a firewall, filter, or other network obstacle is 
       blocking the port so that Nmap cannot tell whether it is open or closed. Closed
       ports have no application listening on them, though they could open up at any 
       time. Ports are classified as unfiltered when they are responsive to Nmap's probes, 
       but Nmap cannot determine whether they are open or closed. Nmap reports the state
       combinations open|filtered and closed|filtered when it cannot determine which
       of the two states describe a port. ...

OPTIONS SUMMARY
       TARGET SPECIFICATION:
             -iL <inputfilename>: Input from list of hosts/networks
       HOST DISCOVERY:
             -sL: List Scan - simply list targets to scan
             -sn: Ping Scan - disable port scan, only print out the available hosts that
                  responded to the host discovery probes
             -Pn: No Ping - treat all hosts as online -- skip host discovery
             -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
             -PO[protocol list]: IP Protocol Ping
             --traceroute: Trace hop path to each host
       SCAN TECHNIQUES:
             -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
             -sU: UDP Scan
             -sN/sF/sX: TCP Null, FIN, and Xmas scans
             -sI <zombie host[:probeport]>: Idle scan
             -sY/sZ: SCTP INIT/COOKIE-ECHO scans
             -sO: IP protocol scan
       PORT SPECIFICATION AND SCAN ORDER:
             -p <port ranges>: Only scan specified ports
               Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
             --exclude-ports <port ranges>: Exclude the specified ports from scanning
             -F: Fast mode - Scan fewer ports than the default scan
             -r: Scan ports consecutively - don't randomize
             --top-ports <number>: Scan <number> most common ports
       SERVICE/VERSION DETECTION:
             -sV: Probe open ports to determine service/version info
             --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
             --version-light: Limit to most likely probes (intensity 2)
             --version-all: Try every single probe (intensity 9)
             --version-trace: Show detailed version scan activity (for debugging)
       SCRIPT SCAN:
             -sC: equivalent to --script=default
             --script=<Lua scripts>: <Lua scripts> is a comma separated list of
                      directories, script-files or script-categories
             --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
             --script-args-file=filename: provide NSE script args in a file
             --script-trace: Show all data sent and received
             --script-updatedb: Update the script database.
             --script-help=<Lua scripts>: Show help about scripts.
                      <Lua scripts> is a comma-separated list of script-files or
                      script-categories.
       OS DETECTION:
             -O: Enable OS detection
             --osscan-limit: Limit OS detection to promising targets
             --osscan-guess: Guess OS more aggressively
       FIREWALL/IDS EVASION AND SPOOFING:
             -f; --mtu <val>: fragment packets (optionally w/given MTU)
             -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
             -S <IP_Address>: Spoof source address
             -e <iface>: Use specified interface
             -g/--source-port <portnum>: Use given port number
             --proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies
             --data <hex string>: Append a custom payload to sent packets
             --data-string <string>: Append a custom ASCII string to sent packets
             --data-length <num>: Append random data to sent packets
             --ip-options <options>: Send packets with specified ip options
             --ttl <val>: Set IP time-to-live field
             --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
       OUTPUT:
             -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
                and Grepable format, respectively, to the given filename.
             -oA <basename>: Output in the three major formats at once
             -v: Increase verbosity level (use -vv or more for greater effect)
             -d: Increase debugging level (use -dd or more for greater effect)
             --open: Only show open (or possibly open) ports
             --packet-trace: Show all packets sent and received
       MISC:
             -6: Enable IPv6 scanning
             -A: Enable OS detection, version detection, script scanning, and traceroute
             -V: Print version number
             -h: Print this help summary page.

(十)WEB目录扫描

WEB目录扫描一般有两种技术:

  • 字典爆破目录,基于字典爆破访问网站目录,可以发现一些隐藏页面,但是需要大量访问请求
  • 爬虫爬取链接,基于网页上的链接递归访问,针对性强,但是局限于网页的链接

现在一些工具都可以两种技术结合使用,暴破效率和准确性很大程度取决于字典的质量,常用工具简介如下:

1.DirBuster

Kali自带的图形化WEB目录扫描工具,OWASP的项目,界面如下所示,输入URL,选择暴破字典,自带字典在目录/usr/share/wordlists/dirbuster,建议将匹配模式改为URL Fuzz (关键字模糊匹配),提高扫描准确性,模糊匹配项为/{dir},dir为我们选择的字典内容。
请添加图片描述
2.御剑

经典WEB目录扫描神器,国产品牌,简单易用,一看就懂。注意御剑v1.1依赖Microsoft .NET Framework 4.6.1,分为命令行和GUI版,下载时选择GUI版。界面如下所示,选择字典激活后开始即可,v1.1做了很多优化,包括预判 (当目标无法连接3次则自动撤销任务)、爬虫 (针对首页爬取链接)。
请添加图片描述
3.Dirb

Kali自带的命令行WEB目录扫描工具,使用简单,命令格式为: dirb <url_base> [<wordlist_file(s)>] [options],每扫描出一个结果都会显示出来。dirb完全基于字典爆破,没有爬虫功能。

# 用户可以自定义字典
# 缺省字典放在/usr/share/dirb/wordlists目录中
dirb http://10.10.10.11/ common.txt -o output

# -z 指定每个请求间的延迟,单位ms
# -N 指定忽略的HTTP响应状态码
dirb http://10.10.10.11/ -z 100 -N 302 

4.BurpSuite

BurpSuite也可以对WEB目录进行扫描,虽然这不是BurpSuite专长,但这种基本功能还是具备的。在Intruder模块中设置字典匹配位置,用最简单的Sniper模式即可,选择好字典开始暴破就可以了。
请添加图片描述

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建Kali Linux渗透测试环境,你可以使用虚拟化技术,在电脑中模拟一个计算机环境来进行渗透测试。这样做的好处是可以放心地进行测试,而不用担心法律问题。你可以使用VMware Workstation软件搭建Kali Linux作为渗透测试实验平台,同时搭建Metasploitable作为渗透测试目标。具体操作可以分为三个步骤: 1. 虚拟机的搭建:使用VMware Workstation软件创建一个新的虚拟机,根据向导选择相应的操作系统和配置。你可以选择Kali Linux作为虚拟机的操作系统。 2. Kali Linux系统的安装:在虚拟机中安装Kali Linux操作系统。你可以下载Kali Linux的ISO安装文件,然后将其加载到虚拟机中,并按照安装向导进行安装。 3. Metasploitable环境的搭建:安装完Kali Linux后,你可以在虚拟机中下载和安装Metasploitable。然后,你可以使用Kali Linux中的默认浏览器(如IceWeasel)访问Metasploitable虚拟机的地址,以验证连接是否成功。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [kali渗透技术实战——搭建渗透测试环境](https://blog.csdn.net/weixin_54787877/article/details/113922900)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值