detectando invasão pelo log do apache

Discussão em 'Dicas e tutoriais' iniciado por kodo no kami, 7 Agosto 2016.

  1. kodo no kami
    Offline

    kodo no kami Membro Conhecido

    Afiliado:
    16 Dezembro 2015
    Mensagens:
    229
    Sexo:
    Masculino
    Avaliações:
    +303 / -0
    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

    Código (Forge Crash):
    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 (Forge Crash):
    sudo cat /var/log/apache2/access.log
    [​IMG]

    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 (Forge Crash):
    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"
     
    [​IMG]

    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

    [​IMG]

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

    Código (Forge Crash):
    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"
    [​IMG]

    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 (Forge Crash):
    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 (Forge Crash):
    http://192.168.1.2/login/index.php
    [​IMG]

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

    Código (Forge Crash):
    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)

    [​IMG]

    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

    [​IMG]

    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 (Forge Crash):
    "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 (Forge Crash):
    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 (Forge Crash):
    http://192.168.1.2/info?id=315'
    [​IMG]

    no log aquela checagem ficaria %27 no final

    Código (Forge Crash):
    GET /info.php?id=315%27
    [​IMG]

    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 (Forge Crash):
    sudo cat /var/log/apache2/access.log | grep "%27"
    [​IMG]

    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
     
    • Gostei Gostei x 2
  2. armelin1
    Offline

    armelin1 Moderador Sênior do Fórum Equipe GameMods Moderador do Fórum Moderador do Aventura Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    5 Maio 2014
    Mensagens:
    1,876
    Sexo:
    Masculino
    Avaliações:
    +641 / -0
    Apelido no Minecraft:
    armelin1
    Sempre da pra mudar o usar-agent, e quem olha log do apache?
     
    • Gostei Gostei x 1
  3. kodo no kami
    Offline

    kodo no kami Membro Conhecido

    Afiliado:
    16 Dezembro 2015
    Mensagens:
    229
    Sexo:
    Masculino
    Avaliações:
    +303 / -0
    no caso mano o user-agent é enviado junto com header do pacote que faz a requisição e ele pode ser facilmente modificado, o apache armazena esse user-agent que vem no header do pacote entao se for modificado pelo cliente (navegador / programa) o que o apache vai armazenar vai ser esse modificado, exemplo usando o netcat para enviar uma uma pagina assim que recebe a requisição do navegador

    Código (Forge Crash):
    type kodo.html | ncat -l -p 10315
    [​IMG]

    olhando o terminal o netcat recebeu o user "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36" indicando o naveagador chrome e o sistema windows porem pela extensão modheader é possivel mudar o user-agent ou seja mesmo usando windows e o chrome o servidor final me identifico como linux e firefox

    [​IMG]
     
  4. MrSpace
    Offline

    MrSpace Membro Conhecido VIP Industrial

    Afiliado:
    15 Novembro 2013
    Mensagens:
    636
    Sexo:
    Feminino
    Avaliações:
    +310 / -1
    Apelido no Minecraft:
    TheMrSpace
    dependendo do ataque ele não gera log. e se gera o mesmo pode ser apagado de dentro do servidor (pode garar um novo log ao se desconectar)...
    Mas em alguns casos possível ate desabilitar o registro do log, ja vi isso em um servidor que entrei .
    --- Post duplo mesclado, 7 Agosto 2016, Data da postagem original 7 Agosto 2016 ---
    Edit* Topico muito organizado, Parabéns, mas coloque as imagens em Spoilers '-'
     
    • Concordo Concordo x 1
  5. kodo no kami
    Offline

    kodo no kami Membro Conhecido

    Afiliado:
    16 Dezembro 2015
    Mensagens:
    229
    Sexo:
    Masculino
    Avaliações:
    +303 / -0
    verdade mano no caso do log do apache é apenas o de acesso entao quando alguem acessa uma pagina vai gerar o log, no caso de falhas como por exemplo o xsrf que é mais passivo onde posta um link para vitima clicar o log da requisição seria armazenado para a vitima e nao a do invasor nesse caso olhando o log nao detectaria o ataque ja que nao gera um padrao tao visivel ^^
     
  6. armelin1
    Offline

    armelin1 Moderador Sênior do Fórum Equipe GameMods Moderador do Fórum Moderador do Aventura Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    5 Maio 2014
    Mensagens:
    1,876
    Sexo:
    Masculino
    Avaliações:
    +641 / -0
    Apelido no Minecraft:
    armelin1
    A maioria dos ataques é direto no ip, não em website.
     
  7. kodo no kami
    Offline

    kodo no kami Membro Conhecido

    Afiliado:
    16 Dezembro 2015
    Mensagens:
    229
    Sexo:
    Masculino
    Avaliações:
    +303 / -0
    entao mano no caso a invasão em si na maior parte das vezes é na aplicação o IP é so um protocolo que serve para os hosts/routers saber onde vai enviar ou repassar o pacote na rede, quando o pacote chega na maquina certa quem cuida para que o pacote vá para o serviço correto é o protocolo de transporte tcp/udp que tem as portas, no caso dos websites ele funciona tambem na camada de aplicação sobre o protocolo http em um servidor web o mesmo vale para trojan/rat no caso tanto o cliente quanto o servidor se comunica pela camada de aplicação e depende das camadas inferiores encapsulando para que a comunicação seja estabelecida com o serviço correto e com a maquina correta, exemplo

    [​IMG]

    no caso é mais comum ataques a websites que usuarios finais isso por que o IP é estatico ou tem o uso de DNS para resolver os dominios entao é mais facil o acesso do que o usuario final que as vezes nao tem um serviço rodando ou esta em uma rede interna sem uso de nat deixando inacessivel, tambem existem mais vulnerabilidades em websites e cms tanto que se olhar no google a cada 10 site 1 tem algum tipo de falha ou algum bug e se der uma olhada no zone-h vai ver que pelo menos 30 sites por dia é vitima de deface ( http://zone-h.org/archive?zh=1 ), creio que seja mais simples ir no google jogar uma dork especifica achar um site vulneravel a sqli e depois passar um havij da vida do que configurar um no-ip abrir porta no roteador e jogar engenharia social em uma pessoa para invadir no caso é mais simples ataque a sites que a usuarios finais
     
  8. MrSpace
    Offline

    MrSpace Membro Conhecido VIP Industrial

    Afiliado:
    15 Novembro 2013
    Mensagens:
    636
    Sexo:
    Feminino
    Avaliações:
    +310 / -1
    Apelido no Minecraft:
    TheMrSpace
    se o invasor usar um shell c99 ou similar ele tem total acesso aos arquivos do site, Podendo apagar qualquer prova de que um dia ele esteve la. Apache tem muitas falhas de segurança tenho ate medo
     
    • Concordo Concordo x 1
  9. armelin1
    Offline

    armelin1 Moderador Sênior do Fórum Equipe GameMods Moderador do Fórum Moderador do Aventura Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    5 Maio 2014
    Mensagens:
    1,876
    Sexo:
    Masculino
    Avaliações:
    +641 / -0
    Apelido no Minecraft:
    armelin1
    Tudo tem falhas assim, só que poucos conhecem (acho que COBOL é uma das poucas coisa que escapam disso).
     
    • Informativo Informativo x 1
  10. kodo no kami
    Offline

    kodo no kami Membro Conhecido

    Afiliado:
    16 Dezembro 2015
    Mensagens:
    229
    Sexo:
    Masculino
    Avaliações:
    +303 / -0
    acho com uma c99 no server os logs seria o menor dos problemas kkk
     

Compartilhe esta Página