• Stars
    star
    307
  • Rank 135,298 (Top 3 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

根据关键字与 hosts 生成的关键词,利用 github 提供的 api,监控 git 泄漏。

github_monitor

项目介绍

由于很多猪队友的存在,公司敏感信息通过 GitHub 泄露出去是很常见的。这个项目主要根据关键字与 hosts 生成的关键词,利用 github 提供的 api,监控 git 泄漏,并在检测到信息泄露的时候发送邮件通知。

特性

  1. 对于泄露有对应的泄漏定级,可作为严重性的参考
  2. 简单却完善:利用 api 获取 GitHub 的搜索结果是最简单高效的方式,加上关键词的限定,保证不超过 GitHub 的 api 限制
  3. 注释比较详细,可以很快地进行定制
  4. 自动组合关键字

快速开始

依赖

  • pip install PyGithub
  • pip install jinja2

配置

  • 在项目文件夹下新建一个 config.json 文件,按照 spider.py 里的注释配置。config.json 的示例:
{
  "hosts" : [
    "*********.com",
    "*********.com @",
],

"sender_email":{
  "uname":"*********@qq.com",
  "smtp":"smtp.qq.com",
  "port":25,
  "passwd":"*********"
},

"receiver_email":[
  "*********@qq.com",
  "*********@qq.com"
],

"token":"*******************",
"admin_email":"*********@qq.com"
}

hosts 中,带 @ 的说明是邮件类型,在代码中会进行特殊处理,详细处理可见代码

  • spider.py 中的 file_url 可能需要修改

运行方式

  • crontab 一个小时运行一次 或者直接 python spider.py

代码主要逻辑

代码主要逻辑

结果示例

结果示例

一些想法

个人认为,github 监控最难的在于如何判断检索到的数据是否含有泄露的敏感信息,这是一个很难的问题。

对于攻击方来说,一般只是为了利用泄露信息,那么对于 github 泄密的判断,只需要有就行。假如一共 100 条信息,能检测到 10 条也是很有价值的。当然,发现的泄露越多越好,为了达到这一目的,甚至可以上机器学习,提高对敏感信息的判断力。误报率比较低(谁都不想兴冲冲地去看泄露信息结果发现 password: "********" :D )。

而我这个代码的作用是监控自身公司的泄露。 对于防守方(公司)检测自身泄露来说,不小心放过一条都意味着很大的风险。换句话说,100 条泄露必须尽可能达到 100% 的检测率,甚至不惜以误报率换取准确率。所以,让代码去判断泄露是很无力的,需要人眼过一遍。那么问题来了,那么多数据,人眼看不过来怎么办呢。

提高监控关键字的精确性。 举个例子,假如你的公司域名/ip 为 qq.com/1.1.1.1,那么最好在监控的关键字附上 qq.com/1.1.1.1 这样。类似的方法有很多(自己公司的文件应该有一些特征的。当然肯定有特殊情况,特殊对待吧),目的是减少搜索结果,能提高精确性,降低人的负担。如果你检测的是 qiniu.com password 你会发现每一轮都会有大量的数据,所以别用模糊的关键字。

这一方法还解决了 github api 只能拿到前 1000 个搜索结果(不是页面)的问题,搜索结果少意味着更新的数据也不会多,不会超过 1000 的限制。如果你检测的是 password 你会发现每轮更新的数据都不止 1000 条,这样会产生漏报(万一就是第 1001 条泄露的呢)。

如果你能理解我上面说的,就没必要自己写 github 的爬虫解析页面,直接调用 api 就好了。

信任已有,监控增量,对于攻击者来说,会认为已有的 github 数据存在泄露,需要去淘一遍(当然也有监控增量的)。而对于公司来说,是假设现在 github 没有泄露,然后去监控它的增量,不会淘一遍已有的 github 数据。增量数据包含 2 种:

  1. 新增泄露:新 push 的文件
  2. 更新泄露:update 的文件

当然,什么都扛不住猪队友呀 :D

更新

2019-01-07, 可以免费在 github 上创建私有仓库了。

强烈建议需要保密的仓库更改为私有

强烈建议需要保密的仓库更改为私有

强烈建议需要保密的仓库更改为私有

License

Copyright © 2018 Macr0phag3.

This project is MIT licensed.

Others

Stargazers over time

More Repositories

1

email_hack

A email bomb/fake email tool, by Python
Python
286
star
2

webshell-bypassed-human

过人 webshell 的生成工具
PHP
231
star
3

Sniffer

A Sniffer for Open-WLAN
Python
116
star
4

ja3box

extract ja3(s) when sniffing or from a pcap.
Python
94
star
5

WebShells

Some cool WebShells
PHP
59
star
6

MoMo

利用墨墨背单词的分享功能拿每日20个的单词上限奖励(多线程
Python
45
star
7

LLC

Linux Log Cleaner (utmp, wtmp, btmp, lastlog)
Python
27
star
8

Zero-Width-Spaces-Hiden

Hide information using Unicode(Zero-Width-Spaces).
Python
25
star
9

dibber

用于自动搜索 Python 沙箱逃逸、SSTI 攻击链的小工具
Python
18
star
10

EyesSaver

无界面、自启动的番茄钟,拯救眼睛 👀
Shell
15
star
11

ShuWo_Spider

图书馆书蜗App自动化脚本(抢坐 & 续借)
Python
15
star
12

xsleaks-wiki-zh_CN

xsleaks-wiki 中文版
HTML
13
star
13

souse

A tool for converting Python source code to opcode(pickle)
Python
11
star
14

ReIPDog

用 Python 写的一个查询旁站的脚本
Python
8
star
15

Cryptography_Experiments

Experiments for my cryptography course. (include all codes).
Python
6
star
16

Exp-or-Poc

My Exp or Poc
Python
6
star
17

vscode-door

利用 vscode 配置制作后门
Python
3
star
18

My-Alfred-Workflows

My Alfred Workflows ~
2
star
19

Macr0phag3.github.io

My Blog: www.tr0y.wang
HTML
2
star
20

Fractal_Tree

Draw a fractal tree by python
Python
2
star
21

Macr0phag3

I, Macr0phag3
2
star
22

autoEvaluations4Teacher

用 Python 写的一个教务处自动评教脚本
Python
1
star
23

for-my-wechat-public-platform

公众号,橘子杀手 的一些文件托管
PHP
1
star
24

parselmouth

自动化的 Python 沙箱逃逸 payload bypass 框架 / Automated Python Sandbox Escape Payload Bypass Framework
1
star