网安学习 | Kali安全渗透测试系统之【主机存活及指纹探测】工具学习实践

b0936fa221d188161f11cb5ef92f5ea3.jpeg

adbc7001bb48e61655cf9518a1679810.gif

微信改版了,现在看到我们全凭缘分,为了不错过【全栈工程师修炼指南】重要内容及福利,大家记得按照上方步骤设置「接收文章推送」哦~

关注回复【学习交流群】加入【SecDevOps】学习交流群!

本文为作者原创文章,为尊重作者劳动成果禁止非授权转载,若需转载请在【全栈工程师修炼指南】公众号留言,或者发送邮件到 [master@weiyigeek.top] 中我将及时回复。

免责申明:本文分享旨在给网络安全从业人员、网站开发人员以及运维管理人员在日常工作中进行安全测试以及防范恶意攻击, 请勿恶意使用下面介绍技术进行非法网络攻击,作者不为此承担任何责任,所有渗透都需获取授权,谨防从入门到入狱!

【中华人民共和国网络安全法】: http://www.npc.gov.cn/npc/c30834/201611/270b43e8b35e4f7ea98502b6f0e26f8a.shtml


前言简述:

很久没更新此专栏《#网络安全攻防等保》了,广大的看友们是不是都快忘记此专栏了,不过作者可是一直心心念念的,一定会将此专栏更新下去,希望大家能多多支持此专栏,一杯奶茶的费用,就能让你学习到许多的网安知识(物有所值),并且立即可以利用到自己的相关工作中。

应购买小伙伴的诚挚需求,作者趁着没带娃期间下总结提炼,讲解在Kali系统下针对目标存活检测以及目标的系统指纹探测工具的介绍使用。

在渗透测试前期或者后期,主机存活的探测以及系统指纹的探测尤为重要,它可以让我们明确可以向那些机器发起测试,以及明确不同的操作系统,我们应该扫描不同的特征端口,以及对应系统服务的0Day漏洞以及exploit poc。

例如, 2017年在Windows中爆发的永恒之蓝(Eternal Blue) MS17-010远程溢出漏洞(CVE-2017-0143), 它是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以及在2019年爆发的远程桌面服务中高危远程代码执行漏洞(CVE-2019-0708), 攻击者一旦成功利用该漏洞,便可以在目标系统上执行任意代码,以此来控制被入侵的计算机。

所以,做好前期的扫描探测可以为后续渗透测试打下一个良好的基础,这也是作者的初衷,此文本罗列出Kali渗透测试系统中的相关安全工具,快速进行目标主机的存活(alive)以及指纹(fingerprint)探测,希望能帮助各位网络安全初学者、爱好者、从业者

温馨提示: Windows 下载的渗透测试工具包 PentestBox 下的安装使用可参考此篇《网安工具 | Windows便携式渗透测试环境PentestBox入门到进阶使用指南》文章。

原文连接:网安学习 | Kail安全渗透测试系统之【主机存存活及指纹探测】工具学习实践本章介绍在Kali系统下针对目标存活检测及系统指纹探测工具的简单使用,在渗透测试前期或后期,主机存活的探测及系统指纹的探测尤为重要,它可以让我们明确可以向那些机器发起测试,以及明确不同的操作系统应该扫描不同的特征端口,以及对应系统服务的漏洞icon-default.png?t=N7T8https://mp.weixin.qq.com/s/K1vkShTvBDQSZw1ooXjTMg


文章目录

a9f513ea9b537d9f08b2271575638fb0.png

0x00 前置知识

针对端口扫描有哪几种类型?

描述: 针对系统主机端口的扫描通常有如下四种扫描方式,即: TCP扫描、UDP扫描、SYN扫描、隐秘扫描,下面一一简单做个介绍:

  • TCP 端口扫描:即 TCP 连接端口扫描,利用TCP三次握手(Threeway handshaking)方式(SYN -> SYN+ACK -> ACK), 它通过发送TCP连接请求到目标主机的各个端口,根据响应判断端口是否开放,常用的工具有 Nmap、Masscan等。

