攻撃者が悪用するWindowsコマンド(2015-12-02)

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  
10 ver  1  


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

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

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

≪ 前へ
トップに戻る
次へ ≫