python 之监控与下载 GitHub项目
前些天,我们对疑似某APT组织对国内某部门的钓鱼等行为进行跟踪调查,在调查过程中,有一处线索是:怀疑其将GitHub账号作为C$C,理由是在对该GitHub账号进行调查时,发现其行为很诡异,会不定期的上传和删除文件,并且发现其文件的命名方式包含了我们调查的其他线索,于是博士就随口说了声,要是能把这个账号监控起来就好了。于是乎,我就写了一个小脚本,完成对GitHub用户的项目进行监控。当我写好了脚本,喜冲冲的给博士发了条微信,博士说现在还是先别监控了,先让客户去调查账号的内容,以免打草惊蛇,于是乎我就赶紧kill掉了脚本。(目前关于账号的具体信息,不便透漏,GitHub用户以XXX代替,项目以YYY代替。)
0x01 获取GitHub的完整下载地址
1、进去GitHub项目右键检查,选择Network;
2、点击clone and download,下载项目;
3、选择master.zip页面,查看Request URL即完整的下载地址。
0x02 代码
其中:
res = requests.get(“https://github.com/XXX/YYY”)为项目的地址;
result = requests.get(“https://github.com/XXX/YYY/ZZZ/master.zip”)完整下载地址;
实现方式:通过监控项目中的条目数监控GitHub,如果用户上传了文件,则下载。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/1/3 17:21
# @Author : H
# @File : downloadGitHub.py
import requests
from bs4 import BeautifulSoup
from time import sleep
import datetime
timenow = datetime.datetime.now()
timenow = str(timenow).replace(" ","-")
timenow = timenow.replace(":","-")
while True:
try:
res = requests.get("https://github.com/XXX/YYY")
sleep(10)
print(res.status_code)
if res.ok:
soup = BeautifulSoup(res.content, 'html.parser')
tbody= soup('table')[0]('tbody')[0]
tr = tbody.findAll('tr')
if len(tr) > 3:
result = requests.get("https://github.com/XXX/YYY/ZZZ/master.zip")
with open(timenow +"master.zip", "wb") as file:
file.write(result.content)
print("download the file!")
else:
print("needn\'t download!")
except Exception as err:
pass