資產監控及資訊收集擴充套件
POC、EXP、Payload與Shellcode的區別(原連結傳送門)
1.概念
POC:全稱 ' Proof of Concept ',中文 ' 概念驗證 ' ,常指一段漏洞證明的程式碼。
EXP:全稱 ' Exploit ',中文 ' 利用 ',指利用系統漏洞進行攻擊的動作。
Payload:中文 ' 有效載荷 ',指成功exploit之後,真正在目標系統執行的程式碼或指令。
Shellcode:簡單翻譯 ' shell程式碼 ',是Payload的一種,由於其建立正向/反向shell而得名。
2.幾點注意
POC是用來證明漏洞存在的,EXP是用來利用漏洞的,兩者通常不是一類,或者說,PoC通常是無害的,Exp通常是有害的,有了POC,才有EXP。
Payload有很多種,它可以是Shellcode,也可以直接是一段系統命令。同一個Payload可以用於多個漏洞,但每個漏洞都有其自己的EXP,也就是說不存在通用的EXP。
Shellcode也有很多種,包括正向的,反向的,甚至meterpreter。
Shellcode與Shellshcok不是一個,Shellshock特指14年發現的Shellshock漏洞。
3.payload模組
在Metasploit Framework 6大模組中有一個Payload模組,在該模組下有Single、Stager、Stages這三種類型,Single是一個all-in-one的Payload,不依賴其他的檔案,所以它的體積會比較大,Stager主要用於當目標計算機的記憶體有限時,可以先傳輸一個較小的Stager用於建立連線,Stages指利用Stager建立的連線下載後續的Payload。Stager和Stages都有多種型別,適用於不同場景。
4.總結
想象自己是一個特工,你的目標是監控一個重要的人,有一天你懷疑目標家裡的窗子可能沒有關,於是你上前推了推,結果推開了,這是一個POC。之後你回去了,開始準備第二天的滲透計劃,第二天你通過同樣的漏洞滲透進了它家,仔細查看了所有的重要檔案,離開時還安裝了一個隱蔽的竊聽(qi),這一天你所做的就是一個EXP,你在他家所做的就是不同的Payload,就把竊聽(qi)當作Shellcode吧!
Github 監控
便於收集整理最新 exp 或 poc 便於發現相關測試目標的資產
各種子域名查詢
DNS,備案,證書
全球節點請求 cdn
列舉爆破或解析子域名對應
便於發現管理員相關的註冊資訊
黑暗引擎相關搜尋
fofa,shodan,zoomeye
微信公眾號介面獲取
內部群內部應用內部介面
演示案例
監控最新的EXP釋出及其他
#Title: wechat push CVE-2020 #Date: 2020-5-9 #Exploit Author: weixiao9188 #Version: 4.0 #Tested on: Linux,windows #cd /root/sh/git/ && nohup python3 /root/sh/git/git.py & #coding:UTF-8 import requests import json import time import os import pandas as pd time_sleep = 60 #每隔 20 秒爬取一次 while(True): headers1 = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"} #判斷檔案是否存在 datas = [] response1=None response2=None if os.path.exists("olddata.csv"): #如果檔案存在則每次爬取 10 個 df = pd.read_csv("olddata.csv", header=None) datas = df.where(df.notnull(),None).values.tolist()#將提取出來的資料中的 nan 轉化為 None requests.packages.urllib3.disable_warnings() response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE2020&sort=updated&per_page=10",headers=headers1,verify=False) response2 = requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&per_page=10",hea ders=headers1,verify=False) else: #不存在爬取全部 datas = [] requests.packages.urllib3.disable_warnings() response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE2020&sort=updated&order=desc",headers=headers1,verify=False) response2 = requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&order=desc",heade rs=headers1,verify=False) data1 = json.loads(response1.text) data2 = json.loads(response2.text) for j in [data1["items"],data2["items"]]: for i in j: s = {"name":i['name'],"html":i['html_url'],"description":i['description']} s1 =[i['name'],i['html_url'],i['description']] if s1 not in datas: #print(s1)