莫张周刘王 发表于 6 天前

应急响应-主机安全之体系及进程排查相关下令(Linux操作体系-低级篇)

概述

本文先容下在应急响应过程中,linux体系下排查体系、进程、服务可能用到的下令,有些下令选项很多,读者可以仅看常用选项。不涉及内存、进程注入、rootkit等高级攻击的排查。
lscpu-显示有关CPU架构的信息

https://i-blog.csdnimg.cn/direct/1511440cbd134f0ebae4d04de7b0f39d.png
uname-查看体系信息

-a, --all 按顺序打印全部信息,如果 -p 和 -i 的信息是未知,那么省略。
-s, --kernel-name 打印内核名称。
-n, --nodename 打印网络节点主机名称。
-r, --kernel-release 打印内核release。
-v, --kernel-version 打印内核版本。
-m, --machine 打印呆板名称。
-p, --processor 打印处理器名称。
-i, --hardware-platform 打印硬件平台名称。
-o, --operating-system 打印操作体系名称。
–help 显示资助信息并退出。
–version 显示版本信息并退出。
https://i-blog.csdnimg.cn/direct/a17bdc4238814322a1096c84a0cae82c.png
lsmod-输出加载的所有模块

https://i-blog.csdnimg.cn/direct/4566d3d41c3245619b6b6f0ef589072e.png


[*]Module:模块的名称。
[*]Size:模块的大小。
[*]Used:依赖模块的个数。
[*]by:依赖模块的内容。
lastb-输出最后登录失败的用户

https://i-blog.csdnimg.cn/direct/95fa784f101c4eeba5404c3d31096ddb.png
last-展示用户近来登录信息

常用-n参数,n为展示的数量
https://i-blog.csdnimg.cn/direct/190a23ab928744169ae4a2fbf5f54413.png
lastlog-展示所有用户最后的登录时间

https://i-blog.csdnimg.cn/direct/8738be374f4d45cb9ebbfb4fa703194a.png
systemctl-体系服务,开机自启排查

systemctl下令 是体系服务管理器指令,它现实上将 service 和 chkconfig 这两个下令组合到一起。
使命旧指令新指令使某服务主动启动chkconfig --level 3 httpd onsystemctl enable httpd.service使某服务不主动启动chkconfig --level 3 httpd offsystemctl disable httpd.service查抄服务状态service httpd statussystemctl status httpd.service (服务详细信息)systemctl is-active httpd.service (仅显示是否 Active)显示所有已启动的服务chkconfig --listsystemctl list-units --type=service

启动服务service httpd startsystemctl start httpd.service停止服务service httpd stopsystemctl stop httpd.service重启服务service httpd restartsystemctl restart httpd.service重载服务service httpd reloadsystemctl reload httpd.service 举例
systemctl list-units --type=service

https://i-blog.csdnimg.cn/direct/9a994297b10143d1b8d9a0ec49d8cd4c.png
查看自启服务
systemctl list-units --type=service

| grep enabled https://i-blog.csdnimg.cn/direct/e053f12b25a241e8aeb0ddff1ddb0605.png
crontab-计划使命

linux主动启动crond进程,crond进程每分钟会定期查抄是否有要执行的使命,如果有要执行的使命,则主动执行该使命。
选项

-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
Linux下的使命调度分为两类: 体系使命调度 和 用户使命调度 。
体系使命调度: 体系周期性所要执行的工作,好比写缓存数据到硬盘、日志清算等。在/etc目录下有一个crontab文件,这个就是体系使命调度的配置文件。
/etc/crontab文件包罗下面几行:
   SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
前四行是用来配置crond使命运行的情况变量
第一行SHELL变量指定了体系要使用哪个shell,这里是bash
第二行PATH变量指定了体系执行下令的路径
第三行MAILTO变量指定了crond的使命执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送使命执行信息给用户
第四行的HOME变量指定了在执行下令或者脚本时使用的主目录。
用户使命调度: 用户定期要执行的工作,好比用户数据备份、定时邮件提示等。用户可以使用 crontab 工具来定制本身的计划使命。所有用户界说的crontab文件都被生存在/var/spool/cron目录中。其文件名与用户名划一。
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项使命,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的下令段,格式如下:
minute   hour   day   month   week   command