efc1bf6933a49e9788fcf5c000584f28.png
weiyigeek.top-TCP 扫描图
  • UDP 端口扫描:即 UDP 连接端口扫描,与TCP端口扫描类似,但是针对UDP协议。例如发出UDP数据包给目标主机的UDP Port,然后等待目标主机送回的ICMP unreachable消息以此来判断,其缺点是UDP协议不可靠,可能被防火墙过滤,常用的工具有Nmap、Masscan等。

  • SYN 端口扫描: 即 SYN 连接端口扫描(称为半打放扫描),利用没有完成TCP三次握手的方式( SYN -> SYN+ACK -> ACK [不会发出] ),其与TCP端口扫描相比,SYN扫描不会建立完全的TCP连接,因此更隐蔽,常用的工具有Nmap、Hping等。

0d520a41aefe65c8742f971785dba444.png

weiyigeek.top-SYN端口扫描图
  • 隐秘扫描:几种常见的端口扫描方式,还有其他一些扫描技术,例如

    • Null 扫描:利用 TCP 协议中的一个特性,发送不带任何标志位的TCP包到目标端口,如果目标端口关闭,则不会响应,常用的工具有Nmap、Hping等。

    • FIN 扫描:与NULL扫描类似,发送带有FIN标志位的TCP包到目标端口,如果目标端口关闭,则不会响应, 不过此种技巧通常只工作在基于UNIX的TCP/IP协议上,常用的工具有Nmap、Hping等。

    • SYN/ACK 扫描:发送一个SYN/ACK分组,测知防火墙的规则设计,它可确定防火墙是否只是简单的分组过滤(只允许已建立好连接),还是一个基于状态的防火墙(可执行高级的分组过滤);

    • XMAS 扫描:这一技巧是往目标端口发送一个FIN、URG、PUSH置位的分组,如果目标端口关闭,则返回一个RST分组;

针对端口有哪些扫描策略?

描述: 针对不同环境的系统主机端口扫描,应该采用不同的扫描策略以应对防火墙、IPS(入侵检测系统)等安全设备的拦截预警。

「常见的扫描策略」

  • 全面扫描:对目标主机的所有可能端口进行扫描,此种扫描策略可以确保不会错过任何潜在的开放端口,但可能会消耗较长时间和网络资源,以及被安全设备拦截并触发安全警报风险。

  • 快速扫描:只扫描常见的端口,如常用的服务端口(如HTTP的80端口、FTP的21端口等),此种扫描策略速度较快,但可能会错过一些非常见的开放端口(即自定义服务端口)。

  • 特定端口扫描:只扫描用户指定的特定端口,此种扫描策略适用于对特定服务或应用程序进行目标扫描,基于已知系统指纹的情况下使用。

  • 机扫描: 随机选择一些端口进行扫描,此种扫描策略可以增加对目标主机的探测难度,但也可能错过重要的开放端口。

「特殊的扫描策略」

慢扫描(Slow Scan):与快速扫描相对, 慢扫描尽量减小扫描活动对目标主机的影响,同时也增加了扫描的隐蔽性, 它可以模拟正常的网络流量,使扫描活动更难被检测到, 慢扫描通常采取以下技术手段:

1.控制扫描速度:将扫描速度限制在较低的速度,以减小对目标主机的负荷和影响。这可以通过设置延迟时间或限制并发连接数来实现。2.IP分段扫描:将扫描任务分成多个较小的IP段进行扫描,以避免在短时间内对目标主机进行大量的连接尝试。3.伪装扫描源:使用代理服务器、匿名化网络或通过多个中间主机进行扫描,以隐藏扫描源的真实IP地址。4.随机扫描顺序:随机选择需要扫描的端口和顺序,以增加扫描的隐蔽性,避免被目标主机的入侵检测系统识别为扫描活动。

