nmap端口探测原理初探
2015-05-29 18:14
253 查看
最近使用nmap扫描端口,对于其几种常用的探测方式是如何实现的非常好奇,所以结合wireshark抓包总结了一点,特分享给大家看看
扫描端口时,普通用户默认采用connect方式,即-sT方式,root用户默认采用-sS(syn包)方式
扫描结果有open、closed、filtered、unfiltered四种
不建议使用-sT方式,因为此种方式是要去与目标端口建立tcp连接,耗时且易被记录
如下的几种方式需要root权限,因为从原理上来说,都是使用了rawsocket,自己填写tcp的flags部分而不是由系统内核完成
-sA方式,即使用了只设置ACK位的tcp包,若返回RST报文,则此端口unfiltered,若什么都不返回则为filtered
-sS方式,即使用了只设置SYN位的tcp包,若返回RST,ACK报文,则此端口closed,若返回SYN,ACK报文,则open,什么都不返回为filtered
-sF方式,即使用了只设置FIN位的tcp包,若返回RST,ACK报文,则此端口closed,若什么都不返回则为open|filtered
-sN方式,即使用了数据部分为空的tcp包,结果同-sF方式
-S方式:即使用spoof IP,默认使用-sS方式,此种策略有中借刀杀人的感觉,虽然被攻击目标记录的是spoof IP,但是真正源主机的MAC没变化,躲避检测效果不佳
由上可知,不同的扫描方式适用于不同的目的,自己使用C和python的RawSocket分别实现了这几种扫描方式,需要的话可以去我的github看看,https://github.com/wolfzhaoshuai
扫描端口时,普通用户默认采用connect方式,即-sT方式,root用户默认采用-sS(syn包)方式
扫描结果有open、closed、filtered、unfiltered四种
不建议使用-sT方式,因为此种方式是要去与目标端口建立tcp连接,耗时且易被记录
如下的几种方式需要root权限,因为从原理上来说,都是使用了rawsocket,自己填写tcp的flags部分而不是由系统内核完成
-sA方式,即使用了只设置ACK位的tcp包,若返回RST报文,则此端口unfiltered,若什么都不返回则为filtered
-sS方式,即使用了只设置SYN位的tcp包,若返回RST,ACK报文,则此端口closed,若返回SYN,ACK报文,则open,什么都不返回为filtered
-sF方式,即使用了只设置FIN位的tcp包,若返回RST,ACK报文,则此端口closed,若什么都不返回则为open|filtered
-sN方式,即使用了数据部分为空的tcp包,结果同-sF方式
-S方式:即使用spoof IP,默认使用-sS方式,此种策略有中借刀杀人的感觉,虽然被攻击目标记录的是spoof IP,但是真正源主机的MAC没变化,躲避检测效果不佳
由上可知,不同的扫描方式适用于不同的目的,自己使用C和python的RawSocket分别实现了这几种扫描方式,需要的话可以去我的github看看,https://github.com/wolfzhaoshuai
相关文章推荐
- centos搭建samba服务器提供完全共享服务
- 数据结构面试题总结3——数组:求数组中两个元素的最小距离
- 三种常用的js数组去重方法
- JAVA第一次作业 目标1
- 查看数据库对象(功能模块)的定义
- 这就是搜索引擎--读书笔记三
- service redis does not support chkconfig的解决办法
- 获取静态TableView选中的cell来执行相应操作
- service redis does not support chkconfig的解决办法
- Android录音时指针摆动的实现(附源码)
- Java操作json的通用类
- Android 图片缓存--DisplayImageOptions
- Android布局实现圆角边框
- 《Java程序设计》)第一次作业:源代码计算器
- nodejs使用npm发布模块带npm报错(verbose stack Error: Invalid name: "")解决
- JS 无法清除Cookie的解决方法
- 走入PHP-类与对象
- c/c++学习之c++ 中的list <>容器
- 工作常用的命令积累
- MTK源码修改settings->storage和文件浏览器的USB存储大小