信息收集之主动信息收集(一)

主动信息收集:

  1.主机发现

    1.1二层主机发现

    1.2三层主机发现

    1.3四层主机发现

  2.端口扫描

    2.1TCP端口扫描

    2.2UDP端口扫描

    2.3僵尸扫描

  3.服务识别

    3.1 python socket

    3.2 dmitry -pb

    3.3 nmap

    3.4 amap -B

  4.操作系统识别

    4.1 nmap

    4.2 TTL

主动信息收集

  直接与目标系统交互通信

  使用受控的第三方电脑进行探测

  使用代理或者已经被控制的主机

  使用噪声迷惑目标,淹没真实的探测流量  #伪造不同的IP给目标发送数据,并把真实的源IP的发包速率调低,以迷惑目标,让目标认为是别的IP在攻击它

  扫描:发送不同的探测,根据返回结果判断目标状态

主机发现--二层发现

原理:使用ARP协议,在网段内进行广播,看是否有回包

1.arping实现二层主机发现

arping实现了简单的二层发现,由于没有ip层的参与,所以是不可路由的。

优点是速度快,准确性高

缺点是不可路由,无法发现局域网以外的主机,只能发现同一网段内的主机

arping 192.168.10.200 -c 1

  

arping 192.168.10.200 -w 2

  

arping 192.168.10.200 -c 1 |grep "Unicast" |cut -d‘ ‘ -f4

  

shell脚本实现arping主机发现 

#!/bin/bash
#该脚本用于实现arping扫描整个网段

if [ "$#" -ne 1 ]
then
   echo "用法:$0 eth0"
   exit
fi
interface=$1
net=$(ifconfig eth1|grep "inet addr" |awk ‘{print $2}‘|awk -F":" ‘{print $2}‘|cut -d "." -f1-3)
for ((i=1;i<=254;i++))
do
   arping -c 1 -I $interface $net.$i|grep "Unicast"|cut -d ‘ ‘ -f 4
done

运行效果如下: 

2.nmap实现二层主机发现

nmap 192.168.10.200 -sn    # -sn只进行主机发现,不进行端口扫描

  

创建IP字典,nmap -iL iplist.txt -sn   #扫描特定IP列表的IP,只进行主机发现

  

3.Netdiscover  专用于二层发现

不仅支持主动arp检测,还支持被动的arp检测,即把网卡设置为混杂模式,收取所有局域网内的arp广播数据包,从而判断存活的ip

主动模式扫描主机   #主动arp容易触发报警

netdiscover -i eth0 -r 192.168.10.0/24  # -i指定所要侦听的网卡,-r指定ip段

  

被动模式嗅探存活的主机

netdiscover -p  开启监听,然后在另一个窗口,ping目标主机

  

此时就可以看到netdiscover监听到主机

  

4.Scapy实现二层主机发现

给目标发送一个ARP数据包

  

收到响应,说明目标主机存活

  

主机发现--三层发现

原理:使用IP/ICMP协议

优点:相对于二层可以路由

缺点:相对于二层速度慢,经常被防火墙过滤掉

1.ping 实现三层主机发现

ping 192.168.10.200 -c 2

  

ping 192.168.10.200 -c 1 |grep ‘bytes from‘ |cut -d‘ ‘ -f 4|cut -d‘:‘ -f 1

  

2.Scapy实现三层主机发现

给目标发送一个ICMP包,收到响应,说明目标主机存活

  

3.fping实现三层主机发现

  

  

4.hping3实现三层主机发现

hping3 192.168.10.200 --icmp -c 2

  

主机发现--四层发现

原理:使用TCP/UDP协议

优点:可路由并且可靠,不太可能被防火墙过滤掉

缺点:基于状态过滤的防火墙可能过滤扫描

虽然这里使用到了端口发现,但是四层发现阶段并不对端口进行解析,而是通过端口进行对ip是否存活的判断

TCP发现:直接发送ACK数据包,一般来说状态为up的目标主机会返回一个RST数据包以终止这个不正常的TCP链接。也可以发送正常的SYN数据包,若果目标主机返回SYN/ACK或者SRT数据包,都可以证明目标主机为up状态。

UDP发现:如果目标ip为up状态且UDP目标端口为关闭状态,目标主机就会返回一个目标端口不可达的数据包,这就可以证明目标主机是up状态(无论目标ip是down状态还是目标ip为up只要目标端口为开放状态,都不会有任何数据包返回,这是UDP的特点) #可以利用UDP的这一特点发送一个数据包给一个目标主机不可能开放的端口,如果收到icmp port-unreachable,说明目标主机存活。

