Kali学习笔记12:服务扫描
关于什么是服务扫描不多介绍,通俗来看:
我已经扫描到目标机器某个端口开放,接下来我需要知道开放这个端口的是什么应用
情景:
我的Kali机器IP地址:192.168.22.130
我要扫描的Metasploitable机器IP地址:192.168.22.129
1.先介绍一个小工具:不强大,但是可以考虑使用
nc命令:
我要扫描目标机器的22端口:

发现跑着SSH应用,并且还可以看到操作系统
2.利用Python的Socket模块:
#!/usr/bin/python
import socket
import select
import sys if len(sys.argv) != 4:
print "./ban_grab.py [Target IP] [First Port] [Last Port]"
print "Example: ./ban_grab.py 10.0.0.5 1 100"
print "Example will grab banners for TCP ports 1 through 100 on 10.0.0.5"
sys.exit() ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3]) for port in range(start, end):
try:
bangrab = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
bangrab.connect((ip, port))
ready = select.select([bangrab], [], [], 1)
if ready[0]:
print "TCP Poet " + str(port) + " - " + bangrab.recv(4096)
bangrab.close()
except:
pass
使用脚本:
如果脚本是从windows移过来的:
vi xxx.py
:set fileformat=unix
:wq
chmod u+x xxx.py
./xxx.py
使用:

效果不错!
其他工具:
dmitry:-p 是端口扫描参数,-b是Banner信息扫描参数

当然,强大的Nmap工具不可或缺:
-sT:必须基于完整的TCP三次握手
--script:使用内置脚本

当然,想知道具体有哪些?至少有几百个,可以到这个目录看看

有一个工具是专门为服务扫描而开发的:Amap:
-B参数:扫描Banner

指定端口范围:

Banner信息抓取就到这里
这种方式其实并不总能获取到正确的信息,并且获取信息不完整
这时候就需要根据一些特征来识别服务:
再次用到强大的Nmap工具:
-sV参数:“指纹特性”匹配方式来识别

效果相比前面的Banner信息获取方式,好太多!
实际中,十分推荐这种方式,例如上边没有发现的53端口,这里识别了
80端口其他工具只是识别出HTTP,这里甚至知道是Apache的web容器
-sV参数还能解决一个问题:有时候HTTP服务在高位端口(如:8888)
这时候基本无法识别这是一个HTTP服务,而-sV参数依旧可以发现,这就是强大之处
上边提到的Amap工具其实也可以实现:不过不如Nmap详细

虽说能够实现,不过还是推荐Nmap
Kali学习笔记12:服务扫描的更多相关文章
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
- SQL反模式学习笔记12 存储图片或其他多媒体大文件
目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点: 1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ...
- golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题
golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...
- 并发编程学习笔记(12)----Fork/Join框架
1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...
- matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size
一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...
随机推荐
- 将python文件打包成exe可运行文件
https://blog.csdn.net/douzhenwen/article/details/78886244
- Spring bean的生命流程
Spring 是一个轻量级的 J2EE 开源框架,其目标是降低企业级应用开发难度,提高企业级应用开发效率.在日程开发中,我们会经常使用 Spring 框架去构建应用.所以作为一个经常使用的框架,了解其 ...
- Docker: 创建带数据的MySql container
如果需要想要在一个装有docker的机器上启动一个MySql的container,并且整个MySql container有我想要的数据: 1. 先在已有的MySql instance上准备好数据 2. ...
- dskinlite自适应dpi
调试了好久,mfc CDialog终于搞定,付费支持,qq: 80101277 效果图:
- zookeeper资料
ZooKeeper 入门
- 设计模式学习心得<原型模式 Prototype >
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式是实现了一个原型接口,该接口用于创建当 ...
- Java中的Integer和int
Java中的Integer是引用类型,而int是基本类型.Integer是int的包装器类型. java中的基本类型有布尔类型boolean;字符类型char;整数类型byte,int,long,sh ...
- Filter的介绍及使用
转:http://blog.csdn.net/zhaozheng7758/article/details/6105749 一.Filter的介绍及使用 什么是过滤器? 与Servlet相似,过滤器是一 ...
- Listener随笔
[1]监听器简介 > Listener是JavaWeb中三大组件之一.Servlet.Filter.Listener > 三大组件都有的共同特点,都需要实现一个接口,并在web.x ...
- Java:ConcurrentHashMap支持完全并发的读
ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁.(事实上,ConcurrentHashMap支持完全并发的读以及一定程度并发的写.)如果使用传统的技术,如HashMa ...