Detectando invasão pelo log do apache

Entao galera existem inumeros tipos de detectores de intrusão (ids e ips), sistemas de segurança como firewall e waf, honeypots e muitos outros, com isso é possivel detectar uma tentativa de invasão durante o proprio ataque, boa parte desses sistemas de segurança são programas então é necessario esta rodando eles no servidor e em muitos casos usamos apenas webhosts que são bem limitado as vezes apenas com acesso a um cpanel, porem muitos webhost permite acesso ao log do apache e com isso seria possivel a gente detectar algumas tentativas mesmo pelo log, o log do apache no sistema linux na maior parte das vezes fica no diretorio /var/log/apache2 e la dentro por padrão tem os arquivos access.log e error.log (o apache permite customizar os logs entao pode ter um arquivo log para cada dominio virtual ou ate um arquivo log para cada evento especifico), o arquivo access.log armazena todos os acessos exibindo por padrao nesse formato

IP [DATA HORA] "CABEÇALHO"  ..  "AGENTE"

ou seja apenas com isso a gente ja pode identificar o atacante a hora e o dia do ataque, o tipo de ataque e a pagina que esta sendo atacada o navegador ou ate mesmo programa que esta sendo usado no ataque, para esse exemplo vou usar um servidor local no caso um ubuntu (que esta com o IP 192.168.1.2) e o atacante vai ser um xubuntu (192.168.1.1), acabai de limpar o log access.log entao se eu olhar ele nao vai ter nada

sudo cat /var/log/apache2/access.log

Imagem

porem quando eu acesso a pagina pelo proprio ubuntu e depois disso analiso o log teve duas requisição sendo uma a propria pagina a outra a imagem que esta na pagina (/img.jpg)

192.168.1.2 - - [07/Aug/2016:13:02:07 -0300] "GET / HTTP/1.1" 200 519 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:41.0) Gecko/20100101 Firefox/41.0"
192.168.1.2 - - [07/Aug/2016:13:02:07 -0300] "GET /img.jpg HTTP/1.1" 304 166 "http://192.168.1.2/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:41.0) Gecko/20100101 Firefox/41.0"

Imagem

se a gente perceber o IP gerado foi o do proprio servidor ja que eu acessei pelo ubuntu se a gente acessar a pagina pelo xubuntu

Imagem

o log gerado vai ser o IP do xubuntu que é 192.168.1.1

192.168.1.1 - - [07/Aug/2016:13:26:51 -0300] "GET / HTTP/1.1" 200 519 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:48.0) Gecko/20100101 Firefox/48.0"
192.168.1.1 - - [07/Aug/2016:13:26:52 -0300] "GET /img.jpg HTTP/1.1" 200 84199 "http://192.168.1.2/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:48.0) Gecko/20100101 Firefox/48.0"

Imagem

alem do IP podemos perceber no user-agent de quem conecto no servidor foi um linux e ainda usando o firefox inclusive a versao do firefox é a 48 (no caso tambem apareceu ubuntu e nao xubuntu isso por que o xubuntu é o sistema ubuntu embora com ambiente grafico xfce e nao o unity)

Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:48.0) Gecko/20100101 Firefox/48.0"

voce poderia usar isso como base para descobrir uma pessoa que esteja atacando o site e esteja mascarando o IP por um proxy ou VPN porem esteja com um navegador especifico ou uma versao antiga do mesmo, outra forma interessante é colocar um cookie especifico no navegador do atancante assim voce poderia identificar ele mesmo mudando de IP (claro que esses meios são facilmente burlados kkkk), se abrir uma pagina especifica naquele servidor tambem é armazenado pelo log o acesso naquela pagina

http://192.168.1.2/login/index.php

Imagem

olhando no log podemos ver que vai armazenar a pagina que acessamos

192.168.1.1 - - [07/Aug/2016:14:21:14 -0300] "GET /login/index.php HTTP/1.1" ...

entao como é uma pagina de login vamos tentar um ataque de força bruta, veja uma coisa pelo brute force a gente descobriu o usuario e senha admin:123456 (normalmente isso nao deveria acontecer por isso sempre recomendo senhas fortes que nao exista em nenhum wordlist, fica a dica)

Imagem

se a gente der uma olhada no log depois do brute force vamos ver que ele armazeno toda requisição naquela pagina ou seja toda tentativa de logar que o programa fez nela

Imagem

se a gente reparar no log o proprio programa se entrego no user-agent sendo que apareceu o nome do programa que eu usei para o ataque no caso o hydra (nem sempre é possivel descobrir o nome do programa ja que é possivel mudar o user-agent)

“Mozilla/5.0 (Hydra)”

se a gente reparar na quantidade de requisição em um certo tempo vamos perceber que é um ataque ja que seria dificil uma unica pessoa acessar a mesma pagina umas 300x em um unico segundo (ataques de DoS entao nem se fala aquilo dali lota igual bebado em dia de festa)

192.168.1.1 - - [07/Aug/2016:15:24:02 -0300] "GET /login/index.php
192.168.1.1 - - [07/Aug/2016:15:24:02 -0300] "GET /login/index.php
192.168.1.1 - - [07/Aug/2016:15:24:02 -0300] "GET /login/index.php
192.168.1.1 - - [07/Aug/2016:15:24:02 -0300] "GET /login/index.php
192.168.1.1 - - [07/Aug/2016:15:24:02 -0300] "GET /login/index.php
192.168.1.1 - - [07/Aug/2016:15:24:02 -0300] "GET /login/index.php
...

podemos usar o log para checar se alguem esta tentado algum ataque especifico em alguma pagina como por exemplo sqli, lfi, xss ou algum outro tipo bastando apenas conhecer o padrao, exemplo uma checagem de sqli

http://192.168.1.2/info?id=315'

Imagem

no log aquela checagem ficaria %27 no final
GET /info.php?id=315%27
Imagem

para facilitar podemos filtrar com grep e procurar um padrao especifico como por exemplo o %27 para ver se alguem esta testando vulnarabiudades no servidor ou melhor ainda criar um script ou programa com base no log bloquear pelo iptables aquele determinado IP automaticamente

CÓDIGO: SELECIONAR TODOS
sudo cat /var/log/apache2/access.log | grep "%27"

Imagem

bom galera os logs são importantes para detectar tentivas de invasão em um servidor porem eles nao se limita apenas a isso voce pode usar os logs para saber qual pagina esta sendo mais acessada ou para alguma estatistica, outra coisa importante que mesmo com armazenamento de log nada impede do invasor obter acesso ao servidor e modificar os logs no caso uma boa pratica para prevenir a modificação do log é fazer um backup dele em certo tempo e usar um usuario limitado para o apache

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s