碎片扫描(Slow Scan): 利用IP数据包碎片化来绕过防火墙或入侵检测系统的端口扫描技术,即大的数据包会被分割成小的IP数据包进行传输,然后在目标主机上重新组装成完整的数据包。碎片扫描利用了这个过程中的漏洞,将一个扫描请求分成多个小的IP数据包,每个数据包只包含部分的扫描请求信息。当这些碎片化的数据包到达目标主机时,防火墙或入侵检测系统可能无法完整地识别扫描请求,并因此无法正确地检测和阻止扫描活动。

1.分割扫描请求:将扫描请求分成多个小的IP数据包,每个数据包只包含部分的扫描请求信息。2.伪装碎片:通过修改IP数据包的偏移量和标识字段等信息,使得目标主机无法正确地组装这些碎片化的数据包。3.乱序发送:按照不同的顺序发送碎片化的数据包,以增加扫描的隐蔽性,使得目标主机更难识别和阻止扫描活动。

欺骗扫描(Deceptive Scanning): 利用伪造的源IP地址或其他技术,使得扫描流量看起来像是来自于受信任的主机或网络。这样,目标主机或网络设备会误认为扫描流量是合法的通信,从而不会对其进行阻止或记录, 常见的欺骗扫描技术包括:

1.分割扫描请求:将扫描请求分成多个小的IP数据包,每个数据包只包含部分的扫描请求信息。2.伪装碎片:通过修改IP数据包的偏移量和标识字段等信息,使得目标主机无法正确地组装这些碎片化的数据包。3.乱序发送:按照不同的顺序发送碎片化的数据包,以增加扫描的隐蔽性,使得目标主机更难识别和阻止扫描活动。

协同扫描(Coordinated Scanning): 通过多个主机同时进行端口扫描,以快速地发现目标网络中的开放端口,它是为了避免被安全设备发现以及提高扫描效率,节省时间和资源。协同扫描通常由专门的扫描工具或平台来实现,这些工具可以协调和管理多个扫描节点的工作,每个扫描节点可以是独立的主机,也可以是分布在不同地理位置的主机,通过合理规划和配置扫描节点,可以达到更高效的端口扫描结果。


0x01 主机存活探测相关工具

1.ping 命令 - 设备中最常见的检测主机、设备是否在线

描述: 此命令通常可以在windowslinux嵌入式设备查看到其身影,主要用于使用icmp报文协议访问指定的目标地址,检测其是否存活(在线),若防火墙禁用了ICMP ECHO 请求或响应则无法使用此命令正确探测到主机是否存活,只能换用其他方法了。

「语法参数:」

Usage
  ping [options] <destination>
Options:
  <destination>      dns name or ip address
  -a                 use audible ping
  -A                 use adaptive ping
  -B                 sticky source address
  -c <count>         stop after <count> replies
  -C                 call connect() syscall on socket creation
  -D                 print timestamps
  -d                 use SO_DEBUG socket option
  -e <identifier>    define identifier for ping session, default is random forSOCK_RAW and kernel defined for SOCK_DGRAM Imply using SOCK_RAW (for IPv4 only for identifier 0)
  -f                 flood ping
  -h                 print help and exit
  -I <interface>     either interface name or address
  -i <interval>      seconds between sending each packet
  -L                 suppress loopback of multicast packets
  -l <preload>       send <preload> number of packages while waiting replies
  -m <mark>          tag the packets going out
  -M <pmtud opt>     define mtu discovery, can be one of <do|dont|want>
  -n                 no dns name resolution
  -O                 report outstanding replies
  -p <pattern>       contents of padding byte
  -q                 quiet output
  -Q <tclass>        use quality of service <tclass> bits
  -s <size>          use <size> as number of data bytes to be sent
  -S <size>          use <size> as SO_SNDBUF socket option value
  -t <ttl>           define time to live
  -U                 print user-to-user latency
  -v                 verbose output
  -V                 print version and exit
  -w <deadline>      reply wait <deadline> in seconds
  -W <timeout>       time to wait for response
