Kali Linux 从入门到精通(八)-主动信息收集

Kali Linux 从入门到精通(八)-主动信息收集

基本介绍

  • 直接与目标系统交互通信
  • 无法避免留下访问的痕迹
  • 使用受控的第三方电脑进行探测
    • 使用代理或已经被控制的主机
    • 做好被封杀的准本
    • 使用噪声迷惑目标,淹没真实的探测流量
  • 扫描
    • 发送不同的探测,根据返回结果判断目标状态

发现

  • 识别活着的主机
    • 潜在的被攻击目标
  • 输出一个IP地址列表
  • 2,3,4层发现

二层发现(渗透进目标系统后,发现内网其他信息)

  • 优点:扫描速度快,可靠
  • 缺点:不可路由
  • Arp协议:抓包

二层发现–arping命令:

  • arping
  • arping 1.1.1.1 -c 1
  • arping 1.1.1.1 -d (发现重复响应, 两个不同的MAC地址拥有同一个IP,而此时IP为网关地址,此时即为ARP欺骗,实现中间人攻击,窃取密码,篡改数据等恶意参数)
  • arping -c 1.1.1.1 | grep “bytes from” | cut -d"" -f 5 | cut -d “(” -f 2 | cut -d")" -f 1
  • 脚本
    • arping1.sh eth0 > addr
    • arping2.sh addrs

二层发现–nmap 在二层发现中的应用

  • nmap 1.1.1.1-254 -sn(可进行网段扫描 -sn表示不进行网段扫描)
  • nmap -iL iplist.txt -sn(可对文本文件进行扫描)
  • nmap很强大 后面单独介绍

二层发现–Netdiscover

  • 专用于二层发现
  • 可用于无线和交换环境
  • 主动和被动探测
    • 主动
      • netdiscover -i eth0 -r 1.1.1.0/24
      • netdiscover -l iplist.txt
    • 被动
      • netdiscover -p (将网卡置于混杂模式)
      • 主动arp容易触发报警(入侵检测系统触发报警)

二层发现–Scapy

  • 作为Python库进行调用
  • 也可作为单独的工具使用
  • 抓包,分析,创建.修改,注入流量
  • apt-get install python-gnuplot(处理报警信息)
  • Scapy
    • ARP().display()
    • Sr1()
  • Python 脚本
    • Arp1.py
      • subprocess:调用操作系统
    • Arp2.py

发现-三层发现

  • 优点
    • 可路由
    • 速度比较快
  • 缺点
    • 速度比二层慢
    • 经常被边界防火墙过滤
  • IP,ICMP协议

三层发现-PING命令

  • Ping 1.1.1.1 -c 2
  • Ping -R 1.1.1.1 / tracetoute 1.1.1.1
  • Ping 1.1.1.1 -c 1 | grep “bytes from” | cut -d" " -f 4 | cut -d “:” -f 1
  • 脚本

Ping.sh 1.1.1.0

三层发现-Scapy

  • OSI多层堆叠 手工生成ICMP包/ICMP
  • ip=IP()
  • ip.dst=“1.1.1.1”
  • ping=ICMP()
  • a=sr1(ip/ping)
  • a.display()
  • Ping 不存在的地址
    • a=sr1(ip/icmp.timeout=1)
  • a=sr1(IP(dst=“1.1.1.1”)/ICMP().timeout=1)
  • 脚本

三层发现-nmap

  • nmap -sn 1.1.1.1-255
  • nmap -iL iplist.txt -sn

三层发现-fping

  • fping 1.1.1.1 -c 1
  • fping -g 1.1.1.1 1.1.1.2
  • fping -g 1.1.1.0/24
  • fping -f iplist.txt

三层发现-Hping

  • 能够发送几乎所有TCP/IP包
  • 功能强大但每次只能扫描一个目标:(
  • hping3 1.1.1.1 -icmp -c 2
  • for addr in(seq1254):dohping31.1.1.(seq1254):dohping31.1.1.addr --icmp -c 1 >> handle.txt & done

发现-四层发现

  • 优点:
    • 可路由且结果可靠
    • 不太可能被防火墙过滤
    • 甚至可以发现所有端口都被过滤的主机
  • 缺点:
    • 基于状态过滤的防火墙可能过滤扫描
    • 全端口扫描速度慢
  • TCP
    • 未经过请求的ACK-RST(可用于判断主机是否存活)
    • SYN-SYN/ACK,RST
  • UDP
    • ICMP端口不可达,一去不复返

四层发现–Scapy(TCP发现)

  • ACK-TCP Port–RST
  • Scapy
    • i=IP()
    • i.dst=“www.baidu.com”
    • t=TCP()
    • t.flags=‘A’
    • r=(i/t)
    • a=sr1®
    • a.display()
  • a=sr1(IP(dst=“www.baidu.com”)/TCP(dport=80,flags=‘A’),timeout=1))
  • ACK_Ping.py

四层发现–Scapy(UDP发现)

  • UDP-UDP Port-ICMP
  • i=IP()
  • u=UDP()
  • u.dport=33333
  • r=(i/u)
  • a=sr1(r.timeout=1,verbose=1)
  • A.display()
    • ICMP
  • UDP_Ping.py
    • UDP发现不可靠

四层发现-nmap

  • nmap 1.1.1.1-254 -PU53 -sn
  • nmap 1.1.1.1-254 -PA80 -sn
  • nmap -iL iplist.txt -PA80 -sn

四层发现

  • hping3 -udp 1.1.1.1 -c 1
  • for addr in (seq1,254);dohping3−udp1.1.1.(seq1,254);dohping3−udp1.1.1.addr -c 1 >> r.txt; done
    • grep Unreachable.txt | cut -d" " -f 5 | cut -d “=” -f 2
    • ./udp_hping.sh 1.1.1.0
  • hping3 1.1.1.1 -c 1 (TCP)
    • hping3 1.1.1.1
    • ./TCP_hping.sh
    • Flag 0–ACK.RST

端口扫描

  • 端口对应网服务及应用端程序
  • 服务端程序的漏洞通过端口攻入
  • 发现开发的端口
  • 更具体的攻击面
  • 攻击流程:发现活的IP->发现开发端口->通过端口漏洞攻入

端口扫描之UDP端口扫描

  • 假设ICMP port-unreachable 响应代表端口关闭
    • 目标系统不响应ICMP port-unreachable时,可能产生误判
  • 完整的UDP应用层请求
    • 准确性高
    • 耗时巨大
  • 具体操作
    • Scapy UDP Scan
      • 端口关闭:ICMP port-unreacheable
      • 端口开放:没有回包
      • 了解每一种基于UDP的应用层结构很有绷住
      • 与三层相同的技术
      • 误判
    • Scapy
      • sr1(IP(dst=“1.1.1.1”)/UDP(dport=53).timeout=1,verbose=1)
    • ./udp_scan.py 1.1.1.1 1 100

端口扫描(UDP)-nmap

  • Nmap
  • nmap -sU 1.1.1.1
    • 默认的1000个参数
    • ICMP host-unreachable
  • nmap 1.1.1.1 -sU -p 53
  • nmap -iL iplist.txt -sU -p 1-220

端口扫描(TCP)-nmap

  • TCP 端口扫描
    • 基于连接的协议
    • 三次握手

 

    • 隐蔽扫描–syn
      • 不建立完整连接
      • 应用日志不记录扫描行为-隐蔽
    • 僵尸扫描
    • 端口开放状态

 

    • 端口关闭状态

 

      • 极度隐蔽
        • 实施条件苛刻
        • 可伪造源地址
        • 选择僵尸机
          • 闲置系统
          • 系统使用递增的IPID
            • 0
            • 随机
      • 全连接扫描
      • 所有TCP扫描方式都是基于三次握手的变化来判断目标端口状态

隐蔽端口扫描

    • Syn-syn.ack-rst
    • Scapy
      • srl(IP(dst=“your ip address”)/TCP(dport=80),timeout=1,verbose=1)
      • ./syn_scan.py
    • namp
      • nmap -sS 1.1.1.1 -p 80.21.25.110 443
      • nmap -sS 1.1.1.1 -p --65535 --open
      • nmap -sS 1.1.1.1 -p --open
      • nmap -sS -iL iplist.txt -p 80
    • hping3
      • hping3 1.1.1.1 --scan 80 -S
      • hping3 1.1.1.1 --scan [ip] -S
      • hping3 1.1.1.1 --scan 0-65535 -S
      • hping3 -c 10 -S --spoof [伪造IP] -p ++1 1.1.1.1.3

全连接端口扫描

  • Scapy
    • Syn扫描不需要raw packets
    • 内核认为syn/ack是非法包,直接发rst中断连接
    • 全连接扫描对scapy比较困难
  • sr1(IP(dst=“www.baidu.com”)/TCP(dport=22,flags=‘S’))
  • ./tcp_scan1.py
  • ./tcp_scan2.py
  • iptables(Linux防火墙) -A OUTPUT -p tcp --tcp–flags RST RST -d “www.baidu.com” -j DROP
  • nmap
    • nmap -sT 1.1.1.1 -p 80
    • nmap -sT 1.1.1.1 -p 80.21.25
    • nmap -sT 1.1.1.1 -p 80-200
    • nmap -sT iplist.txt -p 80
    • 默认1000个常用端口
  • dmiltry
    • 功能简单,但使用简便
    • 默认150个最常用的端口
    • dmiltry -p 172.16.36.135
    • dmiltry -p 172.16.36.135 -o output
  • nc
    • nc -nv -w 1 -z [your ip address ] 1-100
    • for x in ${seq 20 30}; do nc -nv -w 1 -z 1.1.1.1 $x; done | grep open
    • for x in (seq1254);donc−nv−w1−z1.1.1.(seq1254);donc−nv−w1−z1.1.1.x 80; done

僵尸扫描(条件苛刻 需要合格的僵尸机)

  • 合格的僵尸机:xp系统,windows 2003 server
  • Scapy-zombie.py
    • i=IP()
    • t=TCP()
    • rz=(i/f)
    • rt=(i/t)
    • rz[IP].dst=IPz
    • rz[TCP].dport=445
    • rt[IP].src=IPz
    • rt[IP].dst=IPt
    • rt[TCP].dport=22
    • az1=sr1(rz) / at=sr1(rt) / az2=sr1(rz)
    • az1.dsiplay() / az2.display()
  • xp:僵尸机,metasploit:目标机,kali:扫描机
  • nmap
    • 发现僵尸机
      • nmap -p445 www.baidu.com --script=ipideseq nse
    • 扫描目标
      • nmap 172.16.36.135 -sl 172.16.36.134 -Pn -p 0-100

服务扫描

  • 识别开放端口上运行的应用
  • 识别目标操作系统
  • 提高攻击效率
    • Banner捕获
    • 服务识别
    • 操作系统识别
    • SNMP分析
    • 防火墙识别

Banner捕获

  • 软件开发商
  • 软件名称
  • 服务类型
  • 版本号
    • 直接发现已知的漏洞和弱点
  • 连接建立后直接获取banner
  • 另类服务识别方法
    • 特征行为和响应字段
    • 不同的响应可用于识别底层操作系统
  • 基本操作
    • way1: nc -nv [your ip address]
    • way2:python socket:socket 模块用于连接网络服务

import socket banner=socket.socket(socket.AF_INET,socket.SOCK_STREAM) banner.connect(("www.baidu.com",21)) banner.recv(4096) # 接收数据大小 banner.close() exit()

    • Banner不允许抓取,recv无返回将挂起
    • way3:
      • dmitry -p www.baidu.com
      • dmitry -pb www.baidu.com
    • way4:
      • nmap -sT [ip address] -p 22 --script=banner nse
    • way5:
      • amap -B “ip address”
      • amap -B “ip address” 1-65535
      • amap -B “ip address” 1-65535 | grep on
      • amap [ip address]
      • amap [ip address] -q
      • amap [ip address] -qb
  • Banner 信息抓取能力有限
  • nmap响应特征分析识别服务
    • 发送系列复杂的探测
    • 依据响应特征signature
  • nc -nv 1.1.1.1 80
  • nmap 1.1.1.1 -p 80 -sV

SNMP

  • 简单网络管理协议
  • Community strings
  • 信息查询或重新配置
  • 识别和绕过防火墙筛选

操作系统识别

  • 操作系统识别技术
    • 种类繁多
    • 好产品采用多种技术组合
  • TTL起始值
    • Windows: 128(65-128)
    • Linux/Unix:64 (1-64)
    • 某些Unix:255
    • python脚本

from scapy.all import * win="1.1.1.1" lin="1.1.1.2" aw=sr1(IP(dst=win)/ICMP()) al=sr1(IP(dst=linu)/ICMP()) if al[IP].ttl<64 print "host is linux" else print "host is windows"

  • nmap使用多种技术识别操作系统
    • nmap 1.1.1.1 -O
    • 系统服务特征
  • xprobe2 1.1.1.1
    • 结果有误差
  • 被动操作系统识别
    • IDS
    • 抓包分析
    • 被动扫描
    • p0f
      • 结合ARP地址欺骗识别全网OS

SNMP扫描

  • snmp(简单网络管理协议)
    • 信息的金矿
    • 经常被错误配置
    • public/private/manager
  • MIB Tree (查用常用操作系统和设备信息)
    • SNMP Management information Base(MIB)
    • 树形的网络设备管理功能数据库
    • 1.3.6.1.4.77.1.2.25
  • onesixtyone 1.1.1.1 public
  • onesixtyone -c dict.txt -i hosts -o my.log -w 100
  • snmpwalk 1.1.1.1 -c public -v 2c
  • 用户
    • snmpwalk -c public -v 2c 1.1.1.1 1.36.1.4.1.77.1.2.25
  • snmpcheck -t [input ip address]
  • snmpcheck -t [input ip address] -c private -v 2
  • snmpcheck -t [input ip address] -w

SMP 扫描

  • Server Message Block协议
    • 微软历史上出现安全最多的协议
    • 实现复杂
    • 默认开放
    • 文件共享
    • 空会话未身份认证访问(SMBI)
      • 密码策略
      • 用户名
      • 组名
      • 机器名
      • 用户,组SID
  • 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-vuln-*.nse --script-orgs=unsafe=1.1.1.1
  • namp:脚本位置: /usr/share/nmap/scripts
  • nbtscan -r 192.168.60.0/24
  • enum4linux -a 192.168.60.10

 

SMTP 扫描

  • nc -nv 1.1.1.1 25
    • VRFY root
  • nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enum-users.methods={VRFY}
  • nmap smtp.163.com -p25 --script=smtp-open-relay.nse
  • smtp-user-enum -M VRFY -U users.txt -t 1.1.1.1
  • ./smtp.py

 

防火墙识别

  • 通过检查回包,可能识别端口是否经过防火墙过滤
  • 设备多种多样,结果存在一定误差

 

  • scapy
  • python 脚本
  • namp
    • nmap有系列防火墙检测功能
    • nmap -sA 172.16.36.135 -p 22

负载均衡识别

  • 广域网负载均衡
    • DNS
  • HTTP-Loadbalancing
    • Nginx
    • Apache
  • lbd www.baidu.com
  • lbd mail.163.com

WAF识别

  • WEB应用防火墙
  • wafw00f -l
  • wafw00f http://www.microsoft.com
  • nmap www.microsoft.com --script=http-waf-detect.nse
  • 实际可绕过,需要使用机器学习,结合语法,词法几乎可完全避免sql等web攻击

NMPA补充(强大的扫描器)

  • 所有参数
    • 主机发现
      • sn: 不做端口扫描
      • Pn: 不管是否回复,扫描所有要扫的ip,再判断
      • PS/PA/PU/PY
      • PE/PP//PM
      • PO
      • -n/-R:不做DNS解析/做解析
      • –dns-servers
      • –traceroute
    • 扫描技术
      • sS/sT/sWW
      • sU (UDP扫描)
      • scanflags
      • sI:僵尸扫描
    • 服务扫描(探测端口服务)
      • sV
      • version–intensity
      • version-all
    • 脚本扫描
      • –script-updatedb
      • –script-help
    • 操作系统检测
      • osscan-limit 限制操作系统检测
    • 时间和性能相关
      • 使得扫描经过一段时间进行重新扫描,不被发现
      • –scan-delay [time]
    • 防火墙/IDS 欺骗,躲避
      • D:伪造源地址,增加噪声IP
      • S:欺骗源地址
  • zenmap(图形化nmap)

 

你可能感兴趣的:(Kali,linux,kali,linux从入门到精通)