此中:


[*]minute: 表示分钟,可以是从0到59之间的任何整数。
[*]hour:表示小时,可以是从0到23之间的任何整数。
[*]day:表示日期,可以是从1到31之间的任何整数。
[*]month:表示月份,可以是从1到12之间的任何整数。
[*]week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
[*]command:要执行的下令,可以是体系下令,也可以是本身编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:


[*]星号(*):代表所有可能的值,比方month字段如果是星号,则表示在满意其它字段的制约条件后每月都执行该下令操作。
[*]逗号(,):可以用逗号隔开的值指定一个列表范围,比方,“1,2,5,7,8,9”
[*]中杠(-):可以用整数之间的中杠表示一个整数范围,比方“2-6”表示“2,3,4,5,6”
[*]正斜线(/):可以用正斜线指定时间的间隔频率,比方“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,比方*/10,如果用在minute字段,表示每非常钟执行一次。
举例
https://i-blog.csdnimg.cn/direct/303ab77a8db44ce5b3f3a41f292d07d2.png
每月2号和每周五,每两分钟以lady_killer用户身份执行一次touch /tmp/lady_killer_test.txt
https://i-blog.csdnimg.cn/direct/9e7046cd8df64c28bb54f326aac6209a.png
可以看到已经创建成功
https://i-blog.csdnimg.cn/direct/ea2a7d8e27434fff8ee1a03745438fd7.png
history-查看汗青下令

默认读取~/.bash_history中的汗青下令
选项

-c 清空汗青列表。
-d offset 根据offset删除记载。如果是正数则表示offset位置的记载,如果为负数则表示从结尾向前offset位置的记载。
-a 将当前终端的汗青记载行添加到汗青记载文件。
-n 将尚未从汗青文件中读取的汗青行追加到当前汗青列表中。
-r 读取汗青文件,并将其内容附加到汗青列表中。
-w 将当前汗青记载列表附加到汗青记载文件中并且附加它们到汗青列表中。
-p 在每个arg上执行汗青记载扩展并在标准输出上显示效果,而不将效果存储在汗青记载列表中。
-s 将每个arg作为单个条目附加到汗青记载列表。
常用选项

查看近来5条
https://i-blog.csdnimg.cn/direct/acc6a39062df45d0b72be6838c5b2223.png
在下令行中,可以使用符号!执行指定序号的汗青下令
https://i-blog.csdnimg.cn/direct/b5ba5cf2e52a48e4b26ded3c3fa8693c.png
接下来看看攻击者删除汗青下令的方法
https://i-blog.csdnimg.cn/direct/aacdcca77c5642349f23c7a4873cf8e6.png
方法1:
echo '' > ~/.bash_history

https://i-blog.csdnimg.cn/direct/99f85c82610f45fe80ac7b1f0210abcb.png
可以看到留下了清算痕迹
方法2:
vim ~/.bash_history

https://i-blog.csdnimg.cn/direct/8d9bdd24748a4ad1a01092b789d54eb0.png
依然留下了清算痕迹
方法3:
history -c

https://i-blog.csdnimg.cn/direct/561595ef2ba74a2995127c6491b17650.png
下令行terminal无法查看,但文件中还存在
方法4:
rm ~/.bash_history && touch ~/.bash_history

https://i-blog.csdnimg.cn/direct/1f3e1c1b01bd42e99763a563c7f02194.png
依然留下了清算痕迹
总之,通过清算痕迹的方式可以大概让应急同砚看不到执行了什么下令,但最后的清算动作会保留。
应急同砚可以学习一下history加固相关知识,增加条数、IP、执行用户,以及使用chattr防止篡改。
ps-查看进程

ps实用步伐显示标题行,然后显示包含有关所有具有控制终端的进程的信息的行。
通过使用-a、-G、-g、-p、-T、-t、-U和-u选项的恣意组合,可以选择显示不同的进程集。如果给出了多个这些选项中的一个以上,则ps将选择满意至少一个给定选项的所有进程。
对于已选择显示的进程,ps通常会每个进程显示一行。对于某些进程,-M选项可能会导致多个输出行(每个线程一行)。默认情况下,所有这些输出行起首按控制终端排序,然后按进程ID排序。-m、-r和-v选项将更改排序顺序。如果给出了多个排序选项,则所选进程将按最后指定的排序选项进行排序。
对于已选择显示的进程,所选择要显示的信息是基于一组关键字来选择的。默认输出格式包罗每个进程的进程ID、控制终端、CPU时间(包罗用户和体系时间)、状态和关联下令。
标题行解释



