第4章 IP网络扫描(网络安全评估)

embedded/2025/3/29 19:21:09/

你的网络有多安全?要回答这一问题,最好的方法是对其进行攻击。《网络安全评估》(第二版)为你提供了用于识别和评估网络安全的技巧和工具,通过学习本书,你可以掌握网络安全加固知识,从而避免网络遭受黑客攻击。这本书是2012年中国电力出版社出版的,作者是McNab,翻译是王景新,我读研究生的时候买的(2015年),近日捧起重读,内容至今都不过时~

ailx10

网络安全优秀回答者

互联网行业 安全攻防员

去咨询

通过网络扫描和探测,黑客对目标网络的拓扑结构及其安全机制有了较为清晰的认识,但在真正渗透测试之前,还需要对特定的网络服务进行探测,以便于发现和枚举其中存在的漏洞,因此也是基础中的基础,属于新人入门第一课。

1、ICMP探测

1)ICMP消息类型

  • 类型8:echo请求
  • 类型13:时间戳请求
  • 类型15:信息请求
  • 类型17:子网地址掩码请求

2)ICMP探测工具

  • SING(send icmp nasty garbage) 过时了
  • Nmap/ICMPScan

先看看Nmap,使用Nmap进行ping扫描,-sP标记还会对目标主机的80端口发送SYN和ACK标记的TCP探测包

nmap -sP -PI 192.168.0.1/24

3)识别子网和广播地址

使用Nmap枚举子网和广播地址

nmap -sP 192.168.0.0/24

4)使用ICMP识别操作系统指纹

书中介绍了2004年流行的xpobe软件,现在已经无法使用了,Nmap可以使用-O来识别系统,不过是TCP指纹

nmap -O 192.168.0.0/24

2、TCP端口扫描

1)标准的扫描方法

TCP连接端口扫描,主动建立完整的TCP连接,没有隐蔽性,但是不需要root就能运行,参数是-sT

nmap -sT 192.168.0.100

半开SYN扫描,3次握手的最后一步直接发RST重置报文,不会被服务端记录,但是躲不过防火墙的记录,并且需要root权限,使用-sS标记

2)隐秘TCP扫描方法

反转TCP标记扫描,有FIN探测包,XMAS探测包,NULL探测包,它们有个好听的名字叫圣诞树扫描攻击,其标记分别是-F-X-N ,如果目标端口是关闭的,黑客会收到RST/ACK报文,如果没有响应,说明端口是开放的,或者主机不可达。

ACK标记探测,利用的是黑客发送ACK报文后,分析收到的数据包的ttl、window等字段的差异来判断端口的开放情况,只针对某些操作系统生效,其标记分别是-sA-sW

也可以使用hping3进行分析TTL和Window值。

3)第三方以及欺骗性TCP扫描方法

IP ID头扫描是一种隐秘的扫描技术,黑客利用僵尸主机(192.168.0.1)向目标主机(192.168.0.100)进行欺骗性的端口扫描,并通过对僵尸主机的IP ID查询,来识别目标主机开放的端口,标记是-sI

nmap -P0 -sI 192.168.0.1 192.168.0.100

3、UDP端口扫描

因为UDP是一种无连接协议的特性,进行UDP端口扫描的常见是发送探测包后,等待“ICMP目的端口不可达“消息,以确认UDP端口是关闭的,其标记是-sU

或是采用特定的UDP服务客户端工具,比如dig,发送UDP报文,等待积极的响应结果,如下图所示,很显然UDP53端口是开放的,而UDP22端口是关闭的。同样的可以使用tftp、snmpwalk探测目标主机的UDP端口是否开放。

dig 8.8.8.8 -p 53 -t udp

发布于 2023-05-13 11:56・IP 属地江苏


http://www.ppmy.cn/embedded/176816.html

相关文章

PostgreSQL结构

1.PostgreSQL结构 PostgreSQL 作为一个单机的关系型数据库,与单机Oracle的架构是比较相似的,与MySQL的InnoDB引擎也比较像。据我目前的了解,单机数据库的整体架构都差不太多,都是包含一个主的进程,一些辅助进程&#…

【c++入门系列】:引用以及内联函数详解

🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 最陡的上坡路,往往是通往山顶的捷径;最猛的风暴,才能扬起最远的帆。咬牙坚持的‘再试一次’&#xff…

基于DIFY与DeepSeek搭建AI技术博客智能体:从本地部署到自动化创作

一、项目背景与需求分析 在人工智能技术日新月异的今天,AI技术博客成为开发者获取前沿知识的重要渠道。为满足每日更新一篇高质量AI技术博客的需求,本项目采用DIFY智能体开发平台,结合DeepSeek大语言模型,搭建一个具备自动化创作…

“mysqld --initialize --console ”执行不成功情况总结和解决措施

我的MYSQL版本是9.0.1出现类似下列的报错: 2024-10-29T01:09:55.942951Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start. 2024-10-29T01:09:55.950379Z 0 [Warning] [MY-010915] [Server] NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIV…

Log4j2 的核心实现和源码分析

Log4j2 的核心实现和源码分析 1. 核心组件 1.1 Logger 功能:负责记录日志信息。实现:org.apache.logging.log4j.Logger 接口,org.apache.logging.log4j.core.Logger 类。1.2 Appender 功能:负责将日志信息输出到不同的目的地,如文件、控制台等。实现:org.apache.loggin…

Win10批处理脚本操作注册表教程

这里写目录标题 1. 添加或修改注册表项2. 删除注册表项3. 删除整个注册表键4. 查询注册表项5. 导出注册表项6. 导入注册表项注意事项示例脚本 在 Windows 10 中,你可以使用批处理脚本( .bat 文件)来操作注册表。主要通过 reg 命令实现&…

【后端开发面试题】每日 3 题(二十一)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html 📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家,每天的题目都是独…

go test相关命令

在 Go 项目中,go test 可以用于运行整个工程中的测试文件。以下是几种方式: 1. 运行当前模块或整个工程的测试 go test ./..../... 表示递归测试所有子目录中的测试文件(*_test.go)。适用于 Go Modules 或 GOPATH 结构的项目。 …