【転載】少し前のブログ記事ですが、ここにあるコマンドの実行を検知したりブロックするするだけでも、内部侵入の気づきや阻止に役立ちそうですね…😌


少し前のブログ記事ですが、ここにあるコマンドの実行を検知したりブロックするするだけでも、内部侵入の気づきや阻止に役立ちそうですね…😌 (最近も傾向は変わってないのかな…🤔) blogs.jpcert.or.jp/ja/2015/12/win…: 少し前のブログ記事ですが、ここにあるコマンドの実行を検知したりブロックするするだけでも、内部侵入の気づきや阻止に役立ちそうですね…😌
(最近も傾向は変わってないのかな…🤔)
blogs.jpcert.or.jp/ja/2015/12/win…
ーー

Windows OSには標準で多数のコマンド(以下「Windowsコマンド」といいます。)がインストールされています。しかし、ユーザが実際に利用するのは多くの場合そのうちのごく一部です。一方、侵入した攻撃者も情報を収集し、あるいはネットワーク内で感染を拡大させるためにWindowsコマンドを使っていることをJPCERT/CCの調査で確認しています。ここで注目されるのは、普通の利用者が使うWindowsコマンドの集合と攻撃者が使うWindowsコマンドの集合のずれです。両者が大きく違っていれば、Windowsコマンドの実行状況を監視または管理することで、攻撃者の動きを検知あるいは抑制できることになります。
今回は、攻撃者が侵入したWindows OS上で使用するWindowsコマンドを明らかにし、攻撃者は使うが各ユーザにとっては不要なWindowsコマンドの実行を制限することで、攻撃による影響を低減する方法を示します。

遠隔操作のためのマルウエア(RAT)には、リモートからコマンド・シェルを実行する機能があります。この機能を利用すると、Windowsコマンドをリモートから実行することが可能です。
そのようなマルウエアをネットワーク内に侵入させた攻撃者は、次のような流れで侵入したネットワーク内のシステムを攻略し、機密情報の収集などを試みます。


① 初期調査 :感染した端末の情報を収集する
② 探索活動 :感染した端末に保存された情報や、ネットワーク内のリモート端末を探索する
③ 感染拡大 :感染した端末を別のマルウエアにも感染させる、または別の端末にアクセスを試みる

これらのすべての攻撃フェーズでWindowsコマンドが使用されます。以降では、各攻撃フェーズで使用されるWindowsコマンドについて紹介します。



初期調査

攻撃者が感染端末の情報収集によく使用するコマンドは、表1の通りです。なお、実行数は3つの異なる攻撃グループが使用していた各C&Cサーバで入力したWindowsコマンドの集計結果です(詳細は、Appendix A,B,Cをご参照ください)。


表1: 初期調査(上位10コマンド) 

 順位コマンド実行数 
1 tasklist 155
2 ver 95
3 ipconfig 76
4 systeminfo 40
5 net time 31
6 netstat 27
7 whoami 22
8 net start 16
9 qprocess 15
10 query 14

 

攻撃者は、tasklistやver、ipconfig、systeminfoなどのコマンドを使用し、ネットワーク情報やプロセス情報、OS情報などを収集して、どのような端末に感染したのかを調査します。これによって、侵入した端末がマルウエア解析のためのおとり環境でないかなどを確認していると考えられます。



探索活動

機密情報の探索やネットワーク内のリモート端末の探索においては、表2のコマンドがよく使用されます。

表2:探索活動(上位10コマンド)

順位  コマンド 実行数
1 dir 976
2 net view 236
3 ping 200
4 net use 194
5 type 120
6 net user 95
7 net localgroup 39
8 net group 20
9 net config 16
10 net share 11

攻撃者は、ファイルを探索するためにdirおよびtypeを使用します。dirコマンドに適切な引数を指定することで、感染端末内のすべてのドキュメントファイルの一覧を収集することもあります。
ネットワークの探索にはnetコマンドが用いられます。特に次のコマンドが多用されます。

  • net view: 接続可能なドメインのリソース一覧取得
  • net user: ローカルおよびドメインのアカウント管理
  • net localgroup: ローカルのグループに所属するユーザ一覧取得
  • net group: 特定ドメインのグループに所属するユーザ一覧取得
  • net use: リソースへのアクセス

さらに、Active Directoryを使用している環境の場合、次のコマンドが利用されることもあります(Appendix A 表5参照)。これらのコマンドは、Windows Serverに搭載されているコマンドで、本来はWindows 7や8.1などのクライアントOSには存在しませんが、攻撃者はこれらのコマンドを外部からダウンロードしインストールした上で実行します。

  • dsquery: Active Directoryに含まれるアカウントの検索
  • csvde: Active Directoryに含まれるアカウント情報取得

感染拡大

ネットワーク内のリモート端末への侵入・感染拡大のフェーズでは、表3のコマンドがよく使用されます。


表3:感染拡大

 順位 コマンド実行数 
1 at 103
2 reg 31
3 wmic 24
4 wusa 7
5 netsh advfirewall 4
6 sc 4
7 rundll32 2

 ※wmicは、探索活動などにも用いられます


atやwmicは、リモート端末上でマルウエアを実行するためによく利用されます。
atコマンドにより、次のように接続可能な端末に対してファイルを実行するタスクを登録することで、リモート端末上でコマンドを実行することができます。

at \\[リモートホスト名 or IPアドレス] 12:00 cmd /c "C:\windows\temp\mal.exe"

 
また、wmicコマンドにより、次のような引数を指定することで、リモート端末上のコマンドを実行することができます。

wmic /node:[IPアドレス] /user:”[ユーザ名]” /password:”[パスワード]” process call create “cmd /c c:\Windows\System32\net.exe user”

 

必要のないWindowsコマンドを実行制限する

これらの攻撃者が使うWindowsコマンドの中には、ユーザごとに吟味すれば、使用しないコマンドが含まれていると思います。そのようなコマンドを、AppLockerやソフトウエア制限ポリシーを使用して実行を制限することで、攻撃者の活動を抑えることができます。例えば、netコマンドを制限したい場合には、図1のようなルールを設定します。(AppLockerの設定方法について詳しくは、マイクロソフトのWebサイトをご参照ください)[1])

図 1: AppLockerのルール


また、AppLockerを有効にすると、設定で指定されたWindowsコマンドが実行された、または実行しようとして拒否された事象がイベントログに記録されるようになり、マルウエア感染後に攻撃者が実行したWindowsコマンドを調査することにも活用できます。

図 2: AppLockerで制限されたプロセスのログ

 

なお、AppLockerではWindowsコマンドの実行を制限せずに監査のみを行うこともできます[2]。監査のみの場合、意図しないWindowsコマンドの実行は防げませんが、イベントログに実行の記録が残ります。攻撃に用いられるWindowsコマンドを利用者自身も使っている場合には、監査のみとするのもよいでしょう。(なお、Windowsコマンドの実行を監視するにはローカルセキュリティポリシーで、「プロセス作成の監査」を有効にすることでも記録することができます。)


おわりに

標的型攻撃においては、攻撃者は、マルウエアに組み込まれた機能だけを使って目的を遂行するわけではなく、Windowsコマンドも多用しています。そうした行為を阻むことができれば、比較的早い段階でインシデントの拡大を抑止することができます。とは言え、すぐにWindowsコマンドの使用を制限するのは難しいと思いますので、まずはAppLockerなどを使用して実行プロセスのログを取得することから始めてみるとよいでしょう。


分析センター 朝長 秀誠

参考情報
[1] Microsoft - Windows AppLocker
  https://technet.microsoft.com/ja-jp/library/dd759117.aspx
[2] Microsoft - 監査を使用してどのアプリケーションが使用されているかを追跡する
  https://technet.microsoft.com/ja-jp/library/dd723693%28v=ws.10%29.aspx

 

Appendix A 攻撃グループ別の実行コマンド一覧(攻撃グループA)


表4: 初期調査(攻撃グループA)

 順位 コマンド 実行数オプション 
1 tasklist 119 /s /v
2 ver 92 
3 ipconfig 58 /all
4 net time 30 
5 systeminfo 24 
6 netstat 22 -ano
7 qprocess 15 
8 query 14 user
9 whoami 14 /all
10 net start 10 
11 nslookup 4 
12 fsutil 3 fsinfo drives
13 time 2 /t
14 set 1  

表5:探索活動(攻撃グループA)

順位  コマンド実行数  オプション
1 dir 903 
2 net view 226 
3 ping 196 
4 net use 193 
5 type 118 
6 net user 74 
7 net localgroup 35 
8 net group 19 
9 net config 16 
10 net share 11 
11 dsquery 6 
12 csvde 5 /f /q
13 nbtstat 5 -a
14 net session 3 
15 nltest 3 /dclist
16 wevtutil 2 

 

表6:感染拡大(攻撃グループA)

順位  コマンド実行数 オプション 
1 at 98 
2 reg 29 add export query
3 wmic 24 
4 netsh advfirewall 4 
5 sc 4 qc query
6 wusa 2 

 
Appendix B 攻撃グループ別の実行コマンド一覧(攻撃グループB)


表7: 初期調査(攻撃グループB)

 順位 コマンド 実行数 オプション
 1 tasklist 29 /m /svc
 2 whoami 6 
 3 ipconfig 5 /all
 4 net start 4 
 5 netstat 3 -ano
 6 nslookup 3 
 7 ver 2 
 8 time 1 /t

表8: 探索活動(攻撃グループB)

 順位 コマンド 実行数オプション 
 1 dir 62 
 2 net user 21 /domain /add
 3 net view 9 /domain
 4 ping 4 
 5 net localgroup 4 /add
 6 tree 3 /F
 7 type 2 
 8 net group 1 /domain

 

表9: 感染拡大(攻撃グループB)

 順位コマンド  実行数 オプション
 1 at 5 
 2 wusa 5 
 3 reg 2 
 4 rundll32 2 

 

Appendix C 攻撃グループ別の実行コマンド一覧(攻撃グループC)


表10: 初期調査(攻撃グループC)

順位  コマンド 実行数オプション 
 1 systeminfo 16 
 2 ipconfig 13 /all /?
 3 tasklist 7 
 4 netstat 5 -ano
 5 whoami 2 
 6 net start 2 
 7 arp 1 -a
 8 chcp 1 
 9 net time 1 
10ver 1 


表11: 探索活動(攻撃グループC)

 順位 コマンド 実行数オプション 
 1 dir 11 
 2 net user 1 /all /?
 3 net view 1 
 4 qwinsta 1 -ano

 
※ 攻撃グループCは、感染拡大を行わなかったため、感染拡大のコマンドについては省略しています。