欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Kali学习笔记13:操作系统识别

程序员文章站 2024-02-18 21:05:28
为什么要扫描操作系统呢? 其实和上一篇博客:《服务扫描》类似,都是为了能够发现漏洞 发现什么漏洞? 不同的操作系统、相同操作系统不同版本,都存在着一些可以利用的漏洞 而且,不同的系统会默认开放不同的一些端口和服务 如果能够知道操作系统和版本号,那么就可以利用这些默认选项做一些“事情” OS的识别技术 ......

为什么要扫描操作系统呢?

其实和上一篇博客:类似,都是为了能够发现漏洞

发现什么漏洞?

不同的操作系统、相同操作系统不同版本,都存在着一些可以利用的漏洞

 

而且,不同的系统会默认开放不同的一些端口和服务

如果能够知道操作系统和版本号,那么就可以利用这些默认选项做一些“事情”

 

os的识别技术多种多样,有简单的也有复杂的,最简单的就是用ttl值去识别。

不同类型的os默认的起始ttl值是不同的。

比如,windows的默认是128,然后每经过一个路由,ttl值减一。

linux/unix的值是64,但有些特殊的unix会是255。

 

1.利用python来识别:

#!/usr/bin/python
from scapy.all import *
import logging

logging.getlogger("scapy.runtime").setlevel(logging.error)
import sys

if len(sys.argv) != 2:
    print("usage --/ttl_os.py [ip address]")
    print("example --/ttl_os.py 192.168.0.1")
    print("example will preform ttl analysis to attempt to determine whether the system is windows or linux/unix")
    sys.exit()

ip = sys.argv[1]

ans = sr1(ip(dst=str(ip)) / icmp(), timeout=1, verbose=0)
if ans == none:
    print("no response was returned")
elif int(ans[ip].ttl) <= 64:
    print("host is linux/unix")
else:
    print("host is windows")

 

使用场景:

我主机ip:10.14.4.252

kali机器:192.168.22.130

metasploitable机器:192.168.22.129

 

使用脚本:

如果脚本是从windows移过来的:

vi xxx.py

:set fileformat=unix

:wq

chmod u+x xxx.py

./xxx.py

 

Kali学习笔记13:操作系统识别

我还多扫描了一个本地的机器,得到的结果都很准确

 

不过呢,这只是利用ttl简单判断出操作系统

 

利用nmap,不仅可以实现这里的功能,甚至还可以得到版本:

-o:参数,识别操作系统

 Kali学习笔记13:操作系统识别

Kali学习笔记13:操作系统识别

 

除了强大的工具,还有一些其他的:

xprobe2:直接输入ip地址即可

Kali学习笔记13:操作系统识别

这个扫描工具相对于nmap,差距很大,结果不精确

 

上边的工具都是主动识别操作系统的:主动向目标发送数据包,分析回包

而下边这个工具是被动识别的:

基于网络监听的工作原理:windows和linux发送出来的包是有很大区别的。

被动式的扫描可以部署在网络进出口的地方,目的是让所经过的流量通过我的流量分析器。

同样在kali中也存在这般的工具p0f,他会监听凡是通过本地网卡的流量。

 

开启:p0f

Kali学习笔记13:操作系统识别

 

这里是开启了监听,如果什么都不做,他也没有反应

 

接下来我访问某网站,看看变化:

随意挑出一条信息来看看:

Kali学习笔记13:操作系统识别

我49024端口向某ip发送了syn包,这里就得到了我kali机的版本:3.11或者更高

 

总之,我推荐nmap