文章目录
一,识别操作系统
原理和思路:通过向目标发送探针,根据回应来推测操作系统。不同的操作系统的回应不同。
1.TTL
Linux <–64–>Window2.利用Windows不区分大小写
admin | AdMIN 进入一个页面 --> Windows系统
【不区分大小写】
1.nmap
1.1 -O
nmap -O IP
- nmap会创建操作系统的指纹数据库文件(Nmap-os-db),在对目标扫描时,将结果与数据库文件中数据对比得出目标的操作系统类型。
- 用TCP/IP协议栈fingerprinting进行远程操作系统探测,Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特。 在进行一打测试如TCPISN采样,TCP选项支持和排序,IPID采样,和初始窗口大小检查之后, Nmap把结果和数据库nmap-os-fingerprints中超过 1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。每个fingerprint包括一个自由格式的关于OS的描述文本,和一个分类信息,它提供供应商名称(如Sun),下面的操作系统(如Solaris),OS版本(如10),和设备类型(通用设备,路由器,switch,游戏控制台等
1.1 -osscan-guesss 猜测模式
2. Xprobe2
专门用于识别操作系统,但不是很准确
3. p0f (被动扫描)
一款典型的被动扫描工具 , 基于抓包实现
二,识别服务
服务扫描的作用:
不能简单的通过端口号来识别服务,目标系统开放80端口不一定开放着http服务,要通过对目标系统进行服务扫描,来识别开放的端口后面到底是什么服务,运行什么样的应用;
- 服务 ------对应漏洞
一般的扫描工具只是列出服务名且对应默认端口号
- 缺点1. 易错,服务使用的端口可用修改
- 缺点2 信息少,只知道服务名,不知道版本号,不知道具体的软件无从下手漏洞点。
扫描思路:
- way1. 采取抓取软件的banner方法,很多软件在连接之后提供自己的banner表,可用抓取banner获取软件的信息。
- way2. 向目标开放的端口发送探针数据包,然后将返回的数据包和数据库的数据对比,找出服务信息。(eg:nmap的Nmap-service-probe数据库)
扫描(获取banner)的常见的问题:
- 通过连接服务器的端口,使其返回的banner信息,可能查不到,也可能是管理员伪造的;
- 通过软件开发商,软件名称,服务类型,版本号(直接发现已知的漏洞和弱点);
- 对于Banner信息的捕获,需要建立完整的TCP连接;
- 另类服务识别方法:1. 特征行为和响应字段; 2. 不同的响应可用于识别底层操作系统;
例如改变web服务器的http端口为82
使用nmap扫描
1. ?? nmap -sV?
打开版本探测功能,对应数据库Nmap-service-probe的文件进行服务识别
在这里插入图片描述
–version-intensity 强度
默认为7
2:打开轻量级模式
9:最高强度
2. amap -B IP 端口
没有nmap好用
3. python-socket模块
连接网络服务时判断
root@kali:~# python3
Python 3.7.4 (default, Jul 11 2019, 10:43:21)
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> s.connect(("192.168.44.5",22)) #连接192.168.44.5的22端口
>>> s.recv(1024) #成功连接后会回复自己的banner信息
b'SSH-2.0-OpenSSH_5.3\r\n'
>>> s.close()
!!!在很多情况下,系统的banner信息不允许抓取,recv函数无返回将会被挂
4. nc(netcat)【瑞士军刀】
对nc使用的优秀博客 https://blog.csdn.net/xysoul/article/details/52270149
-nc 获取信息–>得到banner
root@kali:~# nc -nv 192.168.44.5 82
(UNKNOWN) [192.168.44.5] 82 (?) : Connection refused
root@kali:~# nc -nv 192.168.44.5 80
(UNKNOWN) [192.168.44.5] 80 (http) open
get
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>get to /index.html not supported.<br />
</p>
</body></html>
root@kali:~# nc -nv 192.168.44.5 22
(UNKNOWN) [192.168.44.5] 22 (ssh) open
SSH-2.0-OpenSSH_5.3