xiaoxiong's blog Thinking and Action

Loki 简单 IOC 扫描器介绍


Loki 简单 IOC 扫描器

官方地址https://www.bsk-consulting.de/loki-free-ioc-scanner/
下载地址https://github.com/Neo23x0/Loki

LOKI 是一款免费开源简单扫描器IOC,相当于THOR的社区版。简单学习一下实现方式。

简介

四个检测方式

  1. 文件名 IOC:使用正则表达式匹配路径/名字
  2. Yara Rule 检测:使用 Yara 签名匹配文件数据和处理内存
  3. Hash 检测:扫描文件时比较恶意软件的Hash (MD5,SHA1,SHA256)
  4. C2回连检测:比较断点之间的连接使用C2 IOCs

额外的检测方式

  1. Regin 木马文件检测
  2. 进程异常检测
  3. SWF 解压缩检测
  4. SAM 转储 检测
  5. DoublePulsar 后门检测(445 和 338 端口)
  6. PE-Sieve 进程检测

细节介绍

scan_path

递归遍历文件
如果是linux 或者macos系统 还会判断文件类型

mode = os.stat(filePath).st_mode
if stat.S_ISCHR(mode) or stat.S_ISBLK(mode) or stat.S_ISFIFO(mode) or stat.S_ISLNK(mode) or stat.S_ISSOCK(mode):
	continue
'''
stat.S_ISCHR 字符设备
stat.S_ISBLK  块设备
stat.S_ISFIFO 命名管道
stat.S_ISLNK 链接文件
stat.S_ISSOCK 套接字文件
'''
  1. 使用文件IOC集合进行判断 filename_iocs
  2. 检测文件名和系统文件名字的Levenshtein(莱文斯坦距离: 两个字符串之间距离。由一个字符串转换成另一个字符串最少需要的编辑操作次数),判断和系统名字相似之处
  3. 检测文件类型,通过判断常见的文件头信息来判断文件类型
  4. 读全部数据对文件进行 md5, sha1, sha256 检测
  5. 检测 regin 木马,查看是否是 regin文件系统
  6. 脚本文件自动检测,文件大写字母 大于 小写字母的0.9; 符号数大于字母数;操作符(^{}"<>;)大于字母数的0.05
  7. 对 MDMP 文件和 SWF 文件进行 yara 规则检查

scan_processes

进程扫描

在Linux kernel中,0号进程是scheduler,1号进程是init/systemd(所有user thread的祖先),2号进程是[kthreadd]
sqlserver 一般占用pid 4
  1. 使用wmi.WMI().Win32_Process获取所有进程
  2. 正则匹配检查 psexec .* [a-fA-F0-9]{32}
  3. 进程文件名 检查 filename_ioc, ioc 文件中自带分值,依照危险程度 记录日志 alert,warning
  4. 使用Yara规则 对进程检查,只查100mb以下的进程
  5. 使用 PESieve 扫描 https://hshrzd.wordpress.com/pe-sieve/
  6. 检查进程通信 check_process_connections,如果状态为LISTEN:对监听所有IP的进程进行warning; 如果状态为ESTABLISHED:对连接的IP进行C2检测
  7. 对部分已知文件的特征pid 进行检测,(pid=4,System),(parent_pid=4,smss.exe),(priority=11,smss.exe)

check_rootkit

只检查了 Double Pulsar SMB Backdoor

TODO:

  1. yara 规则积累
  2. PESieve 的实现原理学习
  3. 可以将基本的应急响应步骤使用脚本实现

Comments