[*]%cpu:进程的CPU使用率;时间基准因计算方式不同而异,因此所有%cpu字段的总和可能超过100%。
[*]%mem:该进程使用的现实内存的百分比。
[*]flags:与进程关联的标记,如包含文件<sys/proc.h>中所示:

[*]P_ADVLOCK 0x00001 进程可能持有 POSIX 保举锁
P_CONTROLT 0x00002 拥有控制终端
P_LP64 0x00004 进程是 LP64 的
P_NOCLDSTOP 0x00008 子进程停止时没有 SIGCHLD
P_PPWAIT 0x00010 父进程正在期待子进程 exec/exit
P_PROFIL 0x00020 已开始分析
P_SELECT 0x00040 正在选择;唤醒/期待伤害
P_CONTINUED 0x00080 进程被停止并继续执行
P_SUGID 0x00100 上次执行以来设置过 ID 特权
P_SYSTEM 0x00200 体系进程:没有信号、统计信息或互换
P_TIMEOUT 0x00400 在休眠期间计时超时
P_TRACED 0x00800 被调试的进程正在被跟踪
P_WAITED 0x01000 调试进程一直在期待子进程
P_WEXIT 0x02000 正在退出
P_EXEC 0x04000 进程调用了 exec
P_OWEUPC 0x08000 在下一个 ast 调用时,进程欠一个 addupc() 调用
P_WAITING 0x40000 进程正在进行 wait()
P_KDEBUG 0x80000 此进程开启了 Kdebug 跟踪

[*]lim:通过调用 setrlimit(2) 指定的内存使用软限定。
[*]lstart:显示下令开始的确切时间。
[*]nice:进程调度增量(参见 setpriority(2))。
[*]rss:进程的现实内存(驻留集)大小,以1024字节单位表示。
[*]start:下令开始的时间。如果下令开始不到24小时,会使用“%l:ps.1p”格式来显示开始时间。如果下令开始不到7天,会使用“%a6.15p”格式来显示开始时间。否则,会使用“%e%b%y”格式来显示开始时间。
[*]state字段给出了进程的状态信息。第一个字符表示进程的运行状态:

[*]I:表示处于空闲状态(休眠时间超过约20秒)。
R:表示可运行的进程。
S:表示休眠状态,休眠时间不超过约20秒。
T:表示停止的进程。
U:表示进程正在进行不可停止的期待。
Z:表示殒命进程(“僵尸”进程)。
+:进程位于控制终端的前台进程组中。
<:进程已进步CPU调度优先级。
>:进程已指定内存需求的软限定,并且当前超过该限定;这样的进程不会被互换出去。
A:进程哀求随机页面更换(比方,来自vadvise(2)的VA_ANOM,好比lisp(1)在进行垃圾回收时)。
E:进程正在尝试退出。
L:进程在焦点中锁定了页面(比方,用于原始I/O)。
N:进程低落了CPU调度优先级(参见setpriority(2))。
S:进程要求FIFO页面更换(比方,来自vadvise(2)的VA_SEQL,好比使用虚拟存储器按顺序访问大量数据的大型图像处理步伐)。
s:进程是会话向导者。
V:进程在vfork(2)期间被挂起。
W:进程已被互换出去。
X:进程正在被跟踪或调试。

