天天看點

如何更有效地執行大規模安全掃描

如何更有效地執行大規模安全掃描

關于Netz

Netz可以幫助我們輕松地運作網際網路範圍内的錯誤配置研究和其他的東西,它将基礎結構作為代碼包含在其中,是以您可以将自己的研究計劃放入配置檔案中,運作指令行接口,然後等待結果。它還包含一些更進階的特性,比如通過使用PF_RING ZC(Zero Copy)核心子產品來快速掃描BLAZING等等。

Netz可以幫助我們實作以下任務:

大規模的内網和外網掃描;

擴充我們的滲透測試工具箱,可直接通過指令行接口工具通路;

安裝簡單;

專為紅隊和藍隊研究人員設計;

本文概述

在這篇文章中,我們将研究網際網路中的宏錯誤配置問題,并學習如何使用Netz來幫助我們了解相關問題。Netz是一款開源工具,正好适合我們的研究。

掃描的常用方式

檢測公開暴露在網際網路上的網絡資産的最快方法是使用搜尋引擎服務,如Shodan、Censys或Zoomeye,并使用查詢語言檢視廣泛的網際網路元件。如果您想手動執行,而不是使用線上服務,或者如果您想在内部網絡上執行掃描,同樣有多種方法可以執行。不同類型的掃描是在小型網絡和大型網絡之間進行的,而大型網絡可以擴充到整個網際網路。

對于小規模的掃描,可以使用流行的指令nmap(在最進階的滲透測試發行版OS-Kali Linux中提供)。對于更大規模的網絡,最流行的是使用ZMap和masscan。

我該如何做呢?

假設我們現在要進行一項研究,比如說你想掃描整個網際網路(或者其中的一些),你打算如何使用這些工具?好問題!

如果你想用ZMap或masscan從自己的電腦上掃描整個網際網路,你對結果很好奇,而且不能離開電腦,那你應該準備好一些吃的并做好長時間戰鬥的準備,因為這可能需要好幾個禮拜,而且你的帶寬資源估計也夠嗆。為什麼呢?因為這些工具的設計是很有攻擊性和侵略性的,能夠在最短的時間内掃描整個網際網路,你可以控制那些工具使用的帶寬容量,并減少它的攻擊性,但是你需要更多的食物…

減少等待時間

如果你不想等那麼久的話,你可以使用一個開放雲裝置,但即使是這樣,基礎裝置的網絡接口控制器(NIC)也會對每秒處理的資料包數量(PPS)進行一個限制。

那你能做什麼呢?你可以使用一個更強大的機器,一個更強大的網卡和更多的PPS,然後它會更快。能快多少?這取決于機器類型和網卡類型-時間越短越好,但即使這樣也可能需要數小時到數天。問題是,如果你想在最短的時間内做很多測試,即使是最強大的機器和最好的網卡類型也是有限的,那麼現在呢?我們可以使用兩種不同的方法來配置設定工作負載:

将掃描任務分發到多台機器,每台機器掃描一個專用的CIDR子網,是以我們可以将0.0.0/0拆分為4個子網,這樣每台機器将掃描自己的子網,然後合并結果。

使用一台具有多個NIC的強大計算機,并讓該計算機使用整個子網。

到目前為止,我們一直在讨論網絡掃描,但正如我前面提到的,如果您想做的不僅僅是知道有哪些開放端口和中繼資料,并且希望在掃描時對這些端口執行應用程式操作,那麼您需要一個應用程式掃描工具,其中最流行的就是ZGrab2。

計劃執行

下面是我們計劃想要實作的工作流:

盡可能快地掃描某個子網;

将這些IP/端口元組通過管道傳輸到應用程式掃描工具,以測試這些端口中的各種安全問題;

無盡地等待…

下面給出的是應用程式安全掃描的幾個例子:

你想要測試一個Elasticsearch伺服器是否沒有配置管理者通路,我們可以通過向

/_cat/indices

發送一個HTTP調用請求,如果傳回的是200 OK,則說明存在問題。

你想要測試一台Web伺服器中的‘.git’目錄是否存在錯誤配置,我們可以向

/.git

發送一個HTTP調用,如果傳回的是200 OK,則說明存在問題。

你想要測試Redis / Memcached / PostgreSQL / MySQL是否被配置為不需要憑證即可通路,我們同樣可以使用ZGrab2進行測試。

在任何需要添加的協定或技術堆棧缺失的情況下,ZGrab2都是可擴充的,是以您隻需在Golang中編寫一個小函數,就可以輕松地擴充工具功能。

我為什麼要去尋找網際網路範圍的錯誤配置?

如果我告訴你你的家庭路由器對網際網路開放供内部通路,你會有什麼感覺?聽起來有點吓人,但你腦海中浮現的第一件事是:我有什麼需要保護的嗎?大多數時候答案都是-不,沒什麼特别的。對于那些回答不了的人,我将用黑客攻破嬰兒螢幕的著名故事來提醒你,我将讓你想象接下來會發生什麼!

現在是一個新的挑戰:如果我告訴你,你公司的内部資料,或者更糟的是,你公司的客戶資料,是對網際網路開放的,你會有什麼感覺?如果你感覺心跳開始加快-恭喜你!你成功通過了挑戰!你現在可以繼續閱讀了。

我們怎麼解決這個問題?

這個世界已經變了,我們正處在第五次科技浪潮中,和往常一樣,軟體的世界在向前發展,而網絡空間的解決方案卻隻能緊随其後。為了保持競争力,組織正在以前所未有的速度前進,在不同領域增加了軟體自動化,所有團隊都采用了不同的工具和系統。由于公共雲的興起和“一切皆是服務”的爆炸式增長,以及在任何地方,一切都由軟體自動化控制的事實,公司都在快速發展。

腳踏實地

今天,世界上幾乎所有的公司都在使用不同的第三方SAAS、PAAS和IAAS。在這些“As-A-Service”解決方案之上,還安裝了資料管道工具、資料科學架構、不同的開源項目以及DevOps基礎設施和可觀察性工具。所有這些不同的解決方案都使用不同的配置&機密/憑據,包括資料庫連接配接字元串、API密鑰、非對稱密鑰、令牌、使用者名/密碼組合、管理、安全和隐私設定等等。即使是今天的基礎設施也不是以前的樣子——基礎設施是由代碼控制的,而代碼又包含了很多配置類型,是以變得更加複雜。在一些組織中,在多個公共雲供應商的多個基礎設施中,複雜性甚至更高。

具有諷刺意味的是,這些尖端技術讓我們能夠越來越快地走向一個更好的地方,但同時也帶來了網絡空間的風險。如此強大的權力帶來了巨大的責任:你如何確定你公司的所有資産都得到保障?

那我們該怎麼辦?

既然我們站在同一個立場上,而且複雜性非常明顯,那麼就很容易了解對供應鍊任何關鍵部分的錯誤配置或錯誤處理是如何導緻嚴重後果的了。錯誤的大小與損失不成比例,一個相對較小的錯誤可能導緻公司在“最佳情況”下損失數百萬美元,或在最壞情況下停業。