Scapy实现四层主机发现

TCP

1.发送一个ack包给目标主机,正常情况下up状态的目标ip会返回一个SRT数据包

  

2.查看目标主机返回的包,可以看到有一个RET包,说明目标主机存活

  

UDP

给目标主机的一个不可能开放的UDP端口发送数据,得到(icmp port-unreachable),说明目标主机存活

  

查看返回的数据包

  

二、端口扫描

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

TCP扫描有三种类型:全连接扫描,隐蔽扫描,僵尸扫描

隐蔽扫描:发送完SYN数据包以及收到SYN/ACK数据包后不再发送SCK数据包,由于没有建立完整的TCP连接,所以在目标主机的应用日志中不会有扫描的记录,只会在ip层有记录,因而较为隐蔽。

僵尸扫描:条件较为苛刻。首先要能够进行地址欺骗,其次僵尸机没有什么网络流量产生,最后僵尸机的ipid必须是递增的

所有的TCP扫描方式都是基于三次握手的变化来判断目标的状态

TCP端口扫描

1.nmap实现TCP端口扫描

nmap -sS 192.168.10.200 -p 80,21,23,25

  

nmap -sS -iL iplist.txt -p 80,21,23

  

2.Scapy实现TCP端口扫描

给目标主机发送一个SYN数据包,看是否收到响应

  

3.dmitry实现端口扫描

dmitry -p 192.168.10.200   #默认150个常见的端口

  

dmitry -p 192.168.10.200 -o scanport

  

python脚本实现tcp端口扫描

#!/usr/bin/python

from scapy.all import *
if len(sys.argv)!=2:
    print("error,use example:./scanhost.py 192.168.10.0")
    sys.exit()

ip=str(sys.argv[1])
net=ip.split(".")[0]+"."+ip.split(".")[1]+"."+ip.split(".")[2]+"."

for addr in range(120,140):
    response=sr1(IP(dst=net+str(addr))/TCP(dport=22,flags="A"),timeout=0.1,verbose=0)
    try:
        if (response[TCP].flags) =="R":
            print(net+str(addr)+"is up!")
    except:
        pass

运行效果如下:

  

僵尸扫描:

1.确定僵尸机

1.1首先攻击者寻找僵尸主机,先给僵尸机目标发送一个sys/ack数据包,收到僵尸机回复一个RST数据包并且IPID等于x

1.2等一段时间再给僵尸机目标发送一个sys/ack数据包,收到僵尸机回复一个RST数据包,并且带有IPID值,如果IPID值为x+1,说明僵尸目标可以当成僵尸机,否则继续寻找别的僵尸目标

  

2.确定完僵尸机之后,便开始僵尸扫描

2.1向僵尸机发送SYN/ACK数据包,僵尸机会返回一个RST数据包,记录下ipip为y

2.2向目标主机发送SYN数据包(原地址伪造成僵尸机)

2.3若目标主机端口开放,则向僵尸机发送SYN/ACK数据包

2.3.1 僵尸机收到SYN/ACK数据包,则向目标主机发送RST数据包,此时僵尸机ipid为y+1

2.3.2攻击方向僵尸机发送SYN/ACK数据包,僵尸机返回一个RST数据包,此时ipid为y+2

2.4若目标主机端口关闭,则向僵尸机发送RST数据包,此时僵尸机不会产生任何数据包

2.4.1攻击方向僵尸机发送SYN/ACK数据包,僵尸机返回一个RST数据包,此时ipdi为y+1

通过攻击方从僵尸机接收到的两个RST数据包的ipid可以判断目标主机的目标端口是否开放

目标端口开放:

  

目标端口不开放:

  

僵尸扫描实验:

实验环境:

Kali(攻击者):192.168.10.128

Linux 6.5 (目标):192.168.10.200

Win7(僵尸机):192.168.10.129

Scapy实现:

下图说明目标主机的21号端口是开放的

  

Nmap实现:

1.首先寻找僵尸目标

nmap -p445 192.168.10.0/24 --script=ipidseq.nse

 

2.开始僵尸扫描

nmap 192.168.10.200 -sI 192.168.10.129 -Pn    # -sI参数指定僵尸机  -Pn 跳过主机发现

  

Python脚本实现僵尸扫描  

#/usr/bin/python
# -*- coding: utf-8 -*-

