おしゃべりラビットフット

noobが這い上がって行く記録

honeypotの記録3 PEについて

今回は知識があいまいな部分が多いので復習しようと思いPEをメインに書いていく。

PE Portable Excutable file format

実行可能ファイルのフォーマットでプログラマが作成したファイルが移植可能な違う箇所に移動しても実行可能になるようにするフォーマット

 

簡単に言うと、実行ファイルを実行するための情報が含まれているファイルで、この情報が間違っていると実行されなかったりします。

 

以下PEの解析をするまでの流れとPEに関して書いていきます

 

 

以下の画像を見るとわかりますが、こんな感じで私のハニポには検体が毎日大量に送られてくるので

今回は適当にb2f6379254d4133d4ed84dd6378f288cを選択して教材に使っていく

 

f:id:xn16h7:20180428142134p:plain

 

 ExifToolを使う

f:id:xn16h7:20180428144505p:plain

 

圧縮されていたので解凍していくとWKフォルダが作られ以下のファイルが出てきた。 

 

f:id:xn16h7:20180428144758p:plain

バッチファイルの中身

f:id:xn16h7:20180428145305p:plain

f:id:xn16h7:20180428145525p:plain

 

brighter.exeのハッシュ値調べた

そのハッシュを調べるとcpuminer.exeだったので良くいるマイニングマルウェアみたい

f:id:xn16h7:20180428150926p:plain

pools.txtを開くとマイニングプールが以下のように記載してある。

f:id:xn16h7:20180428151100p:plain

 

最後にXB.exe

PEを見ると、UPXでパッキングされていることがわかる

f:id:xn16h7:20180428151300p:plain

f:id:xn16h7:20180428151314p:plain

f:id:xn16h7:20180428163842p:plain

IATが破壊されていてIDAでもまともに表示されません。

 

アンパックしていく 

f:id:xn16h7:20180428163645p:plain

 

アンパック後のPEを見ていくとUPXの文字が消えている。

f:id:xn16h7:20180428175720p:plain

ここからPEについて書いていきます。

PEファイルの構造

  • IMAGE_DOS_HEADER
  • IMAGE_NT_HEADER
  • IMAGE_FILE_HEADER
  • IMAGE_OPTIONAL_HEADER
  • IMAGE_SECTION_HEADER
  • IMAGE_IMPORT_DESCRIPTOR
  • IMAGE_EXPORT_DIRECTORY
  • IMAGE_IMPORT_BY_NAEM
  • IMAGE_THUNK_DATA32

 一番上のDOS_HEADERから書いていく

IMAGE_DOS_HEADER

上記の画像がちょうどDOS_HEADERの部分が開かれている

このヘッダーはMS-DOSと互換性を取るための物で

アンパッキングガチ勢になりたいならしっかり学ぶべきだが、リバーシングで重要なのはe_magicとe_lfanewのふたつだけ

e_magic

5A4Dというマジックナンバーが格納されいてこのファイルが実行可能ファイルであるということを示している

MZは設計者MarkZbikowskiのイニシャル

MS-DOSヘッダーの開始位置を知ることができる。

 

e_lfanew

IMAGE_NT_HEADER のオフセットが示してある部分になる。

MS-DOSのサイズが可変長なのでこのオフセットからヘッダの位置を調べなくてはならない。

 

IMAGE_NT_HEADER

f:id:xn16h7:20180428184303p:plainf:id:xn16h7:20180428184045p:plain

このヘッダーは

Signature

FileHeader

OptionalHeader

上記三つの情報を持っている

Signature

このファイルはPEファイルであることを示すSignatureでPE\0\0を表示する4バイトの値で50450000となっていることがわかる。

値が違う場合はPEではなく別のフォーマットである。

またウイルス作成者が値を入れておくために利用されていた場所で50450000以外の値が入力されていれば実行できないようになっている

 

FileHeader

 

f:id:xn16h7:20180428184903p:plain

 

Machine

どのようなマシンを対象として作られたか書いてあります

x86 32bitとわかりますね

 

Number of sections セクション数 .TEXT .DATAなどの数

2個になっている

Time Date Stamp ファイルのタイムスタンプ Delphiの場合は1992年と表示される

2015年の3月22日に作成された

Pointer To Symbol Table シンボルは無いので0

Number of Symbols シンボルは無いので0

Size of optional header ファイルヘッダに続くオプショナルヘッダのサイズ 00E0

 

Characteristics

IMAGE_FILEの組み合わせで現在のファイルがどのような形式かわかる詳細は省くが気になるなら調べればすぐでる

0001 IMAGE_FILE_RELOCS_STRIPPED

0002 IMAGE_FILE_EXECUTABLE_IMAGE

0004 IMAGE_FILE_LUNE_NUMS_STRIPPED

0008 IMAGE_FILE_LOVAL_SYMS_STRIPPED

0010 IMAGE_FILE_AGGRESIVE_WS_TRIM

0020 IMAGE_FILE_LARGE_ADDRESS_AWARE

0080 IMAGE_FILE_BYTES_REVERSED_LO

0100 IMAGE_FILE_32BIT_MACHINE

0200 IMAGE_FILE_DEBUG_STRIPPED

0400 IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP

 

今回のファイルは以下の組み合わせになっている

0001 IMAGE_FILE_RELOCS_STRIPPED

0002 IMAGE_FILE_EXECUTABLE_IMAGE

0004 IMAGE_FILE_LUNE_NUMS_STRIPPED

0100 IMAGE_FILE_32BIT_MACHINE

 

IMAGE_OPTIONAL_HEADER

このヘッダーは重要で、情報が多いが必要な部分は限られているので見ていく

 

 ・Magic

32bitの場合は0x10B 64bitの場合は0x20Bが入る

今回は32ビットなので010Bが入っている

・Size of Code 

コード全体のサイズを示す

マルウェアが複製する際ここを基準にする

ここでは0となっている

 

・MajorLinkerVersion

・MinorLinkeraVersion

 どのバージョンのコンパイラでビルドしたのか表す

今回は「06」「00」となっている

 

・Address of Entry Point

エントリポイントのアドレスつまり実行ファイルがメモリ上で実行するアドレス

デバッガーは実行開始ポイントをこのアドレスにImageBaseアドレスを足した位置に指定して停止する

 

・Base of Code

コード領域のベースアドレス

 

・Base of Data

グローバル変数などの値が確定していないデータ領域のベースアドレス

 

・ImageBase

IMAGEファイルがロードされるアドレス

デフォルト値

EXE0x00400000

DLL0x10000000

再配置されると再割り当てされ別の値になったりする。

リンカオプションなどで変更できる。

 

・Section Alignment

各セクションがメモリに配置されるときの保存単位 1000となっているので1000ごとに分割される。

・FileAlignment

セクションがファイル内で配置されるときの保存単位

・Size of Image

メモリにロードされた時に必要なサイズ

D000になっている

Section Alignmentの値の倍数になっている。

 

・Size of Headers 

PEヘッダーのサイズを示すフィールドFileAlignmentの倍数になっている

 

・DataDirectory

IMAGE_DATA_DIRECTORYの構造体

VirtualAddressとsizeという名前のフィールドが含まれている、仮想アドレスとサイズがわかる。

 

IMAGE_SECTION_HEADER

コードセクションやデータセクションの情報が含まれている

セクションというのはリソース情報、デバッグ情報、変数等種類ごとに区切られて格納されているものの区画のこと。

 

RVAというのはimage_baseからの相対オフセットのこと。

Real Address = image_base + RVA

image_baseはebp

RVAがespみたいな感覚で覚えているけど正しい?

 

以上PEについて作文しました。

 

アンパック後はこんな感じで逆アセンブルができたので静的解析を頑張りたいと思う

f:id:xn16h7:20180428163705p:plain

 

 

 

ssmjp行ってきた

ssmjp行ってきた

ブログ枠じゃないけど初参加なので記事書いておく

gistに書いたメモコピペしたので誤字は後々直していく

 

ssm.pkan.org

 

 

f:id:xn16h7:20180426225751j:plain

 

会場はLINEでした。

 

発表者

喋る人 内容 時間
@tigerszkさん 前説 5分
LINE株式会社様   5分
@tcshさん なぜSphinxで手順書を作るのか 25分
@motonさん タイムマシン・インテリジェンス(仮) 10分
@gr4vit0nさん ペネトレーションテストの資格 30分
@gentaさん VyOSで挑むIPv6 IPsec(仮) 30分

 

前説 
ssmjp = 新橋スタディーミーティング

という知らなかった情報を得たw

 

 タイムマシン・インテリジェンス(仮) 

情報収集方法

未来の話題は海外ソース

過去の話題はまとめで収集している

 

時差を理解して情報を収集するメソッドについて

・とても効率がよくて通勤電車内でできる情報収集方法である。

・海外の情報が日本で話題になるまでにさきどりできる

・海外のニュースは日本の夜に公開されるので日本は翻訳の関係で時差があり午前から午後に公開される。

・注意喚起公開はIPAは12時頃 JPcert13時頃に公開されるため、朝に海外情報をキャッチすれば未来の話題を先どりが可能

 

流れ
RSSリーダに海外のニュースサイト登録

2毎朝RSSリーダーをチェック(既読位置までさかのぼる)

3タグ付け気になる記事をツイート

日本で話題になったネタはまとめで取りこぼさない。

 

f:id:xn16h7:20180426225809j:plain

登録しているフィード

 

ペネトレーションテストの資格 

ペンテスター向けの資格を紹介
資格に関する持論
強い技術者になるために勉強しなければならないことを知る
資格取得の責任資格保持を主張するなら資格の品位を落とさないよに自己研鑽すべし

資格紹介
・EC-Counccil CEH

30~60万円

認定条件 2年以上の実務経験またはトレーニングを受ける択一式試験で70パーセント以上

3年に1度の更新トレーニングや会合の参加で120ポイント以上で自動更新

 

試験メモ

教科書持ち込み不可攻撃ツールの基本的な使い方

アメリカの法律など

試験時間4時間ン7つぐらいのセクションに分かれていてそれぞれの持ち時間が決まってるのでそんなに時間に余裕がない

所感日本に代理店がなくてアメリカ時間でオンライントレーニングを受けるので大変だった。

アメリカの法律とかあまり使えない知識まで幅広く出題されるので割とつらい

・GIAC

費用80万円くらい トレーニング合わせて 試験だけなら10~20

認定条件 基準点を得点する

更新4年に1度の更新ポイント36点以上

試験メモ

教科書持ち込み可能

教科書に書いてある知識を組み合わせて考える問題が多い

ほぼすべての試験は英語で出題される明らかに範囲外の問題が数問出題される

品質が良い費用が大きいのでプレッシャーがすごい認定に合格できると知識が強化された実感がわく

・Offensive security

10~20万

認定条件

各認定に対応したトレーニングを受講する試験でoffensve securityの環境を攻撃して報告する

更新

更新なしの永久資格

OSWP

OSCP←世界中のペンテスターが目指している。

ODCE

OSWE 現地トレーニング必須のやつ

OSEE

 

OSCPに関して

海外のペンテスターが目標としている資格

実技試験により攻撃力が試される流れトレーニングを受ける試験に合格する

PWKの概要ビデオをみながら勝手にやってという形式専用フォーラム下手な質問をすると頑張れ位の返信しかもらえない殺伐としているフォーラムがある(笑)

5つのホストに攻撃してそれぞれ侵入して権限昇格する

実技の内容を報告書にまとめて提出する(英語で)

ホストの攻略により得られる点数報告書の減点をして70以上

ボーナス点制圧手順を報告書にまとめて提出すると5点の加算がされる。

試験メモ

Offensive SecurityのVPNにつなげるならどこでも可能

LAB環境で30ホストいじょうで攻略できてから挑戦するのがおすすめ

きついけどLABレポートは作成して提出するのがおすすめ

1流のペンテスターが体験すべきすべての苦悩が詰まっている

技術力の向上が実感できる(ry・・・

 

 

VyOSで挑むIPv6 IPsec(仮) 

VyOSとは
Linux KernelをforkしたVyOS用のLinux kernelのこと
VyOSshell環境やscript群
各種OSS
Linux kernel等について


Helium安定版は普通の人向け Debian6
currentβ版は人柱向け Debian8


実際使ってみると
一般的なユースケースではおおむね問題ない

問題が起こったときコミュニティに頼るか自分で直す

運が悪いと世界初のバグを踏んだりして・・・VyOSユーザー会半年に一回開催

 

VyOSでやったこと

・拠点間をセキュアにつなぎたい
IPV6網を経由すると早いらしい
IPv4 over IPv6 IPsec

結論 無理

なぜダメなのか?

両バージョンCLI未対応VTI6未対応
安定版は無理・・・

β版は大変
kernelをちょっと再ビルドする

動くVyOSのコンフィグシステムとCLIを雰囲気で治す必要がある

iproute2のバージョンを上げる必要がある。

4月頃VyOS1.2.0debian8 iproute2更新したlinux4.14.x

kernel何もしないでおk

その他細かい修正が必要

VyOSのコンフィグシステムとCLIを雰囲気で治す必要がある

バージョンが大きく上がったので色々影響ありそう

使った技術

二分探索法による切り分け

脳みそを一切使わなくてもなぜか原因個所を特定できるとてもすごいテクニック

活用例

Apacheの設定のどこかに間違いがあるの助けて

まずは祖俺らしいか所を丸っと別のファイルに切り出す動かしてみる

半分消して様子を見るの繰り返し

再現したー残った個所をさらに半分消してみる

再現しないー消した箇所を戻してまた半分消してみる


本家に貢献するモチベーションどや顔できるたくさんの人に試してもらえる

独自patchを頑張って維持する苦しみから解放される英語を使う機会をゲットできる(無課金で)
まとめバグの修正にすごい技術は不要基本雰囲気で治せる界隈の皆さんはとてもやさしいバグを見つけたらor直したら本家で直そう

 

なぜSphinxで手順書を作るのか 

GUI作業のコード化は比較的難しい

まずは脱GUI作業


sphinx手順書を書く時間が頭からお尻まで人が手で書くことを想定している手順をXMLで手書きXSLTでパースしてHTML化そんな時代があった。

Xpathがつらい

shellscriptで手順生成してsphinxでパースしいてHTML化

多彩なインクルード機能

デモドキュメントのパーツをインクルードshellscriptをそのまま実行可能

置換テーブルにより該当部分が置き換わるsourceをインクルードしてハイライト表示


sphinx 

shellscriptで全面的に自動化が可能

手順書の作り方インクルードを前提とする時代へ

大事なことは業務の構造化

運用自動化よりも

運用構造化の未来へ

 

 

次回もLINEで開催するそうです、参加したい

f:id:xn16h7:20180426230001j:plain

honeypotの記録2

普段頻繁に来ているものと違う検体がやってきたので記事を書く

SHA256: f6833753f32ec2af76d22dad0caad955905d54f4744b0a942547e8d006646e20
ファイル名: 麦块
検出率: 26 / 67
分析日時: 2018-04-22 12:35:35 UTC (2 時間, 2 分前)

 

麦块は中国語で、マインクラフトのことらしい

割れでゲームやるのが数年前まで流行ってましたが危険ですね。

 

virustotal 

メタデータ

 

f:id:xn16h7:20180423003941p:plain

ExifToorはCTFで使ったことあったけど、表層解析ではハッシュ調べて、PE見てパッキングされてるか調べたりfileコマンドでアーキテクチャ調べるくらいだったので、今後は使っていきたい。

 

f:id:xn16h7:20180422234304p:plain

Microsoft visual C++6.0と表示されていた。


 

f:id:xn16h7:20180423001612p:plain

 

こんな感じで雑に静的解析を行った。


動的解析するとたぶん外部との通信が始まるっぽい。

 

作成されるfileリスト

%PROGRAM_FILES%\mckuai\UpConfig.ini
%PROGRAM_FILES%\mckuai\MCHelper.exe
%PROGRAM_FILES%\mckuai\mctip.exe
%PROGRAM_FILES%\mckuai\MCupd.exe
%PROGRAM_FILES%\mckuai\UnInstall.exe
%PROGRAM_FILES%\mckuai\xldl.dll
%PROGRAM_FILES%\mckuai\MCrpc.exe
%APPDATA%\Microsoft\Internet Explorer\Quick Launch\Ao?e.lnk
%PROGRAM_FILES%\mckuai\downloadgame.ini
%APPDATA%\mckuai\config.ini
%HOMEPATH%\Desktop\Ao?e.lnk
%PROGRAM_FILES%\mckuai\mckuai.exe
%PROGRAM_FILES%\mckuai\QQPCDownload45013.exe
%PROGRAM_FILES%\mckuai\Install.log
%PROGRAM_FILES%\mckuai\Install.exe
%PROGRAM_FILES%\mckuai\download\MiniThunderPlatform.exe
%PROGRAM_FILES%\mckuai\download\minizip.dll
%PROGRAM_FILES%\mckuai\download\msvcp71.dll
%PROGRAM_FILES%\mckuai\download\id.dat
%PROGRAM_FILES%\mckuai\download\atl71.dll
%PROGRAM_FILES%\mckuai\download\dl_peer_id.dll
%PROGRAM_FILES%\mckuai\download\download_engine.dll
%PROGRAM_FILES%\mckuai\gtdbengine.dll
%PROGRAM_FILES%\mckuai\GtFunction.dll
%PROGRAM_FILES%\mckuai\GTReport.dll
%PROGRAM_FILES%\mckuai\download\zlib1.dll
%PROGRAM_FILES%\mckuai\download\msvcr71.dll
%PROGRAM_FILES%\mckuai\download\XLBugHandler.dll
%PROGRAM_FILES%\mckuai\download\XLBugReport.exe

こんな感じみたい

実力不足です。新種PLS

honeypotの記録1 Dionaeaで集めた検体を見ていく。

Dionaeaの運用を始めてログもたまってきたので記事書く。

とりあえず検体に関して書いていく。

 

ログとかは低対話型なので高対話型みたいな楽しみ方はできないと感じているけど、そのへんはあまりわからない。

 

virustotalの送信履歴を見るとけっこう検体が送られてきている。

trojanとランサムウェアとワームが多かった。

f:id:xn16h7:20180417221858p:plain

 

SHA256: 8ee91b2466ead71533efa10e10889f34db44764cbf29dd4965d831bf154fc95d

 

検出率: 0 / 59

 

まずは上記のファイルが検出率0となっていたが、これがなんなのか気になったので追ってみる

f:id:xn16h7:20180417222352p:plain

HTMLのようだ。

HTMLということでネットワークから切り離してからブラウザで開いて見た。

f:id:xn16h7:20180417233143p:plain

f:id:xn16h7:20180417233956p:plain

中国語っぽいタイトルがある

特にscriptとか怪しいソースはない。

ファイルサーバーと書いてありリンクが貼ってある

リンク先のURLを投げてみる。

 

f:id:xn16h7:20180417235144p:plain

 

 クリックするとマルウェアのダウンロードが始まるのでここで終わる。

踏み台にしようとしたか、

マルウェアを外部からもってくるワームだとW32.Changeupというのがあるが、そういった物の副産物じゃないかと思った。よくわからん

もう少し詳しく調べてみたい。

 

せっかくマルウェアも大量に集まったので次の記事でマルウェア解析をしていく。

 

ファイル拡張子の隠蔽RLO

こんにちはおたくです。

ハニポ運用で検体が集まってきたのでそろそろ解析していきたいところです。

さて、拡張子がexeなのを分かりにくくするという知見を得たので記事にしておきます。

攻撃者側の技術ですが悪用は厳禁です。

セキュリティの参考になれば幸いです。

 

かなり単純なのですがRLO(Right-to-Left Override)

という制御記号を使うだけです

f:id:xn16h7:20180412002959p:plain

hoge.exeというファイルを用意します。

このファイルの拡張子の見た目をtxtにしていく。

f:id:xn16h7:20180412003200p:plain

_txtという文字を追加する。_アンダーバーの後ろにカーソルを置いて

名前の変更→右クリック→Unicode 制御文字の挿入→RLOを選択

以下のようになる。

 

f:id:xn16h7:20180412002921p:plain

 

RLOを悪用してファイル名を偽装したマルウェアはけっこう昔から流通してたらしい。

 

txtファイルでも実行前に注意する必要がありますね。

SSH公開鍵設定

SSH

公開鍵の設定方法備忘録的なものを載せておきます。

やるだけです。 

参考までに 

 

メモ

sudo chown -R dionaea:dionaea /opt/dionaea/ 

ハニーポット構築

はじめに

こんにちは春から社会人になったおたくです。

同期とハニポのお話をしてまた運用したくなったのでついでに記事にした。

以前ラズパイを使ってハニポに挑戦しましたが、今回はさくらのVPSを使うだけなのでかなり楽。

今回導入するのはDionaea (ディオナエア)

蠅捕草 Dionaea muscipula ディオナエア・ムスキプラですね。

 

環境

ubuntu14.04.2

カスタムOSインストールガイド - Ubuntu 14.04 – さくらのサポート情報

 

参考URL

VPSにハニーポット(Dionaea)を入れてみた - Tahoo!!

Dionaeaを改変してNmapによる検出を回避する - sonickun.log

 初期設定はそのまま下の記事を参考にしていけば良い

ufw等でファイアウォールの設定など

honeeepi でハニーポット(Dionaea)を構築する - Qiita

SSH公開鍵設定 - おしゃべりラビットフット

Dionaeaの導入

 

$sudo service dionaea startで起動されるので

nmapを使うと起動前と違いポートが色々解放されていることがわかる。
f:id:xn16h7:20180407154335p:plain 

以下のリンクを参考に nmap に-sV -sS 等オプションを付けて実行していく

 Dionaeaを改変してNmapによる検出を回避する - sonickun.log

【nmap】ポートスキャンを実施する | 日経 xTECH(クロステック)

f:id:xn16h7:20180407163127p:plain

追記:apt-get で導入すると現在は検出されないっぽいというお話を聞いたけど自分の場合は445が検出されてた、複数回実行すると1433も検出されることがあったので、全部変えたほうがいいみたい。

445を見るとDionaeaと検出できてしまっている

honeypotであることは隠したいのでリンクを参考に修正していく。

 nmapがDionaeaのシグネチャを持っているのでスキャン結果とシグネチャを比較して検出しているのでシグネチャが書いてあるファイルをダウンロードして対策を行っていく。

f:id:xn16h7:20180407171250p:plain

f:id:xn16h7:20180407171258p:plain

f:id:xn16h7:20180408205233p:plain

こんな感じでリンク先を参考に同じように修正するだけ。

一通り変更してnmap使うと隠せてるのでたぶん大丈夫なはず。

f:id:xn16h7:20180408205339p:plain

ログの設定

$ sudo vim /opt/dionaea/etc/dionaea/dionaea.cfg

levelsの部分2カ所を下記のように変更する

f:id:xn16h7:20180409222126p:plain

 

 

あとは

DionaeaFR

VirusTotalと連携

等をやっていく

 

ログに関して

/opt/dionaea/var/log 全体ログ

/opt/dionaea/var/bistreams アクセスログ

/opt/dionaea/var/binaries ファイル共有されたファイル

/opt/dionaea/var/wwwroot ftpで共有されたファイル。