前言
我们在挖洞过程中,少不了域名的信息收集,有的是走接口,有的是dnslog爆破,已经很多人开始实践了,这里整理一篇域名监控实践,主要功能是每天更新监控到的src新的域名信息到钉钉提醒。
思路
之前自动化挖洞初步构想就提过,采用的是FeeiCN/ESD,通过dnslog爆破的方式来尽可能的来获取新的域名信息,然后通过对比昨天和今天的记录,把新的域名信息发回来。
具体代码:
def urlTolist(path):
li=[]
for pmd,dirs,files in os.walk(path):
for i in files:
i=path+'/'+i
with open(i,'r') as f:
for i in f.readlines():
url=i.strip().split()[0]
li.append(url)
li = list(set(li))
return li
#这里是扫描的域名保存的文件,我是以时间排序的
btime = 'zidata/'+str(datetime.date.today())
atime = 'zidata/'+str(getYesterday())
#读取文件中的列表
a=urlTolist(atime)
b=urlTolist(btime)
#返回新的域名信息
c=[x for x in b if x not in a]
print(len(c))
#如果有新域名信息,发给钉钉接口函数
if len(c):
dingcall(len(c),c)
扫描域名
下载
FeeiCN/ESD
然后用系统命令调用此工具来进行扫描:
with open('url.txt','r') as f:
for i in f.readlines():
#print(i.strip())
url=i.strip()
dd='mkdir zidata/$(date +"%Y-%m-%d")'
os.system(dd)
aa='python subDomainsBrute.py %s -o zidata/$(date +"%%Y-%%m-%%d")/%s'%(url,url)
os.system(aa)
以上代码扫描完不会超过6个小时,所以可以使用日期文件对比来发现新的域名信息
钉钉接口:
申请机器人api即可:
image.png
钉钉api接口目前需要一些sign和timestamp参数的验证
image.png
这里给出接口函数:
def dingcall(longs,data):
timestamp = round(time.time() * 1000)
secret = '你机器人的签名'
secret_enc = secret.encode('utf-8')
# 把timestamp+"\n"+密钥当做签名字符串
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
# 使用HmacSHA256算法计算签名
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
# 进行Base64 encode把签名参数再进行urlEncode
sign = parse.quote(base64.b64encode(hmac_code))
url = 'https://oapi.dingtalk.com/robot/send?access_token=你机器人的token×tamp=%s&sign=%s' \
% (timestamp, sign)
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
data1='共发现: %s \n'%longs
for i in data:
data1 = data1+str(i)+'\n'
senddata = {
"msgtype": "text",
"at": {
"isAtAll": True # @全体成员(在此可设置@特定某人)
},
"text": {
"content": data1 # 抓取数据发送的内容放到alldata
}
}
res = requests.post(url,headers=header,json=senddata,verify=False)
print(res.text)
填好配置之后,直接调用函数即可
部署时间
找一台服务器,然后可以看代码相应的部署
最好进行一天的测试,在进行每天定时启动脚本部署
nohup python3 urltiqu.py > 123.log 2>&1 &
钉钉测试:
只是测试
结尾
一定要动手去做,看过不一定就会了。借用某大神的话,看的多未必get到多,看的少未必就get到少。
比如编程语言,还有很多人在争论谁用的语言好,却很少人在研究编程范式,比如lisp编程。
这是不是变相的体现出我们急功近利的浮躁心态。