dploot 2.7.0__tar.gz → 2.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dploot-2.7.0 → dploot-2.7.2}/PKG-INFO +11 -7
- {dploot-2.7.0 → dploot-2.7.2}/README.md +10 -6
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/masterkeys.py +3 -1
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/mobaxterm.py +5 -5
- {dploot-2.7.0 → dploot-2.7.2}/pyproject.toml +1 -1
- {dploot-2.7.0 → dploot-2.7.2}/LICENSE +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/__init__.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/__init__.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/backupkey.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/browser.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/certificates.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/credentials.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/machinecertificates.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/machinecredentials.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/machinemasterkeys.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/machinetriage.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/machinevaults.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/masterkeys.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/mobaxterm.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/rdg.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/sccm.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/triage.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/vaults.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/action/wifi.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/entry.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/__init__.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/crypto.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/dpapi.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/smb.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/target.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/utils.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/lib/wmi.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/__init__.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/backupkey.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/browser.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/certificates.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/credentials.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/rdg.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/sccm.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/vaults.py +0 -0
- {dploot-2.7.0 → dploot-2.7.2}/dploot/triage/wifi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dploot
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.2
|
|
4
4
|
Summary: DPAPI looting remotely in Python
|
|
5
5
|
Home-page: https://github.com/zblurx/dploot
|
|
6
6
|
License: MIT
|
|
@@ -66,18 +66,22 @@ If you don't know what is DPAPI, [check out this post](https://posts.specterops.
|
|
|
66
66
|
|
|
67
67
|
## Installation
|
|
68
68
|
|
|
69
|
-
You can install dploot directly from PyPI:
|
|
69
|
+
You can install dploot directly from PyPI with [pipx](https://github.com/pypa/pipx):
|
|
70
70
|
|
|
71
71
|
```text
|
|
72
|
-
|
|
72
|
+
pipx install git+https://github.com/zblurx/dploot.git
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
OR
|
|
76
76
|
|
|
77
77
|
```text
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
pipx install dploot
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
On [Kali Linux](https://www.kali.org/), you can install dploot from the repositories:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
sudo apt install python3-dploot
|
|
81
85
|
```
|
|
82
86
|
|
|
83
87
|
## Usage
|
|
@@ -749,7 +753,7 @@ The **mobaxterm** command will extract MobaXterm secrets and masterpassword key
|
|
|
749
753
|
With `pvk`:
|
|
750
754
|
|
|
751
755
|
```text
|
|
752
|
-
dploot
|
|
756
|
+
dploot mobaxterm -d waza.local -u jsmith -p 'Password#123' 192.168.56.14 -pvk key.pvk
|
|
753
757
|
[*] Connected to 192.168.56.14 as waza.local\jsmith (admin)
|
|
754
758
|
|
|
755
759
|
[*] Triage ALL USERS masterkeys
|
|
@@ -40,18 +40,22 @@ If you don't know what is DPAPI, [check out this post](https://posts.specterops.
|
|
|
40
40
|
|
|
41
41
|
## Installation
|
|
42
42
|
|
|
43
|
-
You can install dploot directly from PyPI:
|
|
43
|
+
You can install dploot directly from PyPI with [pipx](https://github.com/pypa/pipx):
|
|
44
44
|
|
|
45
45
|
```text
|
|
46
|
-
|
|
46
|
+
pipx install git+https://github.com/zblurx/dploot.git
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
OR
|
|
50
50
|
|
|
51
51
|
```text
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
pipx install dploot
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
On [Kali Linux](https://www.kali.org/), you can install dploot from the repositories:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
sudo apt install python3-dploot
|
|
55
59
|
```
|
|
56
60
|
|
|
57
61
|
## Usage
|
|
@@ -723,7 +727,7 @@ The **mobaxterm** command will extract MobaXterm secrets and masterpassword key
|
|
|
723
727
|
With `pvk`:
|
|
724
728
|
|
|
725
729
|
```text
|
|
726
|
-
dploot
|
|
730
|
+
dploot mobaxterm -d waza.local -u jsmith -p 'Password#123' 192.168.56.14 -pvk key.pvk
|
|
727
731
|
[*] Connected to 192.168.56.14 as waza.local\jsmith (admin)
|
|
728
732
|
|
|
729
733
|
[*] Triage ALL USERS masterkeys
|
|
@@ -41,7 +41,7 @@ class MasterkeysTriage:
|
|
|
41
41
|
system_masterkeys_generic_path = 'Windows\\System32\\Microsoft\\Protect'
|
|
42
42
|
share = 'C$'
|
|
43
43
|
|
|
44
|
-
def __init__(self, target: Target, conn: DPLootSMBConnection, pvkbytes: bytes = None, passwords: Dict[str,str] = None, nthashes: Dict[str,str] = None, dpapiSystem: Dict[str,str] =
|
|
44
|
+
def __init__(self, target: Target, conn: DPLootSMBConnection, pvkbytes: bytes = None, passwords: Dict[str,str] = None, nthashes: Dict[str,str] = None, dpapiSystem: Dict[str,str] = None) -> None:
|
|
45
45
|
self.target = target
|
|
46
46
|
self.conn = conn
|
|
47
47
|
self.pvkbytes = pvkbytes
|
|
@@ -51,6 +51,8 @@ class MasterkeysTriage:
|
|
|
51
51
|
self._users = None
|
|
52
52
|
self.looted_files = dict()
|
|
53
53
|
self.dpapiSystem = dpapiSystem
|
|
54
|
+
if self.dpapiSystem is None:
|
|
55
|
+
self.dpapiSystem = {}
|
|
54
56
|
# should be {"MachineKey":"key","Userkey":"key"}
|
|
55
57
|
|
|
56
58
|
def triage_system_masterkeys(self) -> List[Masterkey]:
|
|
@@ -105,7 +105,7 @@ class MobaXtermTriage:
|
|
|
105
105
|
self._users = None
|
|
106
106
|
self.masterkeys = masterkeys
|
|
107
107
|
|
|
108
|
-
def triage_mobaxterm(self) -> Tuple[List[MobaXtermMasterPassword], List[MobaXtermCredential | MobaXtermPassword]]:
|
|
108
|
+
def triage_mobaxterm(self) -> Tuple[List[MobaXtermMasterPassword], List["MobaXtermCredential | MobaXtermPassword"]]:
|
|
109
109
|
logging.getLogger("impacket").disabled = True
|
|
110
110
|
mobaxterm_credentials = []
|
|
111
111
|
mobaxterm_masterpassword_key = []
|
|
@@ -122,7 +122,7 @@ class MobaXtermTriage:
|
|
|
122
122
|
logging.debug(str(e))
|
|
123
123
|
return mobaxterm_masterpassword_key, mobaxterm_credentials
|
|
124
124
|
|
|
125
|
-
def triage_mobaxterm_for_user(self, user: str, sid: str = None) -> Tuple[MobaXtermMasterPassword, List[MobaXtermCredential | MobaXtermPassword]]:
|
|
125
|
+
def triage_mobaxterm_for_user(self, user: str, sid: str = None) -> Tuple[MobaXtermMasterPassword, List["MobaXtermCredential | MobaXtermPassword"]]:
|
|
126
126
|
mobaxterm_masterpassword = None
|
|
127
127
|
mobaxterm_credentials = []
|
|
128
128
|
try:
|
|
@@ -153,7 +153,7 @@ class MobaXtermTriage:
|
|
|
153
153
|
|
|
154
154
|
return mobaxterm_masterpassword, mobaxterm_credentials
|
|
155
155
|
|
|
156
|
-
def extract_mobaxtermkeys_for_user_from_ntuser_dat(self, ntuser_dat_filename: str, user: str) -> Tuple[MobaXtermMasterPassword, List[MobaXtermCredential | MobaXtermPassword]]:
|
|
156
|
+
def extract_mobaxtermkeys_for_user_from_ntuser_dat(self, ntuser_dat_filename: str, user: str) -> Tuple[MobaXtermMasterPassword, List["MobaXtermCredential | MobaXtermPassword"]]:
|
|
157
157
|
reg = winregistry.Registry(ntuser_dat_filename, isRemote=False)
|
|
158
158
|
parent_key = reg.findKey(self.mobaxterm_registry_key_path)
|
|
159
159
|
if parent_key is None:
|
|
@@ -239,10 +239,10 @@ class MobaXtermTriage:
|
|
|
239
239
|
mobaxterm_masterpassword.entropy = entropy
|
|
240
240
|
mobaxterm_masterpassword.decrypt_masterpassword_raw_value(masterkeys=self.masterkeys)
|
|
241
241
|
|
|
242
|
-
def decrypt_mobaxterm_password(self, mobaxterm_password: MobaXtermCredential|MobaXtermPassword, mobaxterm_masterpassword: MobaXtermMasterPassword) -> None:
|
|
242
|
+
def decrypt_mobaxterm_password(self, mobaxterm_password: "MobaXtermCredential|MobaXtermPassword", mobaxterm_masterpassword: MobaXtermMasterPassword) -> None:
|
|
243
243
|
mobaxterm_password.decrypt(masterpassword_key=mobaxterm_masterpassword.masterpassword_decrypted)
|
|
244
244
|
|
|
245
|
-
def extract_mobaxtermkeys_for_user_from_remote_registry(self, user: str, sid: str) -> Tuple[MobaXtermMasterPassword, List[MobaXtermCredential | MobaXtermPassword]]:
|
|
245
|
+
def extract_mobaxtermkeys_for_user_from_remote_registry(self, user: str, sid: str) -> Tuple[MobaXtermMasterPassword, List["MobaXtermCredential | MobaXtermPassword"]]:
|
|
246
246
|
self.conn.enable_remoteops()
|
|
247
247
|
|
|
248
248
|
entropy = None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|