[*]tt字段是控制终端的路径名的缩写,如果有的话。缩写由/dev/tty背面的三个字母构成,对于控制台来说是“con”。如果该进程无法访问该控制终端(即已被撤销),则背面会加上“-”。
[*]wchan字段指示进程期待的事件(体系中的地址)。当以数字情势打印时,地址的前部门会被修剪掉,并以十六进制打印,比方,0x80324000会打印为324000。
[*]acflag:记账标记(别名 acflg)
args:下令及其参数
comm:下令
command:下令及其参数
cpu:短期 CPU 使用因子(用于调度)
etime:已运行的时间
flags:进程的标记,用十六进制表示(别名 f)
gid:进程的组 ID(别名 group)
inblk:总读取的块数(别名 inblock)
jobc:作业控制计数
ktrace:跟踪标记
ktracep:跟踪的 vnode
lim:内存使用限定
logname:启动会话的用户登录名
lstart:启动时间
majflt:总页面错误
minflt:总页面回收
msgrcv:接收的消息总数(从管道/套接字读取)
msgsnd:发送的消息总数(写入管道/套接字)
nice:nice 值(别名 ni)
nivcsw:总的非自愿上下文切换
nsigs:接收的信号总数(别名 nsignals)
nswap:总的换入/换出次数
nvcsw:总的自愿上下文切换
nwchan:期待通道(作为地址)
oublk:总写入的块数(别名 oublock)
p_ru:资源使用情况(仅对僵尸进程有用)
paddr:互换地址
pagein:页面输入(与 majflt 雷同)
pgid:进程组号
pid:进程 ID
ppid:父进程 ID
pri:调度优先级
prsna:persona
re:焦点驻留时间(以秒为单位;127 = 无限)
rgid:真实组 ID
rss:常驻内存集大小
ruid:真实用户 ID
ruser:用户名称(来自 ruid)
sess:会话 ID
sig:挂起的信号(别名 pending)
sigmask:阻塞的信号(别名 blocked)
sl:睡眠时间(以秒为单位;127 = 无限)
start:启动时间
state:符号化的进程状态(别名 stat)
svgid:从 setgid 可执行文件中生存的 gid
svuid:从 setuid 可执行文件中生存的 UID
tdev:控制终端装备号
time:累计 CPU 时间,用户 + 体系(别名 cputime)
tpgid:控制终端进程组 ID
tsess:控制终端会话 ID
tsiz:文本大小(以 K 字节为单位)
tt:控制终端名称(两个字母缩写)
tty:控制终端的完整名称
ucomm:用于记账的名称
uid:有用用户 ID
upr:从体系调用返回时的调度优先级(别名 usrpri)
user:用户名称(根据用户 ID)
utime:用户 CPU 时间(别名 putime)
vsz:虚拟大小(以 K 字节为单位)(别名 vsize)
wchan:期待通道(作为符号名称)
wq:工作队列线程的总数
wqb:被阻塞的工作队列线程数
wqr:正在运行的工作队列线程数
wql:工作队列限定状态(C = 受限定的线程限定,T = 总线程限定)
xstat:退出或停止状态(仅对停止或僵尸进程有用)
选项

-A:显示其他用户进程的信息,包括那些没有控制终端的进程。
-a:显示其他用户进程以及您自己的进程信息。这将跳过没有控制终端的进程,除非同时指定了-x选项。
-C:通过使用“原始”CPU计算来改变CPU百分比的计算方式,该计算方式忽略“常驻”时间(通常没有影响)。
-c:将“command”列的输出更改为仅包含可执行文件名,而不是完整的命令行。
-d:类似于-A,但排除会话领导者。
-E:同时显示环境变量。这不会反映进程启动后的环境变化。
-e:与-A相同。
-f:显示uid、pid、父进程pid、最近的CPU使用率、进程启动时间、控制终端、已用CPU时间以及关联的命令。如果还使用了-u选项,则显示用户名而不是数字UID。当使用-o或-O在-f之后进行显示时,命令字段不像其他格式那样被严重截断。
-G:显示正在以指定真实组ID运行的进程的信息。
-g:显示具有指定进程组领导者的进程信息。
-h:根据需要重复打印信息标题,以保证每页信息有一个标题。
-j:打印与以下关键词相关联的信息:用户、pid、ppid、pgid、sess、jobc、state、tt、time和command。
-L:列出可用于-O和-o选项的关键词集。
-l:显示与以下关键词相关联的信息:uid、pid、ppid、flags、cpu、pri、nice、vsz=SZ、rss、wchan、state=S、paddr=ADDR、tty、time和command=CMD。
-M:打印与每个任务相对应的线程。
-m:按内存使用进行排序,而不是按控制终端和进程ID的组合排序。
-O:在默认信息显示中,在进程ID之后添加与空格或逗号分隔的关键词列表相关的信息。关键词可以用等号('=')和字符串附加。这将导致打印的标题使用指定的字符串而不是标准标题。
-o:显示与空格或逗号分隔的指定关键词列表相关联的信息。也可以以多个-o选项的形式给出多个关键词。关键词可以用等号('=')和字符串附加。这将导致打印的标题使用指定的字符串而不是标准标题。如果所有关键词的标题文本为空,将不会写入标题行。
-p:显示与指定进程ID匹配的进程信息。
-r:按当前CPU使用率进行排序,而不是按控制终端和进程ID的组合排序。
-S:通过将所有退出的子进程时间累加到其父进程中,改变进程时间的计算方式。
-x: ps命令会列出所有与当前用户相关的进程,无论是通过终端启动的还是通过其他方式启动的。

