https://github.com/macmod/miraiparser
Codificador/decodificador de bytes Mirai usando trechos seletos do código-fonte original.
https://github.com/macmod/miraiparser
Last synced: 8 months ago
JSON representation
Codificador/decodificador de bytes Mirai usando trechos seletos do código-fonte original.
- Host: GitHub
- URL: https://github.com/macmod/miraiparser
- Owner: Macmod
- Created: 2017-12-28T00:16:39.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-04T16:39:30.000Z (over 8 years ago)
- Last Synced: 2025-03-26T19:24:09.702Z (about 1 year ago)
- Language: C
- Homepage:
- Size: 1.8 MB
- Stars: 2
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mirai Encoder/Decoder
Codificador/decodificador de bytes Mirai usando trechos seletos do código-fonte original.
## Configuração
Apenas rode o `make` no diretório principal para compilar ambos os módulos:
- `a2b` (attack to binary) - recebe uma instrução de ataque e codifica em bytes;
- `b2a` (binary to attack) - recebe bytes e decodifica em uma instrução de ataque.
## Decoder
O decodificador é baseado no código em C que roda nos bots, obtendo comandos binários do Comando e Controle e realizando ataques.
Exemplo:
```bash
$ echo "000e0000001400017f0000012000" | xxd -r -p | ./b2a
udp 127.0.0.1/32 20
```
O decodificador é de uso único: ele lê todos os bytes do `stdin` e, quando a entrada fecha, produz a resposta.
Para maior facilidade, em posse de um logfile com comandos Mirai codificados, rode o utilitário `decoder` para obter um logfile legível:
```bash
$ python decoder.py logfile > logfile-decoded
```
Outro utilitário, o `mirai_logfile`, faz o parsing dos logfiles em texto pleno, como no exemplo:
```python
from mirai_logfile import parse_file
for date, cnc, cmds, targets, duration, options in parse_file('logfile-decoded'):
print date, cnc, cmds, targets, duration, options
```
## Encoder
O codificador é baseado no código em Go que roda no servidor de Comando e Controle, recebendo comandos em texto pleno do operador, traduzindo-os para binário e encaminhando para os bots.
Diferentemente do decodificador, o codificador pode receber vários comandos para codificar separados por quebra de linha, uma vez que recebe entrada em texto pleno.
Exemplo:
```bash
$ echo "udp 127.0.0.1/32 20" | ./a2b | xxd -ps
000e0000001400017f0000012000
```
É possível consultar a tabela de ataques enviando `?` para o `a2b`, da mesma forma que o operador faria.