openvas命令列呼叫
該文章為作者原創,轉載請註明來源!
該文章為作者原創,轉載請註明來源!
目錄
1.openvas
OpenVAS(Open Vulnerability Assessment System)是一套開源的漏洞 掃描系統,早期 Nessus 是其中一個最流行的和有強力的漏洞掃描器,它最初是 自由和開放原始碼,但在 2005 年關閉了原始碼,在 2008 年取消了免費的“註冊 Feed”版本。現在每年花費 1200 美元。在 Nessus 的基礎上發展了一個免費開 源的分支,就是 OpenVAS。OpenVAS 集成了多個服務、元件,既提供大量的 免費掃描外掛(NVT,Network Vulnerability Tests),也提供商業化的增強掃 描外掛(GSF,Greenbone Security Feed)。
適用閱讀人群
openvas的web頁面可以很方便的完成整個掃描流程,在網上也能蒐集到很多資料,但是本章主要講解的是怎樣通過openvas自帶的命令列操作來實現整套openvas掃描流程。
在閱讀本章之前,最好對openvas架構有一定了解,並且熟悉openvas web端的掃描流程
2.openvas三種命令列呼叫
openvas中包含三種命令列呼叫方法,分別是omp,openvasmd和openvas-nasl
其中omp和openvasmd比較類似,實現的都是openvas-manger的功能,而omp更適合採用命令列去呼叫,openvasmd更像是一種api,是被呼叫的介面
openvas-nasl通常用於呼叫openvas中的某個外掛:
openvas-nasl -X -t 127.0.0.1 -i /var/lib/openvas/plugins/ -k get_app/ports/cpe:/a:beasts:vsftpd=21 /var/lib/openvas/plugins/2011/gb_vsftpd_backdoor_07_2011.nasl
其中每種外掛呼叫的命令引數都不盡相同,因為openvas中存在外掛的依賴關係,所以使用openvas-nasl時需要先弄清想要呼叫的外掛的依賴關係才可以呼叫。
本章主要講解如何通過命令列(omp)的方式實現openvas的從下發任務到任務狀態獲取,最後到任務結果查詢的呼叫過程
3.omp呼叫方式
omp是基於xml的,通過omp可以直接傳送和接收xml的命令和響應(commands & response),但是xml畢竟相比我們通常接觸到的命令列呼叫來比較為複雜,因此omp也很人性化的將一些重要的命令給可讀化。即使不使用xml也可以很輕鬆的完成一整套簡單的掃描流程,但是想要實現較為高階的掃描,還是需要去了解omp的xml語句的。
例:
omp --help和omp --xml = "<help/>"
可以看到,使用omp --help可以看到更加易於理解的命令列呼叫方式,而使用omp --xml="<help/>"則能看到很具體的有關於xml語句的呼叫方式。
又如檢視當前下發的任務,可以使用普通命令列呼叫:omg --get-task,也可以使用xml語句的呼叫:omp --xml=“<get_tasks>”
當使用xml方式呼叫時,返回的資訊也為xml格式,而使用普通命令列呼叫時,返回則是易於理解的資訊
4.omg完成簡單掃描流程
檢視命令
1、檢視config omp -u admin -w admin --get-configs 2、檢視task omp -u admin -w admin --get-tasks 3、檢視target omp -u admin -w admin --get-targets
建立新任務
1、建立config(為了不破壞系統原有的config) omp -u admin -w admin -X '<create_config><copy>daba56c8-73ec-11df-a475-002264764cea</copy><name>zhangsan</name></create_config>' 其中daba56c8-73ec-11df-a475-002264764cea是利用查詢config命令得出的系統openvas的config_id。 name隨便 2、建立目標 omp -u admin -w admin -X '<create_target><name>zhangsan</name><hosts>10.2.0.166</hosts></create_target>' 3、查詢targe_id 找到自己剛剛建立的目標id
4、建立任務 omp -u admin -w admin -X ' <create_task><name>10.2.1.166</name><config id="6dbaadf6-8208-48de-9ce1-045a664fe925"/><target id="11fc7ad1-fb77-4da0-9245-2f40687bea36"/> </create_task>' 5、啟動任務 omp -u admin -w admin -X '<start_task task_id="fb295a06-02a3-4cc9-a3ea-2841ce133a86"/>'
5.更加細緻的omg掃描流程
儲存賬號密碼
相信你已經發現了剛剛omg的呼叫中的每一個命令都需要加入-u admin -w admin來完成,怎樣才能省去每次呼叫命令時輸入的賬號密碼,甚至是ip和埠呢?
建立$(HOME)/omp.config檔案(UNIX類系統),windows系統為%USERPROFILE%omp.config.
例ubuntu中root使用者為/root/omp.config,user使用者為/home/user/omp.config
編輯檔案內容如下:
[Connection]
host=127.0.0.1
port=9390
username=admin
password=admin
即可實現賬號密碼的儲存
開啟一個掃描
開啟一個掃描要分別開啟target,config和task,我們逐一來看
target
開啟一個target不存在簡單命令呼叫,必須要結合xml語句,
如下為一個簡單的開啟一個target的語句,其中包含客戶端相關語句與管理端相關語句:
所有有關開啟target的xml語句可以訪問http://docs.greenbone.net/API/OMP/omp-6.0.html#command_create_target 檢視
開啟一個config
開啟一個配置只需要使用--config-file=<config-file>語句即可,其中openvas自帶了幾種配置:
當然,也可以自己建立配置,如最下邊的test1就是使用者自創的
開啟一個task
開啟task是開啟一個掃描流程的最後一部分,其中開啟task需要選擇目標和配置,就是我們剛剛建立的target和config,命令如下:
./omp -C -c daba56c8-73ec-11df-a475-002264764cea --name "callmew" -t aa410e98-ff8d-45b6-be98-11fd7a895435
其中-c後邊接上選擇的配置,-t後邊接上選擇的目標,--name則為該task的名稱。這樣我們就成功的建立了一個掃描任務了,最後只需要執行這個掃描任務即可了
當然,我們也可以選擇xml的方式開啟:
omp -X ' <create_task><name>callmew</name><config id="daba56c8-73ec-11df-a475-002264764cea"/><target id="aa410e98-ff8d-45b6-be98-11fd7a895435"/> </create_task>'
開啟掃描任務
利用檢視任務指令,可以看到,我們剛剛建立的任務狀態為NEW,並沒有開始進行掃描,我們需要執行:
omp -S d3e05449-dfa6-4b02-8279-c31f477a11c3
-S後邊接上制定的掃描任務,如此一來,我們就成功開啟了一個掃描任務了,完美完成了優化主機的第一步啦!
檢視掃描狀態
檢視掃描報告
檢視某一個報告的指令為get-report,而get-report-formats是omp2.0開始實現的新功能,可以顯示出過濾的選項
儲存掃描報告
該指令為將報告儲存到report.csv中
6.openvas狀態碼
openvas的狀態碼用於標記不同命令的響應狀態,和http狀態碼十分類似,這裡直接給出官方提供的解釋,不予翻譯了。