进程隐藏相关原理
原理
目前在 Linux 上隐藏进程的技术主要有两种
|
|
|
|
以上两种方法虽然都可实现进程隐藏, 但均是在较高的层次上实现的,
方法 1 虽然在 ps 时看似隐藏了某个进程, 但在 proc中该进程仍然对用户可见
方法 2 是在 VFS 层对内核函数的劫持, 意味着需要先判断输出的系统信息是与进程有关的还是与进程无关的( 与进程无关的并无隐藏的必要)
并且这两种方法都无法满足仅对进程部分信息隐藏的需求, 在实际应用中不够灵活。实际上, 用户对进程信息的访问, 都是通过proc 文件系统完成的, 因此, 实现进程隐藏的根本途径是从 proc 入手, 准确地找出进程信息产生的关键点, 在这些关键点上做一些特殊的处理, 从而达到实现进程隐藏的目的。
Proc文件系统简介
|
|
|
|
|
|
|
|
Proc文件系统目录结构
目录名称 | 目录内容 |
---|---|
apm | 高级电源管理信息 |
cmdline | 内核命令行 |
Cpuinfo | 关于 Cpu 信息 |
Devices | 可以用到的设备(块设备/字符设备) |
Dma Used | DMS channels |
Filesystems | 支持的文件系统 |
Interrupts | 中断的使用 |
Ioports | I/O 端口的使用 |
Kcore | 内核核心印象 |
Kmsg | 内核消息 |
Ksyms | 内核符号表 |
Loadavg | 负载均衡 |
Locks | 内核锁 |
Meminfo | 内存信息 |
Misc | Miscellaneous |
Modules | 加载模块列表 |
Mounts | 加载的文件系统 |
Partitions | 系统识别的分区表 |
Rtc | Real time clock |
Slabinfo | Slab pool info |
Stat | 全面统计状态表 s |
Swaps | 对换空间的利用情况 |
Version | 内核版本 |
Uptime | 系统正常运行时间 |
进程信息的创建过程
结合实际情况, 一个用户查看某个进程的信息有两种情形
|
|
进程隐藏的实现
通过以上对 proc 文件系统中生成进程信息实现过程的分析, 我们发现由于 Linux 缺乏模块化,难以找到一个统一的入口, 准确地对进程信息实现隐藏, 必须对实际应用中可能出现的情形 用 cat之类的命令直接读取进程目录下的节点文件和用 ls之类的命令列举所有的进程目录, 分别加以考虑。
1 对函数 proc_pid_lookup 进行修改: 在步骤a 的末尾添加代码, 用于判断该进程号是否为隐藏进程的进程号, 如果是, 则跳转到我们定制的一个函数, 该函数可打印出? 该进程无法查看?之类的调试信息后返回上层调用者; 如果否, 则照常执行步骤b、c
|
|
|
|
|
|
结论
|
|
网络异常排查方法
Windows排查
查看目前的网络连接情况,定位可疑网络连接(结合业务访问排查)
1 netstat -b -n (管理员权限)通过网络连接进一步确认可疑连接的PID
|
|
根据PID确定是那个进程
|
|
确定此进程的用途以及可否杀死
|
|
其他
|
|
Linux排查
确定系统自身的命令是否被恶意替换,如ls、netstat
|
|
查看linux自身的网络连接,并定位可疑程序的PID
|
|
根据pid查找执行文件的及其路径
|
|
进一步排查
|
|
杀掉对应恶意程序或进程
|
|
其他一些可能用到的命令
|
|
tips
一些框架(工具)
内存取证工具
Volatility Github
介绍:http://www.freebuf.com/articles/system/26763.html获取木马配置文件
通过python脚本来获取木马中的配置文件,诸如ftp、ssh等信息,反向对黑客进行攻击。目前支持Adwind、Adzok、Albertino Advanced RAT等40多个木马。
RATDecoders Github远程现场取证的事件应急响应框架
一个被安装在目标系统的Python 代理客户端,可以对Python基础设施进行管理和交流。
GRR Rapid Response Github隐藏进程检测工具
Linux Rootkit (vfs hook) 是一个linux内核模块,是用于检测rootkit的一个小demo。通过读取此内核模块创建的虚拟文件,可检测通过Hook vfs 函数来隐藏的进程。大家可把他作为一个单一的检测工具,也可以集成到诸如OSSEC等HIDS里,通过周期性任务触发来检测并上报可疑事件。
使用方法:
12 照例就是解压之后 编译加载就好。unzip process_list.zip;cd process_list;make;make install
相关命令
系统:
|
|
资源:
|
|
磁盘和分区:
|
|
网络:
|
|
进程:
|
|
ps命令可以列出正在运行的进程。以下命令可以列出当前系统上所有正在运行的进程:
1 ps -A这个命令列出的信息也许太多,不便于查看。你可以使用less命令通过一个管道输出,分页查看:
1 ps -A | less你也可以使用grep来对来做管道输出,查找出某个进程。例如,查找Firefox进程:
1 ps -A | grep firefox以树形显示进程
1 pstree命令同样可以显示进程信息,不过它是以树形式显示进程。pgrep
给定一个搜索关键词,pgrep命令会返回所有匹配这个关键词的进程ID。
12 pgrep iceweasel2074也可以将这个命令与kill命令结合起来干掉一个特定的进程
12 ➜ ~ kill $(pgrep iceweasel)➜ ~或者使用
|
|
用户:
|
|
服务:
|
|
程序:
|
|