🙉进程和计划任务
Last updated
Last updated
进程和计划任务在实战场景中会利用到,例如在提权方面、应急响应。在攻击与防守都需要了解进程和计划任务。例如在无内核漏洞时,利用系统自带高权限目录、高权限进程来提权,利用管理员计划任务中的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 文件内容。