声明

  1. 本文内容仅用于安全研究与技术学习,旨在分析隐藏进程相关实现及检测思路。
  2. 文中涉及的技术与代码具有潜在滥用风险,请勿用于未授权场景或任何非法用途。
  3. 相关实验与验证应在隔离的测试环境中进行,避免对真实系统造成影响。
  4. 作者不对因使用本文内容而产生的任何直接或间接后果负责。

什么是应用层隐藏进程

应用层隐藏进程本质不是让进程真的从内核消失,而是:

让“观察者看不到”或“看到被篡改后的结果”

换句话说:

  • 内核里的进程仍然存在
  • 只是用户态工具(pstop等)被“喂了假数据”

因此,应用层隐藏的核心是:

拦截信息获取路径 + 篡改结果

阅读全文 »

constconstexpr 都是很常见的关键字,但实际使用时经常会把“只读语义”和“编译期常量”混在一起。把这几个概念放在同一篇里梳理清楚。

C 里的 const

C 里的 const 本质上是一个类型限定符,表示不能通过这个表达式去修改对象。

先看最基本的变量场景:

1
const int n = 10;

这里的重点不是“对象绝对不可变”,而是编译器不允许你再通过 n 这个表达式给它赋值。

1
2
const int n = 10;
// n = 20; // 编译报错
阅读全文 »

在开发中时不时会在代码中调用系统命令,Linux 中调用系统命令的方法比较多。是否需要获取命令的输出也需要考虑。

exec函数系列

exec 函数系列是指以 exec 为开头用来执行Shell命令的几个函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <unistd.h>

extern char **environ;

int execl(const char *pathname, const char *arg, ...
/* (char *) NULL */);
int execlp(const char *file, const char *arg, ...
/* (char *) NULL */);
int execle(const char *pathname, const char *arg, ...
/*, (char *) NULL, char *const envp[] */);
int execv(const char *pathname, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],
char *const envp[]);
阅读全文 »

此文不介绍sudoers文件的配置方法,只是简单介绍sudo工作流程。

工作流程

工作流程如下图,第一次用markdown写流程图,不太精细。

flowchart TD
    st([用户执行sudo])
    is_have_cookie{检查 /var/run/sudo/ts 文件夹下是否有认证文件}
    cookie_is_expire{检查认证文件是否有效}
    is_in_sudoers{是否在 /etc/sudoers 文件中}
    input_passwd[输入密码]
    op[执行并返回结果]
    e([退出])

    st --> is_have_cookie

    is_have_cookie -- yes --> cookie_is_expire
    is_have_cookie -- no --> input_passwd

    cookie_is_expire -- yes --> is_in_sudoers
    cookie_is_expire -- no --> input_passwd

    input_passwd --> is_in_sudoers

    is_in_sudoers -- yes --> op
    is_in_sudoers -- no --> e

    op --> e
阅读全文 »

Linux用户信息详解

Linux用户信息很丰富,存储在了多个文件中,其中包括/etc/passwd,/etc/shadow,/var/log/wtmp等文件中,因为在项目中用到了,所以有些了解。下面对这几个文件进行一个详细的介绍。

账户基本信息

文件各字段含有

/etc/passwd存储了账户的基本信息,默认任何用户都可以读取,也是早期存储账户密码的文件,后因任何用户都可读取,造成安全问题,故后期不再用于存储。
/etc/passwd文件采用:分割,共分为了7个字段,下面是文件中的一行。

1
root:x:0:0:root:/root:/usr/bin/bash
阅读全文 »

简介

top相当于是Linux下的任务管理器,能够实时显示系统中各个进程的资源占用状况,MAN手册中的解释如下图。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。
Linux MAN手册对top命令的描述

阅读全文 »

上路

初识Arch

寒假闲的作死,非要在装了linux的机子上重装一遍windows,作死搞废GRUB引导,在张大师的博客引导下初识Arch,配置了一天脑子都快炸了,最后在临睡觉前搞好了。
前两天没地方呆,各处实验室用不了,闲的无聊,无奈之下,装了个virtualbox虚拟机,奋斗三天,装崩数次,最终装上,虽说用了不超过一小时,又雪崩了吧,好歹成功一回。
Arch并不太懂,官方介绍献上Arch Linux (简体中文),当然英文好的还是建议看英文的(像我的这种英文渣……),英文文档也献上了Arch Linux

阅读全文 »