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

其实和上一篇博客:《服务扫描》类似,都是为了能够发现漏洞

发现什么漏洞?

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

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

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

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

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

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

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

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

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

xprobe2:直接输入IP地址即可

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

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

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

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

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

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

开启:p0f

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

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

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

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

总之,我推荐Nmap

Kali学习笔记13:操作系统识别的更多相关文章

  1. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  2. Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...

  3. SQL反模式学习笔记13 使用索引

    目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引.  索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...

  4. 并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理

    · 在并发编程中,我们有时候会需要使用到线程安全的队列,而在Java中如果我们需要实现队列可以有两种方式,一种是阻塞式队列.另一种是非阻塞式的队列,阻塞式队列采用锁来实现,而非阻塞式队列则是采用cas ...

  5. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

  6. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  7. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  8. Javascript学习笔记二——操作DOM

    Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...

  9. python 学习笔记 13 -- 经常使用的时间模块之time

    Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...

随机推荐

  1. Opecv + Anaconda 读取视频(windows)

    前言:之前一直用的是python(x,y),但是发现在使用opencv时容易出现一些pythonw.exe停止工作的问题.后来发现自己的操作系统是64位的,却安装了32位的python(x,y),虽然 ...

  2. JAVA实训第四次作业

    编写"电费管理类"及其测试类. 第一步 编写"电费管理"类 私有属性:上月电表读数.本月电表读数 构造方法:无参.2个参数 成员方法:getXXX()方法.se ...

  3. sha1withRSA算法

    RAS_USE_PRIVATE_ENCRYPT(3021300906052b0e03021a05000414 + SHA1(DATA))

  4. 一、PyQt5基础概念与安装配置

    一.初识PyQt5 对于桌面程序开发,用户图形界面(GUI)的设计非常重要.一款美观.易用的用户界面可以很大程度上提高对使用这的友好度.由于Python最初是作为脚本语言开发,并没有GUI功能.但Py ...

  5. PHP获取日期时间信息

    getdate函数 描述:可以获取日期/时间信息 语法:array getdate( [ int timestamp ] ) 返回一个数组 例: Array ( [seconds] => 30 ...

  6. python的文件读写笔记

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  7. Webpack-dev-server的proxy用法

    前言: devServer:{ contentBase:'./', proxy:{ // 当你请求是以/api开头的时候,则我帮你代理访问到http://localhost:3000 // 例如: / ...

  8. MongoDB的数据备份与恢复

    一:数据备份操作 步骤: 1.以管理员身份打开cmd,然后打开到mongdb的bin文件夹 2.输入命令 mongodump -h dbhost -d dbname -o dbdirectory -h ...

  9. 关于浏览器cookie的小知识

    浏览器对于总的cookie数量是没有限制的,但是对于每个域名的cookie数量是有限制的. 一,不同的浏览器,对于一个域名的cookie数量限制上限是不同的: 1,IE6以下版本,最多20个.IE7以 ...

  10. linux下PythonQt混编记录

    看了很多博主经验,然后自己实验总结出来的,就不一一写出处了,非常感谢各位博主的分享经验. 一.安装Python3.6 安装依赖环境 # yum -y install zlib-devel bzip2- ...