渗透测试战技 101
知识触发战技,战技刻意练习得到经验,经验反思源头,得到创新力。我们需要模仿与练习。 ---
--sec875
nmap
https://tryhackme.com/room/vulnversity
比战技更重要的是源头的查阅,此意识可以让大脑保持在舒适区且命中根源。
为什么这件事情很重要? why ?因为您无法保证自己学到的东西永远都用于工作,它会健忘掉。
提前说明 :官方手册, man 手册,帮助命令等都是用于辅佐,不存在谁比谁权威,全。请自己思考并取
舍。并放弃一劳永逸的想法。
请确保能找到官方手册和利用 man nmap 。
https://nmap.org/
找到 nmap 功能性参数 还是 记住开关的 flag ?
主机发现
基于 ICMP 的主机发现 还是 端口响应包的预期值主机发现?不,还能将意识提升到基于 SYN 和 ACK 几个
步骤中的具体发哪一种包,刻意的改包和重放来主机发现。
【注意】:这里不会引申出更丰富的网络包修改,重放与基线防御配置。因为它们于我的工作量过于巨
大。您知道,寻找这一处容易,但此文章一旦开头就得所有。因此,我将给出地方,防御配置不在这里
讨论与观察: https://www.scaprepo.com/ CCE 编号为国际防御配置基准线。尽力了,师傅们。
-sL (列表扫描 ) , -sP (Ping 扫描 ) , -P0 ( 无 ping) , -PS [portlist] (TCP SYN Ping) , -PA
[portlist] (TCP ACK Ping) , -PU [portlist] (UDP Ping) , -PE; -PP; -PM (ICMP Ping
Types), -PR (ARP Ping) , -n ( 不用域名解析 ) , -R ( 为所有目标解析域名 ) , --system-dns ( 使用
系统域名解析器 ) 举一个例子,足以说明这种战技的观察力与创造力,使用 -sP 发送 ping 扫描。它发送了什么网络
包?我以后使用网络包修改与重放修改哪里?哪些预期结果可以确认主机的存活?
129 为 kali 机器。因为提前读过文档,知道它会发一个 ICMP echo 的请求包与 TCP 80 ( root 特权)
请求包用于探测。得到的主机存活响应包也回复了一个 ICMP echo 响应包并且回复了一个 TCP 80
RST 响应包。所以,我们知道此主机确实是在的。
不妨思考一下, ICMP 的 type 8 类型(以及其他协议字段值? RFC 文档看看哪些处于实验期?)修改
成别的? TCP 80 端口改改?
这就是为什么,会存在其他方式与参数来尝试性的看看响应,设备会不会出现意外的响应包?或者
意外的情况?
端口扫描基础
open( 开放的 ) , closed( 关闭的 ) , filtered( 被过滤的 ) , unfiltered( 未被过滤的 ) , open|filtered( 开
放或者被过滤的 ) ,或者 closed|filtered( 关闭或者被过滤的 )
nmap 的信息细节颗粒度更多。它的意识提升到了,很多复杂情况性的思考,不同响应包的情况。我们
需要掌握此处,用于以后进阶其他技术材料。
该端口接收 TCP 连接或者 UDP 报文,说明它正在工作,那么主机自然是存活的。 open( 开放的 )
因为没有应用程序在其端口上监听,因此状态是 closed( 关闭的 ) ,这种影响可能是丢包,抖动或者暂时
性的不监听。所以,值得再扫描一下,可能一些又开放了。
filtered( 被过滤的 ) :包阻塞器或者防火墙会丢弃包,或者响应 ICMP 错误消息如类型 3 代码 13 ( 无法到达
目标 : 通信被管理员禁止 ) 。 nmap 会多次尝试,使得扫描速度明显变慢。基于这种慢于快的基准,也能帮
助我们识别是否存在阻塞与防火墙。
unfiltered( 未被过滤的 ) :端口可访问,但 Nmap 不能确定它是开放还是关闭。发送 ACK 请求包的探测才
会被分类到此状态,还需要使用其他类型,如窗口扫描, SYN 扫描,或者 FIN 扫描来扫描未被过滤的端
口,进一步确认端口是否开放。
open|filtered( 开放或者被过滤的 ) :无法确定端口是开放还是被过滤的, Nmap 就把该端口划分成 这
种状态。比如使用 UDP , IP 协议, FIN , Null ,和 Xmas 扫描时,没有响应包回来。这对于 UDP 也许是开
放的,但也可能被防火墙设备丢弃了。closed|filtered( 关闭或者被过滤的 ) :注意 man 手册与官方文档中的一些差异性。 Idle 扫描为空闲态扫
描。
【请记住】:所有的情况都是基于响应包的结果来判断状态的。这些状态结果与目标主机也许不可信,
它们返回迷惑性响应包迷惑了 nmap ,更普遍的是非 RFC 兼容的主机以不正确的方式响应 Nmap 探测。您
知道, RFC 文档只是协议的标准,具体产品的实现存在着差异性。我们可以观察具体的响应包来确认。
比如您修改了某一项值,但是它在 RFC 文档中标记为盲区,响应包返回错误,或者不支持该值。那么机
会就来,它确实存在但是仅仅是不支持而已?想想与类比 burpsutie 的抓包与重放,都是一个道理与观察
得到的。
端口扫描技术
一个很好的例子是 -sW (TCP 窗口扫描 ) ,它的请求包篡改了不同系统对于 TCP 窗口值的值不同,响
应包返回了窗口的大小还是 0 。
基于这个例子,可以把大家带入到就和 burpsutie 的使用一样,就是修改值然后观察不同的响应包情况来
判断,有或者没有。这不过这里把 burpsutie 换一个网络包的修改与重放工具罢了。思维同源。
其他开关自行阅读文档。
TCP IPID Idle 空闲态扫描 ( -sI)
互联网上的每个 IP 包都有一个片段身份证号码( IP ID )。由于许多操作系统只是为他们发送的每个数据
包增加这个数字,探测 IPID 可以告诉攻击者已经发送了多少数据包自上次探测。
这种侧信道攻击技巧,源于一种思考,我把源 IP 地址改改,别人不就不清楚我是谁呢?改成它们信
任的 IP 地址?入侵检测系统 (IDS) 的记录将全都是错的。不要说什么看不懂和还没有成熟。一个 TCP 包中的 IPID 到底在哪里?它有那么难找吗?它在什么工
具中?
观察一下 IPID
服务和版本探测
当端口探测结束后,版本探测会继续询问这些端口,确定到底什么服务正在运行。
/usr/share/nmap/ 在 nmap 文件夹中
基于 nmap-services 数据库的匹配结果,给出具体的端口服务,比如 22 端口为什么是 SSH ?它又是怎么识别版本的? 基于 nmap-service-probes 数据库的匹配表达式。那它把 ssh 的 22 端口改成非默认的不行吗?这就是为什么再加上一个版本探测进来的原因。我都匹
配到了你 SSH 版本的信息了,还不能确认你是 SSH 服务吗?
您想给 nmap 做贡献吗?这绝对是一件有意义的事情。
操作系统探测 Nmap 脚本引擎 (NSE)
关于脚本的使用,需要注意到文件名的分类性,还有安全或者不安全的脚本分类。在基于了解情况
的使用脚本是一种很好的意识思维。不要让一切都失控。
时间和性能
有人说 nmap 很慢,那么这里的开关可以与其他工具的速度比一比
防火墙 /IDS bypass 与欺骗
要清楚的是,这里也能伪装一些元数据信息。当然,这里的方法已经众所周知,需要基于这里的思
维,寻找和测试其他的攻击向量。或者说是其他角度的键与值。
到了这里,您应该对官方文档和 man 手册有一个很好的熟悉度。
ICMP 反向 shell
netcat 常用于渗透测试中的 getshell 工具之一。还有很多流行的 shell 文件, Reverse TCP
Meterpreter 、 C99 PHP web shell 、 JSP web shell 等
这里就不讲 netcat shell 了,因为 man netcat 解决一切问题。观察与翻译一下说明,马上就能明白
功能项开关的意思。
这里聊聊一种场景。进出服务器的通信受到防火墙的保护和过滤,并且不允许在任何侦听端口上进行
TCP shell 通信。 那么基于 TCP 的绑定 shell 与反向 shell 自然就不成立了。
但是许多环境又允许发送和接收 ping 请求,用于故障诊断的需求。 Ping 请求于 ICMP 协议中。
我们知道 ICMP 的 data 字段,请求包是什么值,响应包就返回什么值回来。如果不一致则说明确实
存在故障了。
渗透测试战技101
文档预览
中文文档
43 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共43页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2023-03-04 11:18:11上传分享