from scapy.all import *
import time
#查找合适的僵尸机,根据IPID来判断目标僵尸是否是个好的僵尸机
def IsZombie(zIP):
    response1=sr1(IP(dst=zIP)/TCP(dport=445,flags="SA"),timeout=1,verbose=0)
    time.sleep(1)
    response2=sr1(IP(dst=zIP)/TCP(dport=445,flags="SA"),timeout=1,verbose=0)
    if response1[IP].id+1==response2[IP].id:
        print "this is a very good zombie!"
        #开始僵尸扫描
        targetIP=raw_input("请输入目标的IP:")
        targetPort=int(raw_input("请输入要扫描目标机的端口:"))
        scan(zIP,targetIP,targetPort)
    else:
        print "this is not a good zombie!"

#定义扫描函数
def scan(zIP,targetIP,targetPort):
    #给僵尸机发生第一个SYN/ACK包
    rz1=sr1(IP(dst=zIP)/TCP(dport=445,flags="SA"),timeout=1,verbose=0)
    #给目标主机发送一个伪造地址的SYN数据包
    sr1(IP(dst=targetIP,src=zIP)/TCP(sport=445,dport=targetPort,flags="S"),timeout=1,verbose=0)
    #给僵尸机发生第二个SYN/ACK包
    rz2=sr1(IP(dst=zIP)/TCP(dport=445,flags="SA"),timeout=1,verbose=0)
    if rz1[IP].id+2==rz2[IP].id:
        print "目标targetIP的端口targetPort is UP"
    else:
        print "目标targetIP的端口targetPort is closed"

ip=raw_input("请输入目标僵尸的IP:")
IsZombie(ip)

运行效果如下:

  

UDP端口扫描

Scapy 实现UDP端口扫描

端口关闭: icmp port-unreachable

端口开放:没有回包

下图给目标主机udp53端口发送数据包,响应icmp port-unreachable,说明目标相应的端口关闭

  

在目标主机开启UDP 53端口,然后测试,下图可以看到没有返回数据包,说明目标端口UDP53是开放的

  

Nmap实现UDP端口扫描

nmap 192.168.10.200 -sU -p 53

  

Python脚本实现UDP端口扫描

#!/usr/bin/python

from scapy.all import *
if len(sys.argv)!=2:
    print("error,use example:./scanhost.py 192.168.10.0")
    sys.exit()

ip=str(sys.argv[1])
net=ip.split(".")[0]+"."+ip.split(".")[1]+"."+ip.split(".")[2]+"."

for addr in range(120,140):
    response=sr1(IP(dst=net+str(addr))/UDP(dport=5555),timeout=0.1,verbose=0)
    try:
        if (response[TCP].flags) =="R":
            print(net+str(addr)+"is up!")
    except:
        pass

三、banner捕获、服务扫描与识别

banner     可能是管理员伪造的

  软件开发商

  软件名称

  服务类型

  版本号--直接发现已知的漏洞和弱点

连接建立后直接获取banner

另类服务识别方法

  特征行为和响应字段

  不同的响应可用于识别底层操作系统

1.通过python socket获得目标服务的banner

  

2.通过dmitry -pb获得目标服务的banner信息

dmitry -pb 192.168.10.200

  

3.通过nmap获得目标服务的banner信息

nmap -sT 192.168.10.200 -p21,22,53 --script=banner

  

4.通过amap获得banner信息   #专门用于发现开放端口后的服务的工具

amap -B 192.168.10.200 21

  

四、操作系统识别

  windows:128(65-128)    #TTL

  linux/unix:64(1-64)

  某些unix:255

1.通过ttl值判断操作系统的类型

  

2.通过nmap -O 识别操作系统的类型

nmap -O 192.168.10.129

  

  

   

---------------------------------------------------------------------------------------------------------------

信息收集之主动信息收集(二):https://www.cnblogs.com/yuzly/p/10658570.html 

 

  

  

  

原文地址:https://www.cnblogs.com/yuzly/p/10652516.html

时间: 2024-11-10 13:40:52

信息收集之主动信息收集(一)的相关文章

信息收集之主动信息收集(二)

1.SNMP扫描 2.SMB扫描 3.SMTP扫描 4.防火墙识别 5.WAF识别 6.负载均衡识别 一.SNMP扫描 SNMP 简单网络管理协议,经常被错误的配置,信息的金矿 SNMP服务是使用明文传输的,即使不能通过community进行查询,也有可能使用抓包嗅探的方法得到SNMP数据包中的数据 SNMP系统的内部信息都是可以通过snmp进行监控的 SNMP服务端UDP 161  客户端 UDP 162 1.onesixtyone实现SNMP扫描 首先在目标机(xp)上安装SNMP协议并启动

【安全牛学习笔记】主动信息收集 - 发现

主动信息收集 - 发现1.特点    直接与目标系统交互通信    无法避免留下访问的痕迹    使用受控的第三方电脑进行探测      使用代理或已被控制的主机      做好被封杀的准备      使用噪声迷惑目标,淹没真实的探测流量    扫描      发送不同的探测,根据返回结果判断目标状态 2.主机发现 识别活着的主机,输出IP地址列表(1)二层发现(数据链路层) 优点:扫描速度快,可靠缺点:不可路由arp协议:根据ip地址获取MAC地址的TCP/IP协议 原理:向网段内所有主机发送

Kali 渗透测试- 全主动信息收集-发现

╋━━━━━━━━━━━━━━━━━━━━━╋ ┃主动信息收集                              ┃ ┃无法避免留下访问的痕迹                    ┃ ┃使用受控的第三方电脑进行探测              ┃ ┃  使用代理或已经被控制的主机              ┃ ┃  做好被封杀的准备                        ┃ ┃  使用噪声迷惑目标,淹没真是的探测流量    ┃ ┃扫描                      

小白日记7:kali渗透测试之主动信息收集-发现(一)--二层发现:arping/shell脚本,Netdiscover,scapy

主动信息收集 被动信息收集可能不准确,可以用主动信息收集验证 特点:直接与目标系统交互通信,无法避免留下访问痕迹 解决方法:1.使用受控的第三方电脑进行探测,使用代理 (做好被封杀的准备) 2.伪造大量的来源IP进行探测,进行噪声迷惑,淹没真是的探测流量 扫描流程:发送不同的探测,根据返回结果判断目标状态[IP层->端口层->服务层] 发现 识别活着的主机,发现潜在的被攻击目标,输出结果为IP地址列表. 二层发现 数据电路层,使用ARP协议 使用场景:已经取得一台主机,进入内网,对内网进行渗透

主动信息收集(一)

主动信息收集是客户端与目标进行通信,与目标进行直接交互.会在目标机器上留下痕迹,会被封杀,所以进行主动信息收集时,要使用代理. 1.主机发现: 1.1二层主机发现 1.2三层主机发现 1.3四层主机发现 1.1  二层发现使用的协议是ARP协议,速度快,可靠,不可路由,只能发现本网段ip. 路由器不能转发arp的数据包. 原理:使用ARP协议,在网段内进行广播,看是否有回包. (1)arping -c   //规定发送几个数据包 -d  //发现重复的ip:俩个不同的mac地址拥有同一个IP:如

数据库性能优化、统计信息与对象统计信息概述收集、扩展统计信息、dbms_stats.get_prefs

数据库性能优化 相关书籍: 1.基于成本的Oracle优化法则 2.Oracle性能诊断艺术 3.基于Oracle的SQL优化 ----------------------------------------------------------------------------------------- 两种优化器: CBO  cost-base optimizer 基于cost 更大适应性/灵活性/10g开始 RBO  rule-base optimizer 基于规则 制定了15条/10g以

Oracle 通过ADR工具 收集ORA-600错误信息

 问题描述: 2014-06-10 在点检数据库预警文件时,出现Ora -00600 错误,并且Rman L1 备份失败,查询相关资料,得知是Bug:9835218.于是,提SR寻求Oracle 官方技术支持. Oracle回复如下: Your Service Request has been submitted as anORA-600/ORA-7445 issue based on the problem type you chose when logging the SR. Additio

JAVA IO流的简单总结+收集日志异常信息

1.字节流: IuputStream 所有字节输出流的超类 . 抽象类 ---- FileInputStream ---- BufferedInputStream:提供数据的读取效率,拓展方法(内部维护了一个8k字节的数组) OutputStream 所有字节输出流的超类. 抽象类 ---- FileOutputStream ---- BufferedOutputStream:提高数据的写入效率,拓展方法(内部维护一个8k字节数组) 写入数到磁盘: 1.通过刷新flush(), 2.close(

自动化收集SQLSERVER诊断信息

自动化收集SQLSERVER诊断信息 相信很多人都遇到过当SQLSERVER出现问题的时候,而你又解决不了需要DBA或者微软售后支持工程师 去帮忙解决问题,那么他们一般需要你收集一些系统信息和SQLSERVER诊断信息. 而收集这些信息又需要图形工具,又需要指令,步骤又非常复杂. 我们要按照步骤一步一步把需要的信息收集全,在收集的过程中,往往折腾几次就头痛了 解决问题的工具 这个问题随着一个在SQL2005里的工具的出现而得到了解决 这个工具可以自动收集很多信息,扩展了原来的应用,增强了其信息收