常用选项组合

显示所有用户的所有进程信息(-aux)

包罗进程ID、CPU使用率、内存使用率等。
ps -aux

https://i-blog.csdnimg.cn/blog_migrate/dfdfdb6a76c9e1c2442f9264ccf57e12.png
以全格式显示进程信息(-ef)

包罗进程ID、父进程ID、用户、状态、运行时间、终端等。
ps -ef

https://i-blog.csdnimg.cn/blog_migrate/c104914a979ba1348bb506be170b6eec.png
显示详细的线程信息(-eLf)

ps -eLf:,包罗线程ID、优先级、状态、CPU使用率等。
https://i-blog.csdnimg.cn/blog_migrate/d1fa45013e79ab30ac1583987e898852.png
自界说输出格式(-eo)

只显示进程ID、父进程ID、下令、CPU使用率和内存使用率。
ps -eo pid,ppid,cmd,%cpu,%mem

https://i-blog.csdnimg.cn/blog_migrate/5aad05008ea1cc113ec97438655ff499.png
显示指定进程ID的详细信息

ps -p <PID> -f

https://i-blog.csdnimg.cn/blog_migrate/a0895a51fb49a3dd07b516c25102c40f.png
显示指定用户的所有进程信息

ps -u <USER>

https://i-blog.csdnimg.cn/blog_migrate/badf8198fea05f1958d3f7c449f127b8.png
按CPU使用率降序分列进程信息(–sort)

ps -aux

--sort=-%cpu https://i-blog.csdnimg.cn/blog_migrate/89bddac9ada480563abe2b17c692993c.png
lsof-显示Linux体系当前已打开的所有文件列表

标题行解释

https://i-blog.csdnimg.cn/direct/767a9433e5914919ae716602e39c7610.png


[*]COMMAND: 这是打开文件的进程的名称。
[*]PID: 这是打开文件的进程的进程 ID。
[*]TID: 这是线程ID。这个字段只在 -K 选项(列出内核线程)被使用时才会显示。
[*]USER: 这是打开文件的进程的所有者的用户名。
[*]FD: 这是文件描述符,它是进程用来访问文件的句柄。常见的值包罗 cwd(当前工作目录)、txt(步伐文本(代码和数据))、err(标准错误)、等等。
[*]TYPE: 这是文件的类型。常见的类型包罗 DIR(目录)、REG(常规文件)、CHR(字符装备)、BLK(块装备)、FIFO(先辈先出队列)、SOCK(套接字)等。
[*]DEVICE: 这是装备号。对于磁盘文件,这通常是装备的主装备号和次装备号。
[*]SIZE/OFF: 对于常规文件,这是文件的大小。对于网络文件,这是本地和远程的网络地址。
[*]NODE: 对于网络文件,这是本地和远程的网络地址。对于UNIX域套接字,这是套接字的i-node号。
[*]NAME: 这是打开的文件的名称。对于网络文件,这是本地和远程的网络地址。
选项

-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示资助信息;
-v:显示版本信息
常用选项

列出指定进程号所打开的文件
lsof -p 636

https://i-blog.csdnimg.cn/direct/49b5f5099070477ca472db830eaf9618.png
获取端口对应的进程
lsof -i:8082

https://i-blog.csdnimg.cn/direct/dbdba96392d14f4d983c9c6820963b05.png
列出目录下被打开的文件和对应进程
lsof /elkeid/mongodb

https://i-blog.csdnimg.cn/direct/526bb4c49e4d44b388cd27e0e3712ce5.png
top-查看部门进程并排序

