はじめに
この記事は、Kali Linux2022.1 でハッキングラボをつくってみる 6 Windows7をハッキングする編5(Metasploit Frameworkを使う後編)でやりきれなかった部分となります。
この記事と上記リンクの記事は、『ハッキング・ラボのつくりかた』に沿った内容となっております。
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
migrateによる隠蔽化の前にやっておくこと
同書p270に次のように記述されている。
migrateコマンドにより、ペイロードのプロセスを隠蔽化できます。ただし、run persistenceコマンドで永続的なバックドアを作成済みの場合、すでにペイロードは隠蔽化されています。この実験は、run persistenceコマンドの実行前に行ってください
別に、migrateで隠蔽したペイロードもやられOSであるWindows7に転送するだけでいいだけかもしれないが、同じようなバックドアがあるとややこしくなると思い、すでに設けたバックドア(MetasploitFrameworkのrun persistence
でつくったやつ)を撤去する。また、手動で設置したペイロードもレジストリから撤去する。(必要ないし、起動するたびにダイアログを出してきてうっとおしいから)
詳しくは、過去記事Kali Linux2022.1 でハッキングラボをつくってみる 5 Windows7をハッキングする編4(Metasploit Frameworkを使う中編)を参照してください。
手動で設置したバックドアの自動起動を無効化
手動でのバックドアの設置は、システム権限があるセッションのmeterpreterプロンプト上で、次のように行った。
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v backdoor -d 'C:\Windows\evil.exe'
バックドアの撤去(レジストリを編集してペイロードの自動起動を無効化する)するには、次を実行する。
reg deleteval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v backdoor
run persistenceで設置したバックドアを撤去する
KaliLinux上で別に端末を立ち上げる。
cd /home/kali/.msf4/logs/persistence
ls *
ディレクトリと拡張子が.rcのファイルが確認できる。ディレクトリ名、ファイル名は「ホスト名_日付_数値列」となっている。各ファイルの内容を確認すると、
rm C://Users//IEUser//AppData//Local//Temp//XFvmZJYZSTqe.vbs
rm C://Users//IEUser//AppData//Local//Temp//MulSvr.vbs
reg deleteval -k 'HKLM\Software\Microsoft\Windows\CurrentVersion\Run' -v evOwBQvXbresAKC
記述されているコマンドを実行すると、バックドアを撤去することができる。
Windows側で「Sysinternals」の「Autoruns」を立ち上げ、バックドアとなっているvbsファイルを確認する。「XFvmZJYZSTqe.vbs」であることが確認できたので、rm C://Users//IEUser//AppData//Local//Temp//XFvmZJYZSTqe.vbs
をmeterpreterプロンプト上で実行する。
rm C://Users//IEUser//AppData//Local//Temp//XFvmZJYZSTqe.vbs
システム権限じゃなくても削除可能です
Windowsを再起動する。
"exploit/multi/handler"でリバースシェルを待ち受けても応答なし。「Autoruns」からもvbsファイルが削除されていることが確認できた。バックドアの撤去完了。
migrateによる隠蔽化
Windows7側で"evil.exe"を実行後に"exploit/multi/handler"でリバースシェルを待ち受ける。
migrateコマンドの引数に指定するプロセスは、現在の権限以下のものでないといけない。同一権限以下のプロセスを探すには、ps
コマンドの出力結果の"User"に注目する。"explorer.exe"は同一権限になることが知られているので、これを利用。
getuid
ps | grep explorer.exe
migrateコマンドの引数に"explorer.exe"のPIDを指定する。
migrate <explorer.exeのPID>
Windows7のタスクマネージャ、Metaexploitのps
コマンドの実行結果から"evil.exe"が消えた。(隠蔽成功)
同書p271~272より
UACを機能を回避するモジュールなどsessionオプションを持つモジュールに、migrateで隠蔽化されたセッションを指定すると、攻撃に失敗する。
また、migrateしたセッションを閉じてから、新しいセッションでmigrateを試みるとエラーが出る。Windowsを再起動するしかない。
「UACを機能を回避するモジュールなどsessionオプションを持つモジュールに、migrateで隠蔽化されたセッションを指定すると、攻撃に失敗する。」とあるが、やってみると接続からgetsystem
での権限昇格まで成功した。
システム権限でのセッションに隠蔽化
UACを回避→システム権限奪取→同一権限の"svchost.exe"のPIDを指定してmigrateする流れだが、管理者権限がとれていないmigrateを使ったセッションからのUAC回避ができる以上、解説は省略。
終わりに
migrateにより隠蔽化は、run persistenceよりも前のページで取り上げてほしかった。