zoukankan      html  css  js  c++  java
  • 【Socket】linux网络扫描程序开发

     
    1.mystery引入
       1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除
       2)扫描器分类:主机与网络扫描器;端口服务扫描器;服务漏洞扫描器
       3)TCP端口扫描技术分为三种:全连接扫描;SYN扫描以及FIN扫描
       4)UDP端口扫描技术一般采用ICMP报文端口不可达的信息来识别UDP端口是否开放
       5)全连接扫描利用connect()函数的返回值来判断端口是否开放
       6)SYN构造并发送一个SYN数据包,就是TCP三次握手建立连接的第一步
          若返回一个SYN|ACK的数据包,则端口表示处于监听状态
          若返回一个RST数据包,则表示端口没有处于侦听状态
       7)FIN扫描和SYN扫描类似,构造相应的数据包
          原理:关闭的端口会用RST数据包来回应FIN数据包,而开放的端口则会忽略这种报文


    2.程序构造
       1)功能:实现一个可用的端口扫描程序,在扫描方式上,实现全连接扫描、SYN半连接扫描、多线程全连接扫描等方式
       2)使用方式:采用交互式命令,在配置待扫描的目标主机IP地址、端口范围等信息后,启动扫描
       3)交互式模块是整个系统的调试核心,也是控制系统运转的一条主线
       4)交互式模块通过命令驱动,要调用3个扫描模块。扫描模块要求的心要参数信息为:IP地址、端口的下限及端口的上限;
         针对多线程扫描全连接扫描,还要增加线程数这一参数信息
       5)半连接扫描的基本原理是采用原始套接字技术,构造相应格式的SYN数据包,发送目标主机
           然后根据目标主机的响应信息,判断扫描端口的状态
    因为是采用原始套接字,所以需要root权限


    3.程序测试

      1)程序功能清单


      2)本机测试全连接扫描


      3)远程主机测试全连接扫描


      4)其它两种扫描方式类似,这里就不截图了,另外SYN扫描需要root权限


    4.源代码
    //scantool.c,见原博客附件http://infohacker.blog.51cto.com/6751239/1155170
     
     
     
     
  • 相关阅读:
    2018.5.17 memcached
    2018.5.11 B树总结
    2018.5.8 排序总结
    2018.5.8 python操纵sqlite数据库
    2018.5.4 Unix的五种IO模型
    2018.5.3 maven
    2018.5.3 docker
    Mybatis学习笔记,挺全的!
    这么强大的Mybatis插件机制原来就是这?
    Swagger API Spec + Swagger Codegen + YAPI管理接口文档
  • 原文地址:https://www.cnblogs.com/lcw/p/3159503.html
Copyright © 2011-2022 走看看