动态实时显示进程信息
标题行解释



[*]PID (Process ID): 进程的唯一标识符,用于区分不同的进程。
[*]USER: 启动进程的用户。
[*]PR (Priority): 进程的调度优先级。
[*]NI (Nice value): 进程的优先级,负值表示更高的优先级,正值表示更低的优先级。
[*]VIRT (Virtual Image): 进程占用的虚拟内存大小,包罗代码、数据和共享库等。
[*]RES (Resident Size): 进程现实使用的物理内存大小(非互换内存)。
[*]SHR (Shared Memory): 进程使用的共享内存大小。
[*]S (Status): 进程的状态,包罗运行态 ®、睡眠态 (S)、僵死态 (Z) 等。
[*]%CPU: 进程的 CPU 使用率。
[*]%MEM: 进程的内存使用率。
[*]TIME+: 进程占用 CPU 时间的累计值。
[*]COMMAND: 启动进程的下令名称及参数。
选项

-d, --delay: 指定刷新时间间隔,单位为秒。
-n, --iterations: 指定刷新次数后退出 top。
-b, --batch: 使用批处理模式运行 top,适用于将输出通报给其他步伐。
-c, --command: 显示完整的下令行。
-u, --user: 显示指定用户的进程信息。
-p, --pid: 显示指定进程 ID 的信息。
-H, --threads: 显示线程信息。
-i, --ignore-case: 在排序时忽略大小写。
-o, --old-style: 启用旧风格的输出格式。
-C, --no-command: 隐藏下令名称和参数。
-w, --width: 指定输出宽度。
-P, --sort-field: 按指定字段排序(如 %CPU、%MEM)。
常用选项

显示完整下令行
top -c

https://i-blog.csdnimg.cn/direct/eeb66f6cc8a141c38ebc83c918a72e90.png
kill-杀死进程

-s sig 信号名称。
-n sig 信号名称对应的数字。
-l 列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
-L 等价于-l选项。
https://i-blog.csdnimg.cn/direct/164c7d25131e4bba9796b2e98658f464.png
使用9)SIGKILL杀死进程
kill -9 30634

https://i-blog.csdnimg.cn/direct/91140c3e062d4880aec96152b5621d0e.png
strace-监控进程

选项

-c 统计每一体系调用的所执行的时间,次数和堕落的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪效果输出到相应的filename.pid中,pid是各进程的进程号.
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-h 输出扼要的资助信息.
-i 输出体系调用的入口指针.
-q 禁止输出关于离开的消息.
-r 打印出相对时间关于,每一个体系调用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级.
-ttt 微秒级输出,以秒了表示时间.
-T 显示每一调用所耗的时间.
-v 输出所有的体系调用.一些调用关于情况变量,状态,输入输出等调用由于使用频仍,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制情势输出非标准字符串
-xx 所有字符串以十六进制情势输出.
-a column 设置返回值的输出位置.默认 为40.
-e expr 指定一个表达式,用来控制如何跟踪.格式:[!]value1[,value2]…
qualifier只能是 trace,abbrev,verbose,raw,signal,read,write此中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.比方:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行汗青记载里的下令,以是要使用\.
-e trace=set 只跟踪指定的体系 调用.比方:-e trace=open,close,rean,write表示只跟踪这四个体系调用.默认的为set=all.
-e trace=file 只跟踪有关文件操作的体系调用.
-e trace=process 只跟踪有关进程控制的体系调用.
-e trace=network 跟踪与网络有关的所有体系调用.
-e strace=signal 跟踪所有与体系信号有关的 体系调用
-e trace=ipc 跟踪所有与进程通讯有关的体系调用
-e abbrev=set 设定strace输出的体系调用的效果集.-v 等与 abbrev=none.默认为abbrev=all.
-e raw=set 将指定的体系调用的参数以十六进制显示.
-e signal=set 指定跟踪的体系信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号.
-e read=set 输出从指定文件中读出 的数据.比方: -e read=3,5
-e write=set 输出写入到指定文件中的数据.
-o filename 将strace的输出写入文件filename
-p pid 跟踪指定的进程pid.
-s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
-u username 以username的UID和GID执行被跟踪的下令
常用选项

统计体系调用
strace -c ./test

