Linux 底层知识点 1

目录

研究Linux对抗的前提

三条读法建议

[windows ---> Linux 对抗技术对比表](#windows ---> Linux 对抗技术对比表)

总对照表

说明为什么

[PE 结构层免杀(节表/IAT/重定位/附加数据) → ELF 层几乎没有对应实践](#PE 结构层免杀(节表/IAT/重定位/附加数据) → ELF 层几乎没有对应实践)

[ShellCode 加密 / 编码 → 概念通用,但载体不同](#ShellCode 加密 / 编码 → 概念通用,但载体不同)

[Loader 执行载体(11 种) → memfd + fexecve / mmap exec / dlopen / .init_array / 信号处理](#Loader 执行载体(11 种) → memfd + fexecve / mmap exec / dlopen / .init_array / 信号处理)

[注入(远程线程 / APC / 镂空 / 映射) → ptrace / /proc/pid/mem / process_vm_writev](#注入(远程线程 / APC / 镂空 / 映射) → ptrace / /proc/pid/mem / process_vm_writev)

[IAT Hook → PLT/GOT 覆写](#IAT Hook → PLT/GOT 覆写)

[API 劫持 / DLL 劫持 → LD_PRELOAD / /etc/ld.so.preload](#API 劫持 / DLL 劫持 → LD_PRELOAD / /etc/ld.so.preload)

[反调试(28 个点) → ptrace TRACEME / TracerPid / PPID / SIGTRAP / 时间差](#反调试(28 个点) → ptrace TRACEME / TracerPid / PPID / SIGTRAP / 时间差)

[反虚拟化(注册表 / 服务 / 设备名) → DMI / procfs / cpuinfo / MAC / systemd-detect-virt](#反虚拟化(注册表 / 服务 / 设备名) → DMI / procfs / cpuinfo / MAC / systemd-detect-virt)

[反沙箱(开机时长/内存/核数/用户交互) → uptime 通用;容器特征成为新维度](#反沙箱(开机时长/内存/核数/用户交互) → uptime 通用;容器特征成为新维度)

[持久化(注册表 Run / 计划任务 / 服务) → systemd / cron / shell 启动文件 / ld.so.preload / PAM / udev / SSH](#持久化(注册表 Run / 计划任务 / 服务) → systemd / cron / shell 启动文件 / ld.so.preload / PAM / udev / SSH)

[ETW 绕过 / 日志绕过 → auditd / syslog / wtmp / eBPF 可观测性](#ETW 绕过 / 日志绕过 → auditd / syslog / wtmp / eBPF 可观测性)

[内核层(BYOVD / 回调摘除 / DKOM / minifilter / PPL) → LKM / ftrace / kprobes / eBPF / task_struct DKOM / io_uring](#内核层(BYOVD / 回调摘除 / DKOM / minifilter / PPL) → LKM / ftrace / kprobes / eBPF / task_struct DKOM / io_uring)

[权限提升(UAC / 令牌 / Potato) → SUID/SGID / sudo 配置 / capabilities / 内核 LPE / polkit](#权限提升(UAC / 令牌 / Potato) → SUID/SGID / sudo 配置 / capabilities / 内核 LPE / polkit)

[凭据与横向(LSASS / NTLM / Kerberos / PTH) → SSH 私钥 / authorized_keys / sudo 缓存 / 云元数据 / Docker socket](#凭据与横向(LSASS / NTLM / Kerberos / PTH) → SSH 私钥 / authorized_keys / sudo 缓存 / 云元数据 / Docker socket)


研究Linux对抗的前提

  • Windows 技术是围绕一个特定威胁模型长出来的:

    • 「用户双击一个文件,安全软件从磁盘到内存层层检查它」。

    • 那套技术里的大部分(PE 结构改写、壳、多态、IAT 重建、执行载体多样性)都是为这个问题服务的。

  • Linux 的威胁模型不一样。

    • 攻击者很少需要「投递一个文件」------ 常见入口是弱口令、暴露的服务、泄露的凭据、供应链。

    • 也就是说,Linux 上很多时候压根没有「让它跑起来」这一步。

  • 所以正确的读法是:

    • 不要问「Linux 怎么做同样的事」,要问「Linux 上这个问题存不存在」。

    • 本文档里标成「无对应」的那些条目,就是这个问题的否定答案。

三条读法建议

  • 『Linux 上有没有对应』这个问题 ------看 mapping_summary 那张表就够。

  • 如果你想判断『该不该学 Linux 这块』------ 先看 threat_model,大部分人的 Windows 免杀知识在 Linux 上迁移不过去,不是因为技术难,是因为问题不一样。

  • 如果你想找学习入口 ------ 从内核层那一节开始,不要从执行载体开始,Linux 上执行载体那一层是被压缩的,内核那一层才是展开的。

windows ---> Linux 对抗技术对比表

总对照表

|---------------------------------------------|----------------------------------------------------------------|-------|
| Windows 技术 | Linux 对应 | 对应程度 |
| PE 结构层免杀(节表/IAT/重定位/附加数据) | ELF 层几乎没有对应实践 | 无对应 |
| ShellCode 加密 / 编码 | 概念通用,但载体不同 | 近似 |
| Loader 执行载体(11 种) | memfd + fexecve / mmap exec / dlopen / .init_array / 信号处理 | 近似 |
| 注入(远程线程 / APC / 镂空 / 映射) | ptrace / /proc/pid/mem / process_vm_writev | 只解决一半 |
| IAT Hook | PLT/GOT 覆写 | 精确 |
| API 劫持 / DLL 劫持 | LD_PRELOAD / /etc/ld.so.preload | 精确 |
| 反调试(28 个点) | ptrace TRACEME / TracerPid / PPID / SIGTRAP / 时间差 | 近似 |
| 反虚拟化(注册表 / 服务 / 设备名) | DMI / procfs / cpuinfo / MAC / systemd-detect-virt | 近似 |
| 反沙箱(开机时长/内存/核数/用户交互) | uptime 通用;容器特征成为新维度 | 近似 |
| 持久化(注册表 Run / 计划任务 / 服务) | systemd / cron / shell 启动文件 / ld.so.preload / PAM / udev / SSH | 近似 |
| ETW 绕过 / 日志绕过 | auditd / syslog / wtmp / eBPF 可观测性 | 近似 |
| 内核层(BYOVD / 回调摘除 / DKOM / minifilter / PPL) | LKM / ftrace / kprobes / eBPF / task_struct DKOM / io_uring | 近似 |
| 权限提升(UAC / 令牌 / Potato) | SUID/SGID / sudo 配置 / capabilities / 内核 LPE / polkit | 近似 |
| 凭据与横向(LSASS / NTLM / Kerberos / PTH) | SSH 私钥 / authorized_keys / sudo 缓存 / 云元数据 / Docker socket | 无对应 |

  • 看第三列「无对应」占了两行,而它们在 Windows 侧都是很大的板块(PE 结构层、凭据与横向)
  • 这不是遗漏 ------ 这两块在 Linux 上确实没有意义。

说明为什么

PE 结构层免杀(节表/IAT/重定位/附加数据) → ELF 层几乎没有对应实践

对应程度:无对应

  • 不是因为 ELF 更难改,是因为 Linux 上没有『落地就被扫』这道关。PE 层那些手段的收益全部来自『静态扫描器读你的文件』这个前提,这个前提在 Linux 侧不成立。
ShellCode 加密 / 编码 → 概念通用,但载体不同

对应程度:近似

  • Linux 侧对应物是『加密的 stage2 二进制 / 加密的脚本』,不是 shellcode。因为 Linux 有 execve,你要的效果一行命令就有,不需要先造一段机器码。
Loader 执行载体(11 种) → memfd + fexecve / mmap exec / dlopen / .init_array / 信号处理

对应程度:近似

  • 目的相同(把代码跑起来),机制完全不同。
  • Windows 那 11 种大多是在『绕 API 钩子 + 找不寻常的调用栈』,Linux 上 EDR 不靠用户态钩子拿数据,所以这个动机不存在。
注入(远程线程 / APC / 镂空 / 映射) → ptrace / /proc/pid/mem / process_vm_writev

对应程度:只解决一半

  • 机制都在,但生态里不是主流。拿到 shell 后你已经有代码执行,注入解决的是『我进不去别人进程』这个问题,而 Linux 上这个问题通常不存在。
IAT Hook → PLT/GOT 覆写

对应程度:精确

  • IAT 和 GOT 都是『调用跳转表』,改表项就改行为。
  • 这是全清单里对应最精确的一对。
API 劫持 / DLL 劫持 → LD_PRELOAD / /etc/ld.so.preload

对应程度:精确

  • 都是符号解析顺序劫持。但 Linux 的全局版本(ld.so.preload)比 Windows 的等价物(AppInit_DLLs)能力强得多,也持久得多。
反调试(28 个点) → ptrace TRACEME / TracerPid / PPID / SIGTRAP / 时间差

对应程度:近似

  • 数量上少得多 ------ 因为 Linux 上调试基本就是 ptrace 一个机制。Windows 那 28 个点里有相当一部分是在检查『Windows 特有的内核结构和调试 API』,那些在 Linux 上不存在,也就不需要检测。
反虚拟化(注册表 / 服务 / 设备名) → DMI / procfs / cpuinfo / MAC / systemd-detect-virt

对应程度:近似

  • 目的相同,但 Linux 侧更简单 ------ systemd-detect-virt 一条命令直接给答案。反过来 Linux 侧更重要的是容器检测,那是 Windows 侧不成体系的一块。
反沙箱(开机时长/内存/核数/用户交互) → uptime 通用;容器特征成为新维度

对应程度:近似

  • 沙箱在 Linux 侧的常见形态是容器而不是 VM,所以 /proc/1/cgroup 和 /.dockerenv 这类容器特征比开机时长更有判别力。
持久化(注册表 Run / 计划任务 / 服务) → systemd / cron / shell 启动文件 / ld.so.preload / PAM / udev / SSH

对应程度:近似

  • Linux 的持久化选择面远比 Windows 大。Windows 的持久化点是被微软主动收敛过的(有明确的枚举清单),Linux 是一堆松散机制各自演化出来的,可插拔点多。
ETW 绕过 / 日志绕过 → auditd / syslog / wtmp / eBPF 可观测性

对应程度:近似

  • 轴的差别比机制差别更大:Windows 是『把遥测源关掉』,Linux 更常见的是『不留日志』。而且 Linux 的日志是普通文件,可写,这跟 Windows 事件日志的数据库模型完全不同。
内核层(BYOVD / 回调摘除 / DKOM / minifilter / PPL) → LKM / ftrace / kprobes / eBPF / task_struct DKOM / io_uring

对应程度:近似

  • ★ 最大的结构性差别:Windows 内核准入被四道门堵死(签名信任、HVCI、驱动黑名单、测试签名无实义),Linux 侧模块签名很多发行版默认不强制。所以 R3→R0 这条路 Windows 是关的、Linux 是开的。
权限提升(UAC / 令牌 / Potato) → SUID/SGID / sudo 配置 / capabilities / 内核 LPE / polkit

对应程度:近似

  • 完全不同的机制集。Windows 的提权围绕令牌和完整性级别,Linux 围绕文件权限位、capabilities 和内核漏洞。
凭据与横向(LSASS / NTLM / Kerberos / PTH) → SSH 私钥 / authorized_keys / sudo 缓存 / 云元数据 / Docker socket

对应程度:无对应

  • 这是两个完全不同的认证世界。Windows 是域 + 集中式凭据存储,Linux 是分散的密钥文件和信任关系。把 PTH 的思路套到 Linux 上是套不上的。

相关推荐
Eloudy1 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技2 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu2 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
发量惊人的中年网工2 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
海宇数据2 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
翼龙云_cloud2 小时前
亚马逊云服务器服务代理商:Bedrock 实践经验 Serverless 架构下的 AI 自动化落地
服务器·架构·serverless·云计算·aws
忆挽篱笙歌3 小时前
环境变量,本地变量
linux·运维·服务器
码间留白4 小时前
手把手把 GitHub 推上阿里云 ECS:Actions CI/CD 全链路避坑实录(折腾好几天,到 2 分钟见绿)
运维·阿里云·ci/cd·docker·devops·github actions
吹什么轩5 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php