🙉进程和计划任务
进程和计划任务在实战场景中会利用到,例如在提权方面、应急响应。在攻击与防守都需要了解进程和计划任务。例如在无内核漏洞时,利用系统自带高权限目录、高权限进程来提权,利用管理员计划任务中的Bash脚本提权;
进程
进程是一种抽象的概念,从来没有统一标准定义,进程由,程序、数据集合、进程控制分三部分组成。
程序用于描述进程要完成的功能,是控制进程执行的指令集;
数据库集合是程序在执行时所需要的数据和工作区;
程序控制块(PCB),包含进程的描述信息和控制信息,是进程存在唯一标志
进程的特征:
动态性:进程是程序的一次执行过程,临时的、有生命期、动态产生、动态消亡
并发生:任何进程都可以和其他进程一起并发执行
独立性:是由系统进行资源分配和高度的一个独立单位
结构性:程序、数据、进程控制块三部分组成
进程管理和性能相关工具
pstree
进程信息ps
默认显示当前终端信息,Linux进程信息保存在/proc/PID目录下各文件中
a:显示一个终端的所有进程;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
-l:长格式显示更加详细的信息;
-e:显示所有进程;
场景:在某个省级演练中,在内网针对靶标发起攻击,通过爆破获得一个普通权限,查看进程发现有tomcat进程,将WebShell写入到tomcat目录下,访问JSP就是root权限。
进程实时状态top
查看进程打开文件
lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。
通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
结束进程
kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
信号编号 | 信号名 | 含义 |
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
|
|
|
信号发送
结束进程是通过发送信号,由内核来帮我们操作,像信号9用于结束进程
常用信号:
SIGHUP | 挂起进程 | 1 |
SIGINT | 终止进程;Ctrl+c | 2 |
SIGQUIT | 停止进程 | 3 |
SIGKILL | 强制杀死 | 9 |
SIGTERM | 尽可能终止 | 15 |
SIGSTOP | 无条件停止进程,但不是终止进程 | 19 |
SIGCONT | 继续运行 | 18 |
ATT&CK T1154
trap命令用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作。
当shell接收到sigspec指定的信号时,arg参数(命令)将会被读取,并被执行。例如:
可以用于来做后门:
当管理员按CTRL + C都会被执行
如果Bash shell收到了SIGHUP信号,当你要离开一个交互式shell,它就会退出,但是在退出之前,它会将SIGHUP信号传给所有由该shell所启动的进程。
退出终端将会下载执行脚本:
进程后台管理
让程序运行于后台
Ctrl + Z
COMMAND &
后台运行剥离与终端关系
场景:在WebShell如何进行FRP代理? 持久化的执行我们的扫描任务?
计划任务
挖矿等木马,常常会把执行脚本文件写入到计划任务中;
提权场景。
cron
/etc/crontab 主配置文件
/etc/cron.d/ 子配置文件
/var/spool/cron/USER 用户文件
-e 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件
-l 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
Last updated