test.c
#include <stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    printf("%09d\n", a);
    return 0;
}

https://i-blog.csdnimg.cn/direct/2a6e1d4763a646e9a720c2f90d09f5e5.png
跟踪进程
strace -p 4776

https://i-blog.csdnimg.cn/direct/d2a498aa924447d69a661b707190f7d3.png
fuser-使用文件或文件结构识别进程

-a:显示下令行中指定的所有文件;
-k:杀死访问指定文件的所有进程;
-i:杀死进程前需要用户进行确认;
-l:列出所有已知信号名;
-m:指定一个被加载的文件体系或一个被加载的块装备;
-n:选择不同的名称空间;
-u:在每个进程后显示所属的用户名。
查看文件进程
fuser /usr/bin/python

https://i-blog.csdnimg.cn/direct/209ebca73f854e9e8adb53ae9d73124e.png
查看所属的用户
fuser -u /usr/bin/python

https://i-blog.csdnimg.cn/direct/39da11122c2a41d799af675269316c3e.png
su

切换到指定用户,没有时默认为root
选项

-m, -p, --preserve-environment: 不重置情况变量
-g, --group : 指定主要组
-G, --supp-group : 指定附加组
-, -l, --login: 将 shell 设置为登录 shell
-c, --command : 使用 -c 将单个下令通报给 shell
–session-command : 使用 -c 将单个下令通报给 shell,并且不创建新会话
-f, --fast: 对于 csh 或 tcsh,通报 -f 给 shell
-s, --shell : 如果 /etc/shells 允许,使用指定的 shell 运行
-h, --help: 显示资助信息并退出
-V, --version: 输出书籍信息并退出
常用选项

su - 用户名,这样可以直接切换到该用户家目录
https://i-blog.csdnimg.cn/direct/13ebb4ee7a2b4634b62731f0c6b6611d.png
sudo

选项

-A, --askpass: 使用辅助步伐提示输入密码
-b, --background: 在背景运行下令
-C, --close-from=num: 关闭所有文件描述符 >= num
-E, --preserve-env: 运行下令时保留用户情况
–preserve-env=list: 保留特定的情况变量
-e, --edit: 编辑文件而不是运行下令
-g, --group=group: 以指定的组名或组ID运行下令
-H, --set-home: 将 HOME 变量设置为目标用户的主目录
-h, --help: 显示资助信息并退出
-h, --host=host: 在主机上运行下令(如果插件支持)
-i, --login: 以目标用户的登录 shell 运行;也可以指定一个下令
-K, --remove-timestamp: 完全移除时间戳文件
-k, --reset-timestamp: 使时间戳文件失效
-l, --list: 列出用户的权限或查抄特定下令;使用两次以获取更长的格式
-n, --non-interactive: 非交互模式,不会提示输入
-P, --preserve-groups: 保持组向量而不是设置为目标用户的组
-p, --prompt=prompt: 使用指定的密码提示
-r, --role=role: 使用指定角色创建 SELinux 安全上下文
-S, --stdin: 从标准输入读取密码
-s, --shell: 以目标用户的 shell 运行;也可以指定一个下令
-t, --type=type: 使用指定类型创建 SELinux 安全上下文
-T, --command-timeout=timeout: 在指定的时间限定后停止下令
-U, --other-user=user: 在列表模式下,显示用户的权限
-u, --user=user: 以指定的用户名或用户ID运行下令(或编辑文件)
-V, --version: 显示版本信息并退出
-v, --validate: 更新用户的时间戳而不运行下令
–: 停止处理下令行参数
常用选项

背面接下令,以root权限运行
https://i-blog.csdnimg.cn/direct/761ecd63aebe495aa82dc26e465c7b66.png
以root用户,交互式执行
sudo -i

https://i-blog.csdnimg.cn/direct/ec85bf5d22fb4acdb93303c5609808cc.png
更多下令学习:
应急响应-主机安全之文件相关下令(Linux操作体系)
参考

《网络安全应急响应技能实战指南》
学习资料分享

固然,只给予计划不给予学习资料的行为无异于耍地痞,### 如果你对网络安全入门感兴趣,那么你点击这里
页: [1]
查看完整版本: 应急响应-主机安全之体系及进程排查相关下令(Linux操作体系-低级篇)