sysdig 的学习


sysdig 的学习

环境

系统: Ubuntu 20.04.2 LTS

安装和配置

首先,通过apt在终端中运行以下命令确保所有系统包都是最新的

sudo apt update
sudo apt upgrade
sudo apt install gnupg software-properties-common curl -y
sudo apt install linux-headers-$(uname -r)

现在我们运行以下命令将 Sysdig 安装到系统:

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

执行此命令后,需要更新服务器并安装它:

sudo apt update
sudo apt install sysdig

安装完成后,可以使用以下命令查看有关 Sysdig 的更多信息:

sysdig --help

验证安装,运行csysdig命令来显示正在运行的进程、CPU 使用率和内存使用率

sudo csydig

使用

输出的信息

sysdig命令需要root权限才能运行,并且它需要任意数量的选项和过滤器。
如果不添加过滤选项的话,将会滚动输出系统的实时数据。

看一下输出的结果每一列数据的含义:

 %evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info
  • evt.num是增量事件编号。
  • evt.outputtime是事件时间戳,您可以自定义。
  • evt.cpu是捕获事件的CPU编号。在上面的输出中,evt.cpu为0,这是服务器的第一个CPU。
  • proc.name是生成事件的进程的名称。
  • thread.tid是生成事件的TID,它对应于单线程进程的PID。
  • evt.dir是事件方向。您将看到>用于输入事件和<用于退出事件。
  • evt.type是事件的名称,例如’open’,’read’,’write’等。
  • evt.info是事件参数列表。在系统调用的情况下,这些往往对应于系统调用参数,但情况并非总是如此:出于简单性或性能原因,排除了一些系统调用参数。

使用过滤器

使用方法:

$ sudo sysdig [option] [filter]

可以使用以下方法查看可用过滤器的完整列表:

$ sysdig -l

常用的一些过滤器类别:

  • fd:过滤文件描述符(FD)信息,如FD编号和FD名称。
  • process:过滤进程信息,例如生成事件的进程的id和名称。
  • evt:过滤事件信息,如事件编号和时间。
  • user:过滤用户信息,如用户ID,用户名,用户主目录或登录shell。
  • group:过滤组信息,例如组ID和名称。
  • syslog:过滤syslog信息,如设施和严重性。
  • fdlist:过滤轮询事件的文件描述符。

来个例子看一下:

$ sudo sysdig proc.name=nano

这是针对单个进程进行过滤,结果测试仍然会有大量的输出,所以配置输出到文件方便分析,使用sysdig的-w选项,并指定目标文件名,如下所示:

$ sudo sysdig -w sysdig-trace-file.scap

所以上面针对nano进程到过滤,然后结果输出到文件的命令如下:

$ sudo sysdig -w sysdig-trace-nano.scap proc.name=nano

使用Sysdig读取和分析:

sudo sysdig -r sysdig-trace-java.scap

同样的可以添加过滤条件

chisels

chisels是可以使用的Lua脚本,用于分析Sysdig事件流以执行有用的操作,可以使用以下命令查看系统上可用的chisels列表:

$ sysdig -cl

使用 -i 参数可以查看chisels的更详细的描述

使用chisels,通过 -c 参数指定chisels 进行分析,如下的例子:

csysdig

使用csysdig可以在有界面的视图中查看数据。可以像上面提到的那种实时查看,也可以使用 -r 参数指定log文件进行分析。

csysdig使用的时候,最下面给出了一些操作的按键提示。这里记录一些在学习使用过程中值得注意的:
F2切换分析视角

参数

-j json格式输出
-A 记录的更加详细
-s 100 抓取字节(选择合适的避免默认的不够造成关键信息没被记录)
-p 自定义字段

log4j复现实验

安装jdk1.8
执行如下命令开启sysdig的记录,配置输出到文件

sudo sysdig -w sysdig-trace-java.scap proc.name=java

运行我们的漏洞环境

java -jar springboot-log4j2-demo.jar

将sysdig的记录输出到文件,方便后续分析


使用 csysdig 进行视图格式的分析:

sudo csysdig -r xxx.scap

下面是分析过程做的一些尝试:
使用csysdig进入分析视图,然后选择我们这个java进程回车进入

然后可以F2选择分析视角,包括线程、系统调用、连接等
通过连接相关的查看,可以看到POC执行时的网络请求

为复现log4j漏洞并执行命令,我们首先需要将Java版本降低到java8u191以下:

2771d206-ef98-4dfa-90ce-86ecab005d1b
之后开启JNDI远程恶意类
adf2044a-b9f9-4f53-acb0-44d991cddbf2
执行poc后,执行命令touch /tmp/xiaogui,查看文件夹命令执行成功:
e44c51e0-20b4-45b9-b176-888e390e68ac
之后使用sysdig开启抓取系统信息,并重新执行一遍命令
3d25dffd-5838-412b-b253-06f323710e91
并且看见了命令执行的命令:
77c89554-172c-46d3-ac61-a2c7392e30a4

目前形成的初步检测规则:

sysdig -A -s 1024 "evt.type=write and evt.dir=< and evt.res=SUCCESS and evt.arg.data icontains "exec" and evt. arg.data icontains '"'1og4j' and evt.arg.data icontains 'jndi' and evt.arg.data icontains '1dap'" -j

参考链接


文章作者: LANVNAL
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LANVNAL !
 上一篇
MAC定期需要更改密码的问题的解决 MAC定期需要更改密码的问题的解决
一般来说,消费或者个人用户的机器上不会有用户账户密码时效规则,而企业用户中比较常见。主要原因是之前实习的时候为了入域,安装了ioa,但是卸载的话没使用正确的方式,直接拖垃圾桶了,当时软件设置的密码策略就还在,所以就会定期提示更改密码
2022-02-11
下一篇 
K8s安装与配置记录 K8s安装与配置记录
第一次部署和配置k8s,记录下配置和踩坑过程,因为k8s 1.20版本后就使用 containerd 来代替 docker ,因为我还有docker的需求,所以安装的1.19.5版本
2021-12-22
  目录