「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《网络安全自学教程》
端口&系统版本
一、端口扫描
知道主机开放了哪些端口,就能根据「端口」找到对应的「服务」,再根据服务的已知漏洞进行渗透。
1、telnet
格式:telnet IP 端口
Windows系统:进入「黑窗口」表示端口开放;提示「连接失败」表示端口关闭。
Linux系统:返回「Connected」表示端口开放;返回「Connection refused」表示端口关闭。
2、Nmap
nmap(Network Mapper)是一个「网络扫描」和嗅探工具,-p参数指定扫描的端口。
shell
nmap -sV -p 1-65535 206.119.105.9
3、Masscan
masscan是一个快速「端口扫描」工具,-p参数指定扫描的端口。
shell
masscan -p 0-65535 206.119.105.9
4、端口扫描原理及分类
端口扫描本质上就是向主机的指定端口发送连接请求,收到响应,就说明端口开放;没有响应,就说明没开。
常用的扫描方式有全连接和半链接:
1)完全链接扫描
使用TCP三次握手建立一次完整的链接,从系统调用 connect()开始,端口开放则建立链接,端口不开放则返回-1。
2)半链接扫描
就是我们常说的SYN扫描,只建立TCP的前两次链接,发送一个SYN后,就停止建立链接,等待对方的响应。
如果返回一个ACK,就说明端口开放;如果返回一个RESET,就说明端口没开放。
这种不完整的链接,产生的日志较少,但需要超级管理员权限。
- Telnet 使用完整的三次握手建立链接,常用于单个端口的测试。
- Masscan 只发送SYN包,如果对方返回 ACK+SYN 就说明端口开放。
- Nmap 默认使用SYN扫描,可以通过修改参数来修改扫描的方式。
二、操作系统识别
知道了「操作系统」,就可以针对已知漏洞进行渗透。
1、改变大小写
Windows系统不区分大小写,Linux区分大小写。
在网站的地址栏中,改变 url 的大小写,如果网页没有变化,就是Windows;如果网页404,就是Linux。
2、TTL
TTL(Time To Live)是IPv4请求包的一个字段,用来表示IP数据包在网络中可以转发的最大跳数(最大 255)。
Linux 系统的默认TTL是 64, Windows 系统的默认TTL是 128。
ping目标网站,观察返回的ttl。
1~64
是Linux:
65~128
是Windows:
由于TTL的默认值可以修改,这个判断方式存在误差。
3、Nmap
Nmap根据特征行为「指纹」匹配特征库,来判断操作系统及版本;
语法:nmap -O IP
比如下面这个网站,是Linux,版本在2.4到2.6之间。
提示:Nmap的扫描结果可信度更高,但也并不不是100%准确。
4、p0f
p0f是kali自带的,「被动」指纹识别工具,抓取经过的流量,根据数据包判断操作系统。
在命令行输入 p0f 后回车,进入被动检测状态,然后使用浏览器访问目标网站。
如下图所示,os 这一栏展示 p0f 识别出的操作系统。
p0f 工具也不能保证100%的准确率,大部分识别工具的结果,都只能提供一定的参考价值。