IPv4 options:
  -4                 use IPv4
  -b                 allow pinging broadcast
  -R                 record route
  -T <timestamp>     define timestamp, can be one of <tsonly|tsandaddr|tsprespec>
IPv6 options:
  -6                 use IPv6
  -F <flowlabel>     define flow label, default is random
  -N <nodeinfo opt>  use icmp6 node info query, try <help> as argument

「常用命令:」

# 1.指定eth0网卡使用IPV4地址使用icmp协议发送128 + 8 字节的数据包四次,注:默认发送64字节
ping -c 4 -4 -I eth0 www.weiyigeek.top -s 128
  # PING www.weiyigeek.top (82.156.18.253) from 192.168.228.138 eth0: 128(156) bytes of data.
  # 136 bytes from 82.156.18.253 (82.156.18.253): icmp_seq=1 ttl=128 time=31.2 ms

# 2.定义生存时间为32并使用IPV6地址使用icmp协议发送消息, 最后设置等待响应的时间为1
ping -6 www.weiyigeek.top -W 1 -t 32

知识扩展: 说到ping命令检测主机存活,不得不提到ICMP协议,除了检测主机存活外,我们还可以使用其来识别目标的指纹信息。

ICMP (基于 Internet Control Message Protocol 协议)堆栈指纹技术是一种用于识别和分析网络设备的技术,,通过发送特定类型的ICMP请求并观察设备返回的ICMP响应来获取设备的堆栈信息,通过分析这些响应,可以确定设备所使用的操作系统和网络协议栈的版本。

工作原理: 发送特定类型的ICMP请求 -> 分析ICMP响应 -> 构建堆栈指纹数据库

针对于ICMP端口不可达消息,其送回包的服务类型(TOS)值也是有差别的, 大多数系统OS是0,而Linux则是0xc0。

44cf86ea974da76295b9afd9e55ba94e.png

weiyigeek.top-图

然而由于ICMP协议的特性,ICMP堆栈指纹技术可能会受到一些限制和干扰,例如网络设备对ICMP请求的过滤或响应的修改,指纹不一定准确此时便可使用后续介绍到的相关工具进行辅助验证。

知识扩展:如果是在 Windows 系统中执行ping 主机,我们可以根据其TTL(ICMP回显应答)来判断主机是什么系统(小技巧),虽说不一定正确,但是通常情况下是没有问题的,值得注意的是每当经过一个路由网关后,其返回的TTL数就会减1

FreeBSD 、Unix 及UNix/Cisco 12.0       TTL为255
Compaq TRu64 / linux / win7(32位)      TTL为64
Windows 95/98/98SE/ME                  TTL为32
Window 9x / 2000 / NT / window7(64) / windows 10/11 TTL为128
Digital Unix 4.0 Alpha  / AIX 4.3.x IBM/RS6000      TTL为60
Linux 2.2.x Intel                                   TTL为64
Netware 4.11 Intel                                  TTL为128
Solaris 8 Intel/Sparc                               TTL为64

436dcf1b3ce00fcd8c6e380b0edcd7a6.png

weiyigeek.top-Windows下执行ping命令判断系统指纹图

完整原文:网安学习 | Kail安全渗透测试系统之【主机存存活及指纹探测】工具学习实践本章介绍在Kali系统下针对目标存活检测及系统指纹探测工具的简单使用,在渗透测试前期或后期,主机存活的探测及系统指纹的探测尤为重要,它可以让我们明确可以向那些机器发起测试,以及明确不同的操作系统应该扫描不同的特征端口,以及对应系统服务的漏洞icon-default.png?t=N7T8https://mp.weixin.qq.com/s/K1vkShTvBDQSZw1ooXjTMg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 1. 首先在Kali Linux中打开终端。 2. 输入以下命令以更新Kali Linux:sudo apt-get update 3. 安装Volatility工具:sudo apt-get install volatility 4. 等待安装完成后,输入以下命令以验证安装:volatility -h 5. 如果成功安装,将显示Volatility工具的帮助菜单。 6. 现在您可以使用Volatility工具来分析内存映像文件。 ### 回答2: Kali是一款流行的安全测试和渗透测试工具,它为安全研究人员和黑客提供了许多有用的工具和功能。Volatility是一款专门用于分析内存镜像的工具,它可以帮助用户发现潜在的恶意代码、病毒和其他安全漏洞。 Kali默认安装了Volatility工具,但在某些情况下,用户可能需要手动安装它。以下是在Kali中手动安装Volatility工具的步骤: 第一步:更新Kali系统 在安装任何新软件之前,最好先更新Kali系统。可以使用以下命令更新: sudo apt-get update sudo apt-get upgrade 第二步:安装Python Volatility需要使用Python 2.6或更高版本,因此需要先安装Python。可以使用以下命令安装: sudo apt-get install python2.7 第三步:安装依赖项 在安装Volatility之前,需要安装一些依赖项。可以使用以下命令安装: sudo apt-get install pcregrep libsmdev-utils libsmdev1 libsmraw-utils libsmraw1 python-crypto python-distorm3 python-pefile python-pxdlib python-pytsk3 python-boto python-dateutil python-defusedxml python-dfdatetime python-dfvfs python-dfwinreg python-oauth python-openpyxl python-requests python-xlrd sleuthkit zlib1g-dev 第四步:下载Volatility 可以从Volatility的官方网站https://www.volatilityfoundation.org/releases下载最新的稳定版本。下载后将文件解压缩到Kali的文件系统中。 第五步:运行Volatility 现在,可以通过运行以下命令来启动Volatility: python vol.py 这将打开一个交互式命令行界面,用户可以使用其中的各种命令来分析内存镜像。 总结: 安装Volatility需要在Kali上安装Python和一些依赖项。然后,用户需要从Volatility的官方网站上下载最新版本。最后,用户可以使用python vol.py命令来启动Volatility,并使用其内置的命令来进行内存镜像分析。 ### 回答3: Kali Linux是基于Debian的Linux发行版,它提供了各种安全测试和渗透测试工具。其中,Volatility是一种开源的内存取证工具,它可以帮助分析内存镜像中的恶意代码和缓解攻击活动。本文将讲述如何在Kali Linux中安装Volatility工具。 第一步是从官方网站上下载Volatility工具。我们可以通过以下命令在终端中打开官方网站: ``` firefox https://www.volatilityfoundation.org/releases ``` 在浏览器中,我们可以找到可下载的最新版本的工具。我们需要下载 .zip 文件。 第二步是解压缩下载的文件,可以通过以下命令在终端中进行: ``` unzip volatility-2.6.1.zip ``` 第三步是安装Python和PIP。Volatility是基于Python编写的,因此我们需要先安装Python才能使用它。我们可以使用以下命令检查Python是否已经安装: ``` python --version ``` 如果Python未安装,我们可以使用以下命令安装Python: ``` apt install python3 apt install python3-pip ``` 第四步是安装Volatility所需的依赖项。为了使Volatility正常运行,我们需要安装一些必要的依赖项。可以使用以下命令安装它们: ``` pip3 install distorm3 pip3 install pycrypto pip3 install openpyxl pip3 install yara-python ``` 第五步是测试安装。如果所有依赖项都正确安装,我们就可以使用Volatility工具了。我们可以使用以下命令来验证安装是否成功,并输出工具的帮助信息: ``` cd volatility-2.6.1/ python3 vol.py -h ``` 如果成功安装,并且命令行界面输出了Volatility的帮助信息,那么我们就可以愉快地使用了。 综上所述,以上是在Kali Linux中安装Volatility工具的步骤。Volatility工具是一种非常有用的内存取证工具,可以帮助我们分析攻击活动和恶意代码,从而更好地保护我们的系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈工程师修炼指南

原创不易,赞赏鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值