安全牛学习——主机发现

发布时间:2020-06-16 01:55:01 作者:时间带
来源:网络 阅读:1029

一、二层主机发现

目的:实现局域网内的主机扫描

1.arping命令扫描主机

使用kali对局域网主机进行扫描时候,arping命令只能挨个挨个ip的扫描,下面写一个简单的脚本实现批量扫描
root@kal:~/scan# vim arping.sh

#! bin/bash
if [ $# -ne 1 ];then
    echo "Tips Example: ./arping  10.10.10"
    exit
fi

prefix=$1
for i in $(seq 1 254);do
{
    ip=$prefix.$i
    arping $ip -c 1 | grep "reply from" | awk -F" " '{print $4}'
}&   #这里是实现多进程扫描,用时非常短,可以尝试不加 & 符号,没有对比没有伤害嘛!
done

缺点:不能路由

2. netdiscover扫描

1) root@kal:~# netdiscover -p

3.arp构造数据包请求扫描局域网存活主机

已经写过,有兴趣可以去这里看看 https://blog.51cto.com/13155409/2129980

4.nmap扫描

root@kal:~/scan# nmap -sn 10.10.10.0/24

二、三层主机发现

1. ping命令

root@kal:~/scan# ping 10.10.10.12

##三、 四层主机发现##
优点:

1.TCP之ACK扫描

扫描原理:在没有与目标主机直接建立三次连接时,直接发送ACK包,那么目标主机就会返回一个RST,通过这种方式判断主机的存活。不过这个并不是完全正确的,也存在特例,主机存在,但是不会返回RST包。

>>> IP().show()   #交互界面查看IP需要设置参数
###[ IP ]### 
    version= 4
    ihl= None
    tos= 0x0
    len= None
    id= 1
    flags= 
    frag= 0
    ttl= 64
    proto= hopopt
    chksum= None
    src= 127.0.0.1
    dst= 127.0.0.1
    \options\

>>> TCP().show()   #交互界面查看TCP所需参数
###[ TCP ]### 
    sport= ftp_data
    dport= http   #设置目的端口(判断主机存活时,可以随便设置,不管目标端口是否存在,都会返回一个RST)
    seq= 0
    ack= 0
    dataofs= None
    reserved= 0
    flags= S     #将这里设置成A,表示发送ACK包
    window= 8192
    chksum= None
    urgptr= 0
    options= {}

发送一个存活主机,但是端口不存活的

a1 = sr1(IP(dst='10.10.10.13')/TCP(dport=1111,flags='A'),timeout=1,verbose=0)
a1.show()
###[ IP ]###
version= 4L
..............
\options\
###[ TCP ]###
sport= 1111 #如果端口存活,会返回相应的服务名称
dport= ftp_data
................
urgptr= 0
options= {}
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00'
发送一个存活主机,端口也存活的
a1 = sr1(IP(dst='10.10.10.13')/TCP(dport=111,flags='A'),timeout=1,verbose=0)
a1.show()
###[ IP ]###
version= 4L
.........
src= 10.10.10.13
dst= 10.10.10.11
\options\
###[ TCP ]###
sport= sunrpc #端口存活的话,会返回服务名称
dport= ftp_data
......
urgptr= 0
options= {}
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00'

发送给一个不存活主机

a1 = sr1(IP(dst='10.10.10.133')/TCP(dport=1111,flags='A'),timeout=1,verbose=0)
WARNING: Mac address to reach destination not found. Using broadcast.
不会得到任何回应

————————————————————————————————

利用脚本实现ACK的扫描如下:

#!/usr/bin/python
#!encoding=utf-8

from scapy.all import *
import sys
import time

def scanf(ip):
        response = sr1(IP(dst=ip)/TCP(flags='A',dport=80),timeout=0.1,verbose=0) #三层和四层结合,构造包
        if(response):
                print ip

def ip_range(prefix):
        try:
                for addr in range(20):
                        ip = prefix + '.' + str(addr)
                        scanf(ip)
        except KeyboardInterrupt:
                print
                exit

def main():
        try:
                prefix = raw_input('请输入ip段:')
                prefix = prefix.split('.')[0:3]
                ip = prefix[0]+'.'+prefix[1]+'.'+prefix[2]
                ip_range(ip)
        except KeyboardInterrupt:
                print "\n*********1.重新输入"
                print "*********2.退出\n"
                choice = int(raw_input('******请输入您的选择:'))
                if choice == 1 | choice != 2:
                        print "\n"
                        main()
                else:
                        exit()

if __name__ == "__main__":
        main()

2.UDP扫描

扫描原理: 利用发送的数据包到主机上,如果主机的存活并且目标端口不存活才会返回一个ICMP不可达,否则发送的UDP就会一去不复返(如:目标主机不存在、目标主机存在并且端口开放)
【目标主机存在但是端口不是存活状态】

a1 = sr1(IP(dst='10.10.10.12')/UDP(dport=12345),timeout=1)
Begin emission:
...Finished to send 1 packets.
*
Received 4 packets, got 1 answers, remaining 0 packets #收到 1个回复
【目标主机存在,并且端口存活】
a1 = sr1(IP(dst='10.10.10.12')/UDP(dport=445),timeout=1)
Begin emission:
.Finished to send 1 packets.
.........
Received 10 packets, got 0 answers, remaining 1 packets #收到 0个回复
【目标主机不存在】
a1 = sr1(IP(dst='10.10.10.123')/UDP(dport=445),timeout=1)
Begin emission:
............WARNING: Mac address to reach destination not found. Using broadcast.
Finished to send 1 packets.
.........
Received 21 packets, got 0 answers, remaining 1 packets #收到 0个回复

实现脚本可以通过修改上面的脚本实现。

推荐阅读:
  1. 自动发现主机条件详解
  2. zabbix主机自动发现和自动注册

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

scapy tcp udp扫描

上一篇:第一讲、类和对象-------(2)

下一篇:hive安装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》