长亭百川云 - 文章详情

甲方安全建设- Velociraptor初体验协助应急响应

帅气的Jumbo

56

2024-07-11

其他文章推荐

甲方安全建设-内网安全(IDS)

甲方安全建设-DevSecOps SCA分析

甲方安全建设-利用AI大模型协助安全运营

甲方安全建设-利用openrestry动态修复部分漏洞

前言

刷到顺丰安全发表关于Velociraptor的文章,提到可以用它实现数据的查询,在应急的时候起很大作用,再加上刷到Velociraptor的一个ppt,笔者觉得挺不错,就来体验下。

安装

安装比较简单,直接下载https://docs.velociraptor.app/downloads/中的二进制文件运行即可。有一说一,Velociraptor的官方资料真的少,当然也有可能是笔者没找到,连个基本的手册都没,只好根据ppt里面提到的内容进行后续动作。

下载完成以后,生成配置文件,期间会让你填写hostname、绑定端口、ui的账号密码等等:

./velociraptor-v0.72.0-linux-amd64  config generate -i

第一个坑点,生成完以后,就算hostname写的外网ip,他的ui端口还是绑定在127上面,因此需要改生成出来的server.config.yaml文件把里面的127.0.0.0全部改成你的外网IP,可能API接口不需要改,但是为了方便笔者是直接全部改掉了。然后执行如下命令启动UI:

velociraptor --config server.config.yaml frontend -v

地址为:

https://your_ip:8889/app/index.html#/

为了方便可以创建服务来启动常驻的UI而不用每次都执行上述命令:

# 生成服务端包,笔者这里是生成rpm
              ./velociraptor-v0.72.0-linux-amd64 --config server.config.yaml rpm server
              rpm -i velociraptor-server-0.72.0.x86_64.rpm

第二个坑点来了,他创建的服务是以velociraptor用户启动的,虽然机器上有这个用户但是迟迟运行不起来。后面发现是日志目录权限不足导致的,因此需要给这些目录配置好权限:

sudo journalctl -u velociraptor_server -n 50 --no-pager
              sudo chown -R velociraptor:velociraptor /etc/velociraptor
              sudo chown velociraptor:velociraptor /usr/local/bin/velociraptor
              sudo chown -R velociraptor:velociraptor /opt/velociraptor
              sudo chmod 755 /opt/velociraptor
              sudo chmod 755 /opt/velociraptor/logs
              sudo chown velociraptor:velociraptor /opt/velociraptor/logs/*

然后生成客户端,也就是Agent,到相应的机器上注册节点就行:

velociraptor --config server.config.yaml rpm client
              rpm -i velociraptor_client_0.72.0_x86_64.rpm

这时候UI上就会出现对应的机器了:

这时候可以大概了解下都有什么功能了:

第三个坑点来了,尝试使用列目录竟然一直没成功。。    

工件管理

Velociraptor内置了一些工件可以直接使用,根据内置的工件也可以自行编写相应的工件,以Linux.Syslog.SSHLogin 工件为例:


该工件为通过查询log日志,然后利用grok解析日志内容展示结果,尝试下发该工件:    

得到结果,如果日志大的话就要等待一会:

既然体验Velociraptor的原因是因为在应急时有所帮助,那么可以设定这么一个场景:

现在已经发现/tmp/evil_是恶意木马,需要定位所有网内执行过该命令的机器,包括持续观察未来的机器是否有执行迹象。

现在有几个思路:

1. 通过获取机器上的进程来判断 - 不可取,因此是一次性的,且进程可能在获取时不在运行
              2. 通过hunter下发工件来获取机器上历史的命令记录 - 本文尝试该思路,因为hunter在上面提到可以持续监控所有机器,包括新上线的机器

获取历史命令记录将依托于audit实现,因此需要事先安装好audit服务并开启execve命令记录:

-a always,exit -F arch=b64 -S execve -k execve_audit
              -a always,exit -F arch=b32 -S execve -k execve_audit

然后通过Velociraptor的解析audit日志的函数完成audit日志的解析,就像上面笔者说的,官方文档是真的少,就给个简单的方法名,连输出哪些字段也不知道,只能自己摸索。所以先简单的来个select *看看都有啥字段:

得到结果如下:

接下来获取想要的细分字段就行了,比如pid、cmd等:

name: Linux.ParseAuditLog.ExecveEvents
              description: |
This artifact parses the Linux audit log and extracts command execution information,
specifically focusing on events tagged with "execve_audit".
              
              type: CLIENT
              
              parameters:
- name: AuditLogPath
description: Path to the audit log file
default: "/var/log/audit/audit.log"
              
              sources:
- precondition:
SELECT OS From info() where OS = 'linux'
              
              query: |
LET parse_audit = SELECT * FROM parse_auditd(
filename=AuditLogPath,
accessor="auto"
)
              
              SELECT
Timestamp,
Category,
Type,
Result,
Process.pid AS PID,
Process.ppid AS PPID,
Process.name AS ProcessName,
Process.exe AS Executable,
Process.cwd AS WorkingDirectory,
if(condition=Process.title, then=Process.title, else=join(array=Process.args, separator=" ")) AS CommandLine,
User.ids.auid AS AUID,
User.ids.uid AS UID,
User.ids.gid AS GID,
File.path AS FilePath,
File.mode AS FileMode
FROM parse_audit
WHERE "execve_audit" IN Tags

上述代码定义两个变量,一个变量是在下发任务可以改的,为日志路径;第二个变量是代码中通过LET定义的,是通过parse_auditd解析日志赋值给parse_audit,然后再从parse_audit读取想要的pid等信息。这里第四个坑点来了,pid死活读不到,其他的都能读到,pid也确实是字符串类型,尝试转成int就会变成0,笔者研究了很久都没办法解决,还是上面说的,官方文档太简单了。。    

hunter

完成了工件的编写,接下来尝试使用hunter来持续采集客户端上的信息,因此笔者这里只有一台client,所以先把client服务停掉,然后下发hunter任务,再把client启动起来看看能否hunter到。可以看到成功获取到了数据,且hunter任务持续running中:    

但是这里有第五个坑点,这时候再在已经hunter过的机器上执行相关命令就不会再hunter了,从结果中看也是finish状态了,并且重启hunter任务也不会再次hunter:


   

总结

本文通过对Velociraptor的初体验,发现Velociraptor是一个非常强大的工作,通过工件可以完成很多采集任务,在应急响应中可以起到很大的作用,当然坑点也不少,该工具还需持续完善,包括更多的文档介绍等等。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2