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 上是套不上的。

相关推荐
Decay__7 小时前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
java_logo9 小时前
Docker 部署 Dify:轻松搭建 LLM 应用开发平台
运维·docker·容器
方便面不加香菜11 小时前
Docker Container -- 综合实战案例详解
运维·docker·容器
LongRunning11 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
海洋之恒12 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
迪康coolmu13 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
民乐团扒谱机14 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜15 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021115 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu