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
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
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)
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
o log gerado vai ser o IP do xubuntu que é 192.168.1.1
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)
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
olhando no log podemos ver que vai armazenar a pagina que acessamos
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)
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
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)
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)
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
no log aquela checagem ficaria %27 no final
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
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
by kõdo no kami
- Código:
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
- Código:
sudo cat /var/log/apache2/access.log
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)
- Código:
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"
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
o log gerado vai ser o IP do xubuntu que é 192.168.1.1
- Código:
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"
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)
- Código:
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
- Código:
http://192.168.1.2/login/index.php
olhando no log podemos ver que vai armazenar a pagina que acessamos
- Código:
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)
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
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)
- Código:
"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)
- Código:
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
- Código:
http://192.168.1.2/info?id=315'
no log aquela checagem ficaria %27 no final
- Código:
GET /info.php?id=315%27
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:
sudo cat /var/log/apache2/access.log | grep "%27"
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
by kõdo no kami