2020年11月15日 星期日

在Kali 2020.3 精簡環境安裝OpenVAS

對於滲透測試人員,NessusOpenVAS是兩套很實用(又免費)的弱掃工具,為了避免影響執行效能,筆者習慣將它們獨立安裝,這兩套工具都是使用瀏覽器作為使用者界面,獨立安裝的環境就不需要保留X-WINDOW視窗,可以讓資源充分供弱掃工具使用。

筆者著作「Kali Linux 滲透測試工具」雖然也有介紹OpenVAS的安裝方式,但隨著工具改版,現在OpenVAS的安裝又不一樣了,在此做個補充。

一、安裝Kali精簡環境

  1. kali.org 下載「Kali Linux 64-Bit (NetInstaller)」。
  2. 建立一部虛擬機,安裝方式請選擇「Install disk image file(iso)」,並以前一步驟下載的「kali-linux-2020.3-installer-netinst-amd64.iso」作為iso來源。
  3. 作業系統類型請選擇「Linux/Debian-9.x 64 bit」;並將磁碟空間設為100GB。
  4. 啟動此虛擬機,進入作業系統安裝程序,按照畫面指示安裝,為避名預設主機名稱發生衝突,請指定合 適的Hostname,筆者是使用OPENVAS2020。
  5. Kali預設不再提供root權限,安裝過程必須指定使用者帳號,筆者選用openvas作為使用者,密碼就設為toor
  6. 在選擇欲安裝的軟體時,請取消Desktop environment及top10(如下圖),只需要留下精簡環境所需的工具即可。
  7. 過程中可能出現軟體安裝失敗(如下圖),按照畫面說明,直接按「Enter」,在下一個畫面,手動選擇「Install the GRUB boot loader」,略過軟體安裝步驟!
  8. 安裝完成後會自動重開機!然後進入命令列介面。請以步驟5. 所設的帳號及密碼登入,記住,此帳號不具root權限,很多指令都必須用sudo引導!

二、請依下列更新Kali及安裝必要工具

  1. sudo apt update && apt upgrade -y    #更新作業系統環境(每隔幾天就做一次吧)
  2. sudo apt install locate curl wget          #安裝必要工具
  3. sudo apt install gvm*                            #安裝OpenVAS
  4. sudo service --status-all                     #檢查 postgresql、redis-server 及 gvmd 是否有啟動,如果沒有啟動,請手工啟動
  5. sudo service redis-server start            #手動啟動 redis-server,若出現錯誤訊息,請參考本篇底下的「備註」
  6. sudo update-rc.d redis-server enable  #若能啟動 redis-server,就將它設為開機時自動啟動
  7. sudo service postgresql start              #啟動 postgresql
  8. sudo update-rc.d postgresql enable   #將 postgresql 設定自動啟動
  9. sudo reboot                                      #重新啟動作業系統
    不要使用 su - 切換到root身分,不然執行「gvm-setup」會出現
    could not change directory to /root permission denied」的錯誤訊息

  10. sudo gvm-setup                                #執行OpenVAS設定(會花很長時間)
  11. sudo gvm-check-setup                      #執行OpenVAS檢查,看看缺少什麼東西
    注意錯誤訊息(FIX: 開頭),並按照提示修正,直到「sudo gvm-check-setup」的結果沒有需要「FIX:」的項目。
  12. sudo service --status-all                     #再次檢查 postgresql、redis-server 及 gvmd 是否有啟動
  13. sudo service gvmd start                     #手動啟動 gvmd
  14. sudo update-re.d gvmd enable         #將 postgresql 設定自動啟動
  15. sudo gvm-start                                 #正式啟動 OpenVAS伺服器,如果有錯誤訊息,請修正

三、從外部電腦操作OpenVAS伺服器

由於OpenVAS預設只能從本機連線,但我們是安裝在精簡型Kali,本身沒有瀏覽器,必須想辦法讓外部的電腦可以連線這部OpenVAS伺服器

  1. sudo sudo nano /lib/systemd/system/greenbone-security-assistang.service 
    修改gsad的接聽範圍,請將「ExecStart=/usr/sbin/gsad --listen=127.0.0.1 --port=9392
    改成「ExecStart=/usr/sbin/gsad --listen=0.0.0.0 --port=9392」,表示接聽所有網卡的請求
  2. 存檔後,重新啟動虛擬機
  3. 重新進入虛擬機後,請執行「sudo gvm-start」啟動服務
  4. 利用外部電腦的瀏覽器連線,終於連上了,但是~~~帳號和密碼呢?

四、帳號和密碼呢?

在安裝過程中都沒有注意到OpenVAS的帳密,這下怎麼辦?別急,再回到OpenVAS伺服器,使用下列命令重設「admin」的密碼
sudo runuser -u _gvm -- gvmd --user=admin --new-password=toor

如果要增加其他使用者,可以執行下列命令:
sudo runuser -u _gvm -- gvmd --create-user=<新帳號> --password=<設定密碼>

重新使用「admin / toor」登入OpenVAS,成功!


備註:

若啟動 redis-server 時,若出現「redis-server is not running or not listening on socket: /var/run/redis-openvas/redis-server.sock」的錯誤訊息,處理方式如下:

  1. sudo nano /etc/redis/redis.conf                     #編輯 redis.conf
  2. 搜尋「unixsocket」文字,應該會找到下列兩列文字:
    # unixsocket /var/run/redis/redis.sock
    # unixsocketperm 700
  3. 只要將註解符號刪除,然後存檔,再重新啟動OpenVAS伺服器即可

2020年11月7日 星期六

HITCON 2020 { IoT Hacking 101 }議程之 LV2題目的另類解法

今年的Hitcon 2020第一天Jimmy Liu老師主講「IoT Hacking 101」,主要是實作基礎的物聯網設備滲透測試!有關上課素材可從「https://github.com/DrmnSamoLiu/Hitcon-iot101」下載,上課簡報請參考素材包裡的DVIPcam_hitcon.pdf,在此假設您已事先閱讀並瞭此份簡報的內容。

參加此議題的同事於會後分享學習心得,而筆者事後練習時,又發現LV2(簡報22頁)有另一條啟用Telnet及FTP服務的途徑,借此做個筆記。

此題的網路攝影機預設只開啟端口443、554、8000,我們要想辦法辦啟動這台設備上的Telnet及FTP服務,即開啟端口23及21。

依照簡報內容,由於使用者未變更預設密碼,駭客可由使用手冊得知兩組登入帳密:「root / root」及「user / DVIPcam」,實際上,root的密碼已變更,無法直接以管理員身分登入管理界面,但user的密碼則未變更,駭客能夠經由提權而取得管理員權限,在瀏覽「System Configuration」頁面時啟用Telnet及FTP服務(簡報28頁)。好了,前述的滲透手法,簡報裡已寫得很清楚,這裡不再贅述。

但~~如果連user的預設密碼也被修改,有沒有「不需要網站的帳密就能開啟Telnet服務」的方法?這篇的手法就是了!

一、為了分析網站的原始碼,先從登入頁下載此設備的韌體更新檔(firmware.bin)。

二、利用7-zip開啟 firmware.bin,檢查 www/cgi-bin/ 目錄,注意readcookie.cgiConfig.cgiConfigsubmit.cgi這三個檔案。

三、檢查readcookie.cgi,發現呼叫此CGI時不會檢查是否已登入,且會將HTTP_COOKIE寫到/var/Allowed_SessionID,而Allowed_SessionID是判斷使用者有沒有登入的依據。我們就是利用此漏洞。

 四、檢視Config.cgi,發現它會載入 /var/web/Config.html,所以再檢視此網頁,發現它是用來設定FTP及Telnet開關,Submit的內容是Telnet=on/off&FTP=on/off,提交對象是「/cgi-bin/Configsubmit.cgi

 五、再檢視「Configsubmit.cgi」,發現此cgi並不會檢查權限,只要有session就可以成立。(剛剛的readcookie.cgi已可建立session)

 

經由上面分析,得知readcookie.cgi可以建立空seeeionidConfigsubmit.cgi可以設定Telnet及FTP服務,為了便於操作,此處使用Firefox示範。(192.168.232.139 是筆者電腦啟動LV2映象檔後的網址,請依個人環境修正

一、 在瀏覽 https://192.168.232.139/cig-bin/readcookie.cgi,會得到如下結果,重點在於session is 的內容是空的

二、啟用 FireFox的開發者模式,切換到「網路」頁籤。

三、瀏覽https://192.168.232.139/cig-bin/Configsubmit.cgi,出現404是正常的。 

四、從「網路」頁籤的網址清單中選擇剛剛請求的Configsubmit.cgi,然後點擊右方的「重新發送」下拉選單,並選擇「編輯並重新發送」項目。

五、將方法改成「POST」,並在請求內容中貼上「Telnet=on&FTP=on」,然後「傳送」。

六、查看回應結果,FTP及Telnet已經打開。

假設您已按照簡報30頁的方法執行暴力破解,應該已得到作業系統的 admin / Administrator 這組帳密,可以利用telnet操控這台設備了!

2020年7月21日 星期二

天下文章一大抄,你錯我錯一起叫!

個人習慣將資料做三個複本,每月另備到庫存硬碟,因此不太在意勒索病毒。恰好前些日子機關舉辦資安意識講座,講師提到最近有一支勒索病毒利用作業系統的漏洞,可以避過防毒軟體的查殺,病毒使用的技術叫「RIPlace」。這個技術引起我的興趣,上網搜尋發現有大量文章報導這支病毒,基於公務員的潛意識,首先瀏覽技服中心的資安新聞,結果~~是我國學有問題?還是眼睛業障重?我真的看不懂這段中文字「(3)將原始檔案存入硬碟,透過Rename功能置換原始檔案」,原始檔案不就在硬碟中,幹嘛還要「將原始檔案存入硬碟」?然後還「透過Rename功能置換原始檔案」,自己換掉自己,又是什麼道理?
技服的頁庫存檔
還好文章底下有英文參考來源, 連到www.nyotron.com看看(這個漏洞是它找到的),原文是「3.OR saving encrypted file to disk, then replacing it with the original file using the Rename operation.」:
nyotron
用Google翻譯這段英文的結果:「將加密的文件保存到磁盤,然後使用重命名操作將其替換為原始文件」,這中文的前段是對了,後段還是怪怪的,「使用重新命名的方式將它換成原始檔案」,這樣加密後的內容不就又回到原來的樣子,是要勒索誰呀!
因此我推斷應該是作業系統有個漏洞,將加密檔案的名稱換成原始檔案的名稱時(是替換檔名,不是替換檔案),作業系統不會檢查兩支檔案使用相同名稱,因此加密檔案存活下來,而原始檔案變成無主野鬼。至於原始檔案的內容是繼續留在原位置,還是加密檔案會因更名成功而覆蓋原始檔案本來的位置,我就不確定了!
後來又找到另一個英文網站,不僅提供更詳細的介紹,還畫出流程圖, 有關RIPlace的介紹,它就提到「Writing the encrypted data from memory to new file and then using the Rename call to replace the original file.」(將加密的數據從內存寫入新文件,然後使用“重命名”調用替換原始文件),這樣看起來就合理多了!
bleepingcomputer

7月21日再上技服網站,這篇新聞已經修正了。
技服資安新聞

在發現技服的資安新聞有疑問後,繼續查詢其他資安網站的內容,真的「天下文章一大抄」大家都錯一樣。詳如後面的截圖。本篇沒有特別用意,只想傳達「盡信書不如無書」,只要覺得不合常理,就該大力懷疑!