You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
7.5 KiB
186 lines
7.5 KiB
#! /usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
# Author: kelvinBen
|
|
# Github: https://github.com/kelvinBen/AppInfoScanner
|
|
|
|
|
|
# 此处用于搜索组件信息
|
|
# com.alibaba.fastjson -> fastjson
|
|
# com.google.gson -> gson
|
|
# com.fasterxml.jackson -> jackson
|
|
# net.sf.json ->
|
|
# javax.xml.parsers.DocumentBuilder -> dom方式
|
|
# javax.xml.parsers.SAXParser -> sax方式
|
|
# org.jdom.input.SAXBuilder -> jdom
|
|
# org.dom4j.io.SAXReader -> dom4j
|
|
filter_components = [
|
|
'com.alibaba.fastjson',
|
|
'com.google.gson',
|
|
'com.fasterxml.jackson',
|
|
'net.sf.json',
|
|
'javax.xml.parsers.DocumentBuilder',
|
|
'javax.xml.parsers.SAXParser',
|
|
'org.jdom.input.SAXBuilder',
|
|
'org.dom4j.io.SAXReader'
|
|
]
|
|
|
|
# 此处目前支持过滤
|
|
# 1. https://以及http://开头的
|
|
# 2. IPv4的ip地址
|
|
# 3. URI地址,URI不能很好的拼接所以此处忽略
|
|
filter_strs =[
|
|
r'https://.*|http://.*',
|
|
# r'.*://([[0-9]{1,3}\.]{3}[0-9]{1,3}).*',
|
|
r'.*://([\d{1,3}\.]{3}\d{1,3}).*',
|
|
# r'/[a-z0-9A-Z]+/.*'
|
|
]
|
|
|
|
# 此处忽略常见的域名等信息
|
|
filter_no = [
|
|
r'.*127.0.0.1',
|
|
r'.*0.0.0.0',
|
|
r'.*localhost',
|
|
r'.*w3.org',
|
|
r'.*apache.org',
|
|
r'.*android.com',
|
|
r'.*jpush.cn',
|
|
r'.*umengcloud.com',
|
|
r'.*umeng.com',
|
|
r'.*github.com',
|
|
r'.*w3school.com.cn',
|
|
r'.*apple.com',
|
|
r'.*.amap.com',
|
|
]
|
|
|
|
# AK集合
|
|
filter_ak_map = {
|
|
"Aliyun_OSS": [
|
|
r'.*accessKeyId.*".*"',
|
|
r'.*accessKeySecret.*".*"',
|
|
r'.*secret.*".*"'
|
|
],
|
|
"Amazon_AWS_Access_Key_ID": r"([^A-Z0-9]|^)(AKIA|A3T|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{12,}",
|
|
"Amazon_AWS_S3_Bucket": [
|
|
r"//s3-[a-z0-9-]+\\.amazonaws\\.com/[a-z0-9._-]+",
|
|
r"//s3\\.amazonaws\\.com/[a-z0-9._-]+",
|
|
r"[a-z0-9.-]+\\.s3-[a-z0-9-]\\.amazonaws\\.com",
|
|
r"[a-z0-9.-]+\\.s3-website[.-](eu|ap|us|ca|sa|cn)",
|
|
r"[a-z0-9.-]+\\.s3\\.amazonaws\\.com",
|
|
r"amzn\\.mws\\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
|
|
],
|
|
"Artifactory_API_Token": r"(?:\\s|=|:|\"|^)AKC[a-zA-Z0-9]{10,}",
|
|
"Artifactory_Password": r"(?:\\s|=|:|\"|^)AP[\\dABCDEF][a-zA-Z0-9]{8,}",
|
|
# "Authorization_Basic": r"basic\\s[a-zA-Z0-9_\\-:\\.=]+",
|
|
# "Authorization_Bearer": r"bearer\\s[a-zA-Z0-9_\\-:\\.=]+",
|
|
"AWS_API_Key": r"AKIA[0-9A-Z]{16}",
|
|
"Basic_Auth_Credentials": r"(?<=:\/\/)[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+",
|
|
"Cloudinary_Basic_Auth": r"cloudinary:\/\/[0-9]{15}:[0-9A-Za-z]+@[a-z]+",
|
|
"DEFCON_CTF_Flag": r"O{3}\\{.*\\}",
|
|
"Discord_BOT_Token": r"((?:N|M|O)[a-zA-Z0-9]{23}\\.[a-zA-Z0-9-_]{6}\\.[a-zA-Z0-9-_]{27})$",
|
|
"Facebook_Access_Token": r"EAACEdEose0cBA[0-9A-Za-z]+",
|
|
"Facebook_ClientID": r"[f|F][a|A][c|C][e|E][b|B][o|O][o|O][k|K](.{0,20})?['\"][0-9]{13,17}",
|
|
"Facebook_OAuth": r"[f|F][a|A][c|C][e|E][b|B][o|O][o|O][k|K].*['|\"][0-9a-f]{32}['|\"]",
|
|
"Facebook_Secret_Key": r"([f|F][a|A][c|C][e|E][b|B][o|O][o|O][k|K]|[f|F][b|B])(.{0,20})?['\"][0-9a-f]{32}",
|
|
"Firebase": r"[a-z0-9.-]+\\.firebaseio\\.com",
|
|
"Generic_API_Key": r"[a|A][p|P][i|I][_]?[k|K][e|E][y|Y].*['|\"][0-9a-zA-Z]{32,45}['|\"]",
|
|
"Generic_Secret": r"[s|S][e|E][c|C][r|R][e|E][t|T].*['|\"][0-9a-zA-Z]{32,45}['|\"]",
|
|
"GitHub": r"[g|G][i|I][t|T][h|H][u|U][b|B].*['|\"][0-9a-zA-Z]{35,40}['|\"]",
|
|
"GitHub_Access_Token": r"([a-zA-Z0-9_-]*:[a-zA-Z0-9_-]+@github.com*)$",
|
|
"Google_API_Key": r"AIza[0-9A-Za-z\\-_]{35}",
|
|
"Google_Cloud_Platform_OAuth": r"[0-9]+-[0-9A-Za-z_]{32}\\.apps\\.googleusercontent\\.com",
|
|
"Google_Cloud_Platform_Service_Account": r"\"type\": \"service_account\"",
|
|
"Google_OAuth_Access_Token": r"ya29\\.[0-9A-Za-z\\-_]+",
|
|
"HackerOne_CTF_Flag": r"[h|H]1(?:[c|C][t|T][f|F])?\\{.*\\}",
|
|
"HackTheBox_CTF_Flag": r"[h|H](?:[a|A][c|C][k|K][t|T][h|H][e|E][b|B][o|O][x|X]|[t|T][b|B])\\{.*\\}$",
|
|
"Heroku_API_Key": r"[h|H][e|E][r|R][o|O][k|K][u|U].*[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}",
|
|
# "IP_Address": r"(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])",
|
|
"JSON_Web_Token": r"(?i)^((?=.*[a-z])(?=.*[0-9])(?:[a-z0-9_=]+\\.){2}(?:[a-z0-9_\\-\\+\/=]*))$",
|
|
# "LinkFinder": r"(?:\"|')(((?:[a-zA-Z]{1,10}:\/\/|\/\/)[^\"'\/]{1,}\\.[a-zA-Z]{2,}[^\"']{0,})|((?:\/|\\.\\.\/|\\.\/)[^\"'><,;| *()(%%$^\/\\\\\\[\\]][^\"'><,;|()]{1,})|([a-zA-Z0-9_\\-\/]{1,}\/[a-zA-Z0-9_\\-\/]{1,}\\.(?:[a-zA-Z]{1,4}|action)(?:[\\?|#][^\"|']{0,}|))|([a-zA-Z0-9_\\-\/]{1,}\/[a-zA-Z0-9_\\-\/]{3,}(?:[\\?|#][^\"|']{0,}|))|([a-zA-Z0-9_\\-]{1,}\\.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml)(?:[\\?|#][^\"|']{0,}|)))(?:\"|')",
|
|
"Mac_Address": r"(([0-9A-Fa-f]{2}[:]){5}[0-9A-Fa-f]{2}|([0-9A-Fa-f]{2}[-]){5}[0-9A-Fa-f]{2}|([0-9A-Fa-f]{4}[\\.]){2}[0-9A-Fa-f]{4})$",
|
|
"MailChimp_API_Key": r"[0-9a-f]{32}-us[0-9]{1,2}",
|
|
"Mailgun_API_Key": r"key-[0-9a-zA-Z]{32}",
|
|
"Mailto": r"(?<=mailto:)[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9.-]+",
|
|
"Password_in_URL": r"[a-zA-Z]{3,10}://[^/\\s:@]{3,20}:[^/\\s:@]{3,20}@.{1,100}[\"'\\s]",
|
|
"PayPal_Braintree_Access_Token": r"access_token\\$production\\$[0-9a-z]{16}\\$[0-9a-f]{32}",
|
|
"PGP_private_key_block": r"-----BEGIN PGP PRIVATE KEY BLOCK-----",
|
|
"Picatic_API_Key": r"sk_live_[0-9a-z]{32}",
|
|
"RSA_Private_Key": r"-----BEGIN RSA PRIVATE KEY-----",
|
|
"Slack_Token": r"(xox[p|b|o|a]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32})",
|
|
"Slack_Webhook": r"https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}",
|
|
"Square_Access_Token": r"sq0atp-[0-9A-Za-z\\-_]{22}",
|
|
"Square_OAuth_Secret": r"sq0csp-[0-9A-Za-z\\-_]{43}",
|
|
"SSH_DSA_Private_Key": r"-----BEGIN DSA PRIVATE KEY-----",
|
|
"SSH_EC_Private_Key": r"-----BEGIN EC PRIVATE KEY-----",
|
|
"Stripe_API_Key": r"sk_live_[0-9a-zA-Z]{24}",
|
|
"Stripe_Restricted_API_Key": r"rk_live_[0-9a-zA-Z]{24}",
|
|
"TryHackMe_CTF_Flag": r"[t|T](?:[r|R][y|Y][h|H][a|A][c|C][k|K][m|M][e|E]|[h|H][m|M])\\{.*\\}$",
|
|
"Twilio_API_Key": r"SK[0-9a-fA-F]{32}",
|
|
"Twitter_Access_Token": r"[t|T][w|W][i|I][t|T][t|T][e|E][r|R].*[1-9][0-9]+-[0-9a-zA-Z]{40}",
|
|
"Twitter_ClientID": r"[t|T][w|W][i|I][t|T][t|T][e|E][r|R](.{0,20})?['\"][0-9a-z]{18,25}",
|
|
"Twitter_OAuth": r"[t|T][w|W][i|I][t|T][t|T][e|E][r|R].*['|\"][0-9a-zA-Z]{35,44}['|\"]",
|
|
"Twitter_Secret_Key": r"[t|T][w|W][i|I][t|T][t|T][e|E][r|R](.{0,20})?['\"][0-9a-z]{35,44}"
|
|
}
|
|
|
|
# 此处配置壳信息
|
|
shell_list =[
|
|
'com.stub.StubApp',
|
|
's.h.e.l.l.S',
|
|
'com.Kiwisec.KiwiSecApplication',
|
|
'com.Kiwisec.ProxyApplication',
|
|
'com.secshell.secData.ApplicationWrapper',
|
|
'com.secneo.apkwrapper.ApplicationWrapper',
|
|
'com.tencent.StubShell.TxAppEntry',
|
|
'c.b.c.b',
|
|
'MyWrapperProxyApplication',
|
|
'cn.securitystack.stee.AppStub',
|
|
'com.linchaolong.apktoolplus.jiagu.ProxyApplication',
|
|
'com.coral.util.StubApplication',
|
|
'com.mogosec.AppMgr',
|
|
'io.flutter.app.FlutterApplication'
|
|
]
|
|
|
|
# 此处配置Android权限信息
|
|
apk_permissions = [
|
|
'android.permission.CAMERA',
|
|
'android.permission.READ_CONTACTS',
|
|
'android.permission.READ_SMS',
|
|
'android.permission.READ_PROFILE',
|
|
'android.permission.READ_PHONE_STATE',
|
|
'android.permission.CONTROL_LOCATION_UPDATES'
|
|
]
|
|
|
|
# 此处配置需要扫描的web文件后缀
|
|
web_file_suffix =[
|
|
"html",
|
|
"js",
|
|
"xml",
|
|
"php",
|
|
"jsp",
|
|
"class",
|
|
"asp",
|
|
"aspx",
|
|
"py"
|
|
]
|
|
|
|
# 配置需要忽略网络嗅探的文件后缀名,此处根据具体需求进行配置,默认为不过滤
|
|
sniffer_filter=[
|
|
"jpg",
|
|
"png",
|
|
"jpeg",
|
|
"gif",
|
|
]
|
|
|
|
# 配置自动下载Apk文件或者缓存HTML的请求头信息
|
|
headers = {
|
|
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0",
|
|
"Connection":"close"
|
|
}
|
|
|
|
# 配置自动下载Apk文件或者缓存HTML的请求体信息
|
|
data = {
|
|
|
|
}
|
|
|
|
# 配置自动下载Apk文件或者缓存HTML的请求方法信息,目前仅支持GET和POST
|
|
method = "GET"
|
|
|
|
|