不要在虛擬機中嘗試這樣做。從理論上講是可能的,但是這可能行不通,我們不建議用戶嘗試這樣做。
本文檔說明了如何安裝NVIDIA GPU驅動程序和CUDA支持,從而可以與流行的滲透測試工具集成。
本指南也適用於獨立顯卡(台式機用戶),而不是Optimus(筆記本電腦用戶)(譯者注:Optimus是NVIDIA針對筆記本電腦開發的顯示切換技術。)。。我們沒有足夠的硬件來編寫指南。所以我們正在尋找社區的貢獻來幫助我們。如果你有硬件,有專業的知識,請編輯本指南
先決條件
首先,您需要確保您的卡支持CUDA。
推薦使用CUDA計算能力 > 5.0的GPU,但數量較少的GPU仍然可以使用。
之后,請確保在網絡存儲庫中啟用了contrib
&non-free
組件,並且系統已完全升級:
kali@kali:~$ sudo apt update
kali@kali:~$
kali@kali:~$ sudo apt -y full-upgrade -y
kali@kali:~$
kali@kali:~$ [ -f /var/run/reboot-required ] && sudo reboot -f
kali@kali:~$
讓我們確定確切安裝的GPU,並檢查其使用的內核模塊:
kali@kali:~$ lspci | grep -i vga 07:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1) kali@kali:~$ kali@kali:~$ lspci -s 07:00.0 -v 07:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1) (prog-if 00 [VGA controller]) Subsystem: Gigabyte Technology Co., Ltd GP106 [GeForce GTX 1060 6GB] Flags: bus master, fast devsel, latency 0, IRQ 100 Memory at f6000000 (32-bit, non-prefetchable) [size=16M] Memory at e0000000 (64-bit, prefetchable) [size=256M] Memory at f0000000 (64-bit, prefetchable) [size=32M] I/O ports at e000 [size=128] Expansion ROM at 000c0000 [disabled] [size=128K] Capabilities: <access denied> Kernel driver in use: nouveau Kernel modules: nouveau kali@kali:~$
注意Kernel driver in use
& Kernel modules是如何使用nouveau
?這是nVidia的開源驅動程序。本指南介紹了如何從NVIDIA安裝封源驅動。
有一個叫`nvidia-detect`的包會檢測不到驅動,因為Kali是一個滾動發行版,需要一個穩定的版本。
安裝
一旦系統進行升級后重啟,我們將繼續安裝驅動程序和CUDA工具包 (允許工具利用GPU)。
在安裝驅動程序期間,系統創建了新的內核模塊,因此需要重新引導:
kali@kali:~$ sudo apt install -y nvidia-driver nvidia-cuda-toolkit ┌─────────────────────────────────┤ Configuring xserver-xorg-video-nvidia ├─────────────────────────────────┐ │ │ │ Conflicting nouveau kernel module loaded │ │ │ │ The free nouveau kernel module is currently loaded and conflicts with the non-free nvidia kernel module. │ │ │ │ The easiest way to fix this is to reboot the machine once the installation has finished. │ │ │ │ <Ok> │ │ │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────┘ kali@kali:~$ kali@kali:~$ sudo reboot -f kali@kali:~$
DPI / PPI
在Kali啟動備份后,某些事情可能看起來與預期的有所不同。
驗證驅動程序安裝
現在我們的系統已經可以使用了,我們需要驗證驅動程序是否已正確加載。我們可以通過運行nvidia-smi工具來快速驗證這一點。
kali@kali:~$ nvidia-smi Tue Jan 28 11:37:47 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 430.64 Driver Version: 430.64 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 106... Off | 00000000:07:00.0 On | N/A | | 0% 50C P8 7W / 120W | 116MiB / 6075MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 807 G /usr/lib/xorg/Xorg 112MiB | | 0 979 G xfwm4 2MiB | +-----------------------------------------------------------------------------+ kali@kali:~$ kali@kali:~$ lspci | grep -i vga 07:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1) kali@kali:~$ kali@kali:~$ lspci -s 07:00.0 -v ...SNIP... Kernel driver in use: nvidia Kernel modules: nvidia kali@kali:~$
您可以看到我們的硬件已被檢測到,我們正在使用nvidia而不是nouveau驅動器。
哈希貓
隨着輸出正確顯示我們的驅動程序和GPU,我們現在可以進入基准測試(使用CUDA工具包)。在我們多太多工作之前,讓我們仔細檢查一下以確保hashcat和CUDA能夠協同工作。
kali@kali:~$ sudo apt install -y hashcat kali@kali:~$ kali@kali:~$ hashcat -I hashcat (v6.0.0) starting... CUDA Info: ========== CUDA.Version.: 10.2 Backend Device ID #1 (Alias: #2) Name...........: GeForce GTX 1060 6GB Processor(s)...: 10 Clock..........: 1771 Memory.Total...: 6075 MB Memory.Free....: 5908 MB OpenCL Info: ============ OpenCL Platform ID #1 Vendor..: NVIDIA Corporation Name....: NVIDIA CUDA Version.: OpenCL 1.2 CUDA 10.2.185 Backend Device ID #2 (Alias: #1) Type...........: GPU Vendor.ID......: 32 Vendor.........: NVIDIA Corporation Name...........: GeForce GTX 1060 6GB Version........: OpenCL 1.2 CUDA Processor(s)...: 10 Clock..........: 1771 Memory.Total...: 6075 MB (limited to 1518 MB allocatable in one block) Memory.Free....: 5888 MB OpenCL.Version.: OpenCL C 1.2 Driver.Version.: 440.100 kali@kali:~$
看起來一切正常,讓我們繼續運行hashcat的內置基准測試。
基准測試
kali@kali:~$ hashcat -b | uniq hashcat (v6.0.0) starting in benchmark mode... Benchmarking uses hand-optimized kernel code by default. You can use it in your cracking session by setting the -O option. Note: Using optimized kernel code limits the maximum supported password length. To disable the optimized kernel code in benchmark mode, use the -w option. * Device #1: WARNING! Kernel exec timeout is not disabled. This may cause "CL_OUT_OF_RESOURCES" or related errors. To disable the timeout, see: https://hashcat.net/q/timeoutpatch * Device #2: WARNING! Kernel exec timeout is not disabled. This may cause "CL_OUT_OF_RESOURCES" or related errors. To disable the timeout, see: https://hashcat.net/q/timeoutpatch CUDA API (CUDA 10.2) ==================== * Device #1: GeForce GTX 1060 6GB, 5908/6075 MB, 10MCU OpenCL API (OpenCL 1.2 CUDA 10.2.185) - Platform #1 [NVIDIA Corporation] ======================================================================== * Device #2: GeForce GTX 1060 6GB, skipped Benchmark relevant options: =========================== * --optimized-kernel-enable Hashmode: 0 - MD5 Speed.#1.........: 14350.4 MH/s (46.67ms) @ Accel:64 Loops:1024 Thr:1024 Vec:8 Hashmode: 100 - SHA1 Speed.#1.........: 4800.5 MH/s (69.83ms) @ Accel:32 Loops:1024 Thr:1024 Vec:1 ...SNIP... Started: Tue Jul 21 17:12:39 2020 Stopped: Tue Jul 21 17:16:10 2020 kali@kali:~$
有許多配置可提高破解速度,本指南中未提及。但是,我們鼓勵您查看針對特定情況的hashcat文檔。
故障排除
如果安裝不按計划進行,我們將安裝clinfo以獲得詳細的故障排除信息。
kali@kali:~$ sudo apt install -y clinfo kali@kali:~$ kali@kali:~$ clinfo Number of platforms 1 Platform Name NVIDIA CUDA Platform Vendor NVIDIA Corporation Platform Version OpenCL 1.2 CUDA 10.1.120 Platform Profile FULL_PROFILE Platform Extensions cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_copy_opts cl_nv_create_buffer Platform Extensions function suffix NV Platform Name NVIDIA CUDA ...SNIP... kali@kali:~$ kali@kali:~$ clinfo | wc -l 116 kali@kali:~$
OpenCL加載器
可能有必要檢查可能與我們的設置沖突的其他軟件包。我們首先檢查一下我們已經安裝了什么OpenCL Loader。NVIDIA OpenCL Loader和通用OpenCL Loader均適用於我們的系統。
kali@kali:~$ dpkg -l | grep -i icd ii nvidia-egl-icd:amd64 430.64-5 amd64 NVIDIA EGL installable client driver (ICD) ii nvidia-opencl-icd:amd64 430.64-5 amd64 NVIDIA OpenCL installable client driver (ICD) ii nvidia-vulkan-icd:amd64 430.64-5 amd64 NVIDIA Vulkan installable client driver (ICD) ii ocl-icd-libopencl1:amd64 2.2.12-2 amd64 Generic OpenCL ICD Loader ii ocl-icd-opencl-dev:amd64 2.2.12-2 amd64 OpenCL development files kali@kali:~$
如果已安裝mesa-opencl-icd,則應將其刪除:
kali@kali:~$ dpkg -l | grep -i mesa-opencl-icd ii mesa-opencl-icd:amd64 19.3.2-1 amd64 free implementation of the OpenCL API -- ICD runtime kali@kali:~$ kali@kali:~$ sudo apt remove mesa-opencl-icd kali@kali:~$
由於我們確定已經安裝了兼容的ICD加載器,因此可以輕松確定當前正在使用的加載器。
kali@kali:~$ clinfo | grep -i "icd loader" ICD loader properties ICD loader Name OpenCL ICD Loader ICD loader Vendor OCL Icd free software ICD loader Version 2.2.12 ICD loader Profile OpenCL 2.2 kali@kali:~$
如預期的那樣,我們的設置使用的是先前安裝的開源加載程序。現在,讓我們獲取有關系統的一些詳細信息。
查詢GPU信息
我們將再次使用nvidia-smi,但輸出更為詳細。
kali@kali:~$ nvidia-smi -i 0 -q ==============NVSMI LOG============== Timestamp : Fri Feb 14 13:26:21 2020 Driver Version : 430.64 CUDA Version : 10.1 Attached GPUs : 1 GPU 00000000:07:00.0 Product Name : GeForce GTX 1060 6GB Product Brand : GeForce Display Mode : Enabled Display Active : Enabled Persistence Mode : Disabled Accounting Mode : Disabled Accounting Mode Buffer Size : 4000 ...SNIP... Temperature GPU Current Temp : 49 C GPU Shutdown Temp : 102 C GPU Slowdown Temp : 99 C ...SNIP... Clocks Graphics : 139 MHz SM : 139 MHz Memory : 405 MHz Video : 544 MHz ...SNIP... Processes Process ID : 815 Type : G Name : /usr/lib/xorg/Xorg Used GPU Memory : 132 MiB Process ID : 994 Type : G Name : xfwm4 Used GPU Memory : 2 MiB kali@kali:~$
看來我們的GPU已被正確識別,因此讓我們使用glxinfo來確定是否啟用了3D渲染。
kali@kali:~$ sudo apt install -y mesa-utils kali@kali:~$ kali@kali:~$ glxinfo | grep -i "direct rendering" direct rendering: Yes kali@kali:~$
這些工具的組合應有助於故障排除過程。如果仍然遇到問題,建議您搜索類似的設置以及可能影響您特定系統的任何細微差別。