如何将Pastebin上的信息应用于安全分析和威胁情报领域
FreeBuf百科
Pastebin是一个便签类站点,用户可以在该平台任意储存纯文本,例如代码,文字等内容。Pastebin支持的编程语言种类也非常齐全,还会自动判断语言类型并高亮显示代码内容。除了直接在网页內操作外,Pastebin 最大的特色是提供了许多相关工具和应用,包括 Windows、Mac、UNIX、Firefox、Chrome、Opera、iPhone/iPad、Android、WinPhone 以及 WebOS 等等,让使用者随时随地都能夠存取使用。
但从安全分析和威胁情报的角度来看,Pastebin却是一个信息收集的宝库。特别是那些上传到pastebin却未明确设置为private(需要一个账户)的内容,将会被所有人公开查阅。
tl;dr 使用Yara规则从pastebin中查找和保存有趣的数据:https://github.com/kevthehermit/PasteHunter
很多黑客团队都喜欢把自己的攻击成果(比如数据库、代码)贴在网站上来炫耀,包括一些开发人员/网络工程师意外的将内部配置和凭据泄露。
那么作为安全分析人员,我们又该如何筛选这些数据为我们所用呢?
我们可以检索pastebin上所有被上传的数据,并筛选出我们感兴趣的数据。这里我要向大家推荐使用一款叫做dumpmon的推特机器人,它监控着众多“贴码网站”的账户转储、配置文件和其他信息。值得一提的是, Pastebin虽未禁止我们爬取它的数据,但在IP方面却有一定限制,一旦触发IP锁将会被临时甚至永久封禁。
幸运的是,Pastebin为我们提供了一个专门为这种任务所设计的API。目前只需支付19.95美元,即可永久免费使用该功能。
有了专业版的账号,我们就可以从一个白名单列表以每秒钟调用一次API的频率来检索数据了。实际上,你并不需要以如此高的频率进行查询。
现在我们可以访问所有的数据了,那么该如何处理这些数据呢?我们可以使用PasteHunter。
这是一个简单的脚本和一组Yara规则,将从pastebin API获取粘贴,并将任何匹配的粘贴存储到具有漂亮的Kibana前端的elastic搜索引擎中。
如果你对Yara不是特别了解,这里我简单的为大家介绍一下。Yara是一种模式匹配引擎,主要用于扫描文件和分类恶意软件家族。有了它我们就可以简单的构建一些较为复杂的匹配规则。
安装比较简单。如果你希望通过Web UI搜索内容,请安装elastic搜索和Kibana。
我们还需要python3,Yara并将Yara和python绑定。
安装完了所有的依赖关系后,我们从代码库克隆代码并设置一个cronjob来定期运行脚本。更详细示例及说明请参阅Github文件。
代码中已经有一些为我们设定好的采集规则,可以用于扫描一些常见的数据,例如密码转储,泄露凭据被黑客入侵的网站等。此外,你也可以通过创建一个这样的custom_keywords.yar文件来轻松添加自己的关键字。
/*
This rule will match any of the keywords in the list
*/
rule custom_keywords
{
meta:
author = "@KevTheHermit"
info = "Part of PasteHunter"
strings:
$my_email = "thehermit@techanarchy.net" wide ascii nocase
$my_domain = "techanarchy.net" wide ascii nocase
$this_word = "This Word"
$other_word = "More Words"
condition:
any of them
}
通过自定义的规则你可以查找域名、邮件地址、文档名等意外泄露或者被他人窃取的信息。
有关创建yara规则的更多详细信息,你可以参考其官方文档。
随着脚本的启动和运行,你应该可以看到数据不断的被开始采集。
以下是一些被捕获数据的示例。
需要提醒的是这些规则可能会出现误报,对于数据的可信程度我们也不能一概而论。
最后,我要感谢@tu5k4rr,是他的pastabean工具给了我本文的思路!
- LeetCode——Add Two Numbers
- python 中numpy基本方法总结可以类推tensorflow
- python基础知识——函数
- tensorflow之tf.placeholder 与 tf.Variable区别对比
- 11g备库搭建碰到自己给自己埋的坑(r7笔记第63天)
- JDBC基础入门(2)
- 11g备库无法开启ADG的原因分析 (r7笔记第62天)
- JDBC基础入门(3)
- Python多元线性回归-sklearn.linear_model,并对其预测结果评估
- python 聚类分析实战案例:K-means算法(原理源码)
- JAVA面试题解惑——final、finally和finalize的区别
- Java内存管理
- python基础知识——内置数据结构(字典)
- mysql、mongodb、python(dataframe).聚合函数的形式,以及报错解决方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP CURL中传递cookie的方法步骤
- PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
- Yii2处理密码加密及验证的方法
- PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
- python如何输出反斜杠
- 在Laravel5中正确设置文件权限的方法
- asp函数split()对应php函数explode()
- php获取目录下所有文件及目录(多种方法)(推荐)
- Python基于Twilio及腾讯云实现国际国内短信接口
- PHP __call()方法实现委托示例
- PHP中rename()函数的妙用讲解
- php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
- php实现小程序支付完整版
- Yii2框架视图(View)操作及Layout的使用方法分析
- php实现单笔转账到支付宝功能