O que é a vulnerabilidade File Inclusion?



File Inclusion é uma das vulnerabilidades mais comuns em aplicações web e ocorre quando a inclusão de ficheiros externos à aplicação principal é feita sem validação.
Sites em PHP que fazem uso da função include() de um modo inseguro, tornam-se vulneráveis a estes ataques.

O que a função include() faz?
Um desenvolvedor pode incluir conteúdo de um arquivo PHP dentro de outro arquivo PHP usando a função include(). Por exemplo:
Vamos supor que tenhamos dois arquivos PHP:

file1.php

<?php
echo “Modelo php file 1…”;
?>
file2.php
<?php
echo “Modelo php file 2…”;
?>
Se o desenvolvedor deseja o conteúdo do arquivo file2.php em file1.php, simplesmente pode utilizar o seguinte comando:

<?php
include(‘file2.php’);
echo “Modelo php file 1…”;
?>
Isto pode ser um problema, pois além de ser possível incluir o conteúdo de um arquivo dentro de outro, também é possível que um desenvolvedor inclua um arquivo fazendo input como usuário. E quando o input do usuário não é validado corretamente, um atacante pode incluir arquivos maliciosos no servidor.

A File include é uma vulnerabilidade que pode ser dividida em duas partes:
Local File Inclusion (LFI) e Remote File Inclusion (RFI), este último, aliás, do qual já falamos em artigos anteriores aqui no Site Blindado Labs.

Como o Local File Inclusion é utilizado?
Os desenvolvedores costumam utilizar a função include de duas maneiras: a primeira delas é obtendo o arquivo como entrada de usuário. A segunda, é obtendo o arquivo como entrada do usuário, porém anexando uma extensão.
O trecho abaixo mostra o exemplo de um código vulnerável para lfi.php

<?php
echo ‘<br/>’;
echo ‘Ola’;
echo ‘<br/>’;
echo ‘<br/>’;
echo ‘<html>
<body>
<a href=”index.php?page=news.php”><button>Mostrar News</button></a>
</body>
</html>
‘;
echo ‘<br/>’;
echo ‘<br/>’;
include($_GET[‘page’]);
echo ‘<br/>’;
?>

No código apresentado, é possível notar que a aplicação está recebendo um arquivo do cliente utilizando uma requisição no método GET e incluindo-no diretamente na página atual. Quando usuário clica em “Mostrar News”, na página, é exibido o conteúdo do arquivo news.php.
Além disso, uma pessoa mal-intencionada consegue alterar os diretórios do site na URL, tendo acesso a arquivos do servidor. Veja um exemplo:

meusite.com.br/lfi/index.php?page=news.php

Após a alteração:

meusite.com.br/lfi/index.php?page =/etc/passwd

Essa vulnerabilidade é conhecida como Path Traversal e ocorre porque, uma vez que o caminho é inserido dentro da URL e dado ao código PHP, a codificação do arquivo lfi.php ficará vulnerável e exposta, como é mostrado abaixo:

<?php
echo ‘<br/>’;
echo ‘Ola’;
echo ‘<br/>’;
echo ‘<br/>’;
echo ‘<html>
<body>
<a href=”index.php?page=news.php”><button>Mostrar News</button></a>
</body>
</html>
‘;
echo ‘<br/>’;
echo ‘<br/>’;
include(“/etc/passwd”);
echo ‘<br/>’;
?>

Por consequência, o conteúdo do arquivo será carregado.
O LFI se torna perigoso pois um atacante poderia percorrer os diretórios do servidor e conseguir obter acesso a dados sensíveis.
Uma pessoa mal-intencionada, que tenha identificado que a aplicação está lendo os arquivos de usuários, poderia simplesmente fazer um input de um arquivo malicioso.

Quais as recomendações para evitar ataques LFI e RFI?
Para prevenir estes dois tipos de ataque, é necessário validar as entradas dos usuários. O método de prevenção será o mesmo para as duas vulnerabilidades e é possível seguir os passos que já explicamos no post dedicado ao RFI (veja aqui).
Além disso, o valor de “allow_url_include” deverá estar em “on” para que o LFI funcione. Sendo assim, para prevenir de ataques LFI atribui o valor “off” para o “allow_url_include”.
O mesmo pode ser feito para ataques RFI, mas o valor a ser “setado” como “off” terá que ser o “allow_url_fopen”.

Referências:

Analisando o Xavier Malware – infecção de apps Android



No ultimo mês, pesquisadores vêm pedindo aos usuários do sistema operação Android que não façam downloads de aplicativos de lojas de terceiros porque muitos deles contêm malware. Agora, as coisas mudaram à medida que cibercriminosos estão ignorando a implementação de segurança do Google na Play Store e enviando aplicativos infectados com malware.

Os pesquisadores de segurança de TI da TrendMicro descobriram que mais de 800 aplicativos Android na Google Play Store contêm um malware chamado “Xavier” que roubam silenciosamente dados pessoais e financeiros dos usuários. Os aplicativos infectados pertencem a categorias como manipuladores de fotos, utilitários, antivírus, aceleradores de velocidade, conversor de vídeo, gravador de chamadas entre vários baixados milhões de vezes por usuários de todo o mundo.

O maior número de tentativas de download veio de países do Sudeste Asiático, como Vietnã, Filipinas e Indonésia, com menos downloads dos Estados Unidos e da Europa.


História e infecção de Xavier

Xavier não é um malware novo, na verdade, ele pertence à família AdDown que foi descoberta há dois anos com capacidades de execução remota de código. Sua primeira versão apareceu em 2015, enquanto o próprio Xavier foi detectado em setembro de 2016.
Além de evitar a detecção, a Xavier vem com recursos, incluindo a coleta e vazamento de dados do usuário, além da instalação de outros APKs no caso de o dispositivo infectado estar com acesso root. O malware Xavier faz isso tudo por não ser possível ser detectado facilmente.

Evolução do Malware Xavier (crédito pela imagem: Trend Micro)

Análise Técnica do malware Xavier

A variante conhecida como Xavier surgiu em algum momento em setembro de 2016 com um código mais simplificado. A primeira versão do Xavier removeu a instalação do APK e a verificação de raiz, mas adicionou criptografia de dados com o algoritmo TEA.


Algoritmo (crédito pela imagem: Trend Micro)

Logo depois, adicionou um mecanismo para escapar da detecção dinâmica como mencionado anteriormente.
Xavier tem a seguinte estrutura:

Estrutura do Malware Xavier (crédito pela imagem: Trend Micro)

O que os usuários do Android devem fazer?

Enquanto a Google está removendo os aplicativos infectados, isso não significa que o malware desaparecerá completamente da Play Store ou que não irá voltar. O Xavier é malware desenvolvido para assumir o controle do dispositivo e dos dados dos usuários, portanto, os usuários são aconselhados a não baixar aplicativos desnecessariamente.

Os usuários do Android também são aconselhados a usar softwares de segurança realmente aprovado e sempre verificar seus dispositivos. Outra coisa notável sobre o Android é que é um dos sistemas operacionais de smartphones mais utilizados do mundo.
Outro fato interessante é que pesquisadores descobriram uma cópia do WannaCry, o (WannaLocker) da criado para dispositivos Android, enquanto o malware Judy infectou aplicativos que foram baixados 36 milhões de vezes.

Além disso, recentemente pesquisadores descobriram o malware do Dvmap com capacidade de injetar código em aplicativos para Android.

Lembre-se, a maneira mais fácil de evitar um malware como Xavier é não baixar e instalar aplicativos de fontes desconhecidas, mesmo que provenham de lojas de aplicativos legítimos, como o Google Play.

Além disso, leia os comentários de outros usuários que baixaram o aplicativo. Mantenha-se atualizado e corrija possíveis problemas do seu celular para manter o malware que almeja vulnerabilidades longe do seu dispositivo.

Referencias:


Explicando o Ransomware WannaCry/Wcry


O que é Ransomware WannaCry/Wcry?


No último dia 12 de maio de 2017, um ransomware, chamado Wannacry/Wcry ou, como a Microsoft nomeou, Win32/WannaCrypt, se espalhou e infectou máquinas de grandes empresas privadas e instituições públicas em mais de 70 países.


Esse ransomware - que suporta 28 idiomas e criptografa 179 tipos diferentes de arquivos - obtém as informações das vítimas, as criptografa e exige o pagamento de um resgate para que as pessoas possam recuperá-lo. O valor deve ser pago na “criptomoeda” bitcoin (saiba o que é aqui)  e gira em torno de US$ 300,00a US$ 600,00. Apenas mediante o pagamento é que, em teoria, as vítimas poderão descriptografar o conteúdo de suas máquinas.


Quando surgiu o Ramsomware WannaCry?


Em agosto de 2016, um grupo hacker realizou o vazamento de arquivos contendo ferramentas ofensivas pertencentes à NSA (National Security Agency). Dentre estes arquivos e ferramentas vazadas, estava um exploit remoto que explorava uma falha do SMB (Server Message Block) no Windows, chamada de EternalBlue.


Esse princípio foi o que deu origem ao ransomware Wannacry. Ele utiliza especificamente a vulnerabilidade presente no SMBv1 do sistema operacional Windows.


A vulnerabilidade chegou a receber um patch de correção fornecido pela própria Microsoft (MS17-010) em março de 2017.


Como o WannaCry se espalha?


Após infectar a vítima, o ransomware procura por outras máquinas em uma rede local ou na Internet, e usa o protocolo SMB para infectá-las.  


Para continuar propagando seus códigos maliciosos, ele usa um gerador de números aleatórios para criar endereços IP’s randômicos, testá-los e infectá-los.


O Wannacry/Wcry se espalhou rapidamente pelo mundo, pois o mesmo comporta-se como um “worm”, infectando novas vítimas automaticamente, sem a necessidade de interação de um usuário final. Após a infecção, procura computadores vulneráveis na rede e utiliza um exploit para infectar sua nova vítima.


Abaixo é possível verificar o modus operandi e fluxo de execução do WannaCry:



O ransomware afeta os seguintes sistemas operacionais Windows:
  • Microsoft Windows Vista SP2
  • Windows Server 2008 SP2 e R2 SP1
  • Windows 7
  • Windows 8.1
  • Windows RT 8.1
  • Windows Server 2012 e R2
  • Windows 10
  • Windows Server 2016
O Wcry criptografa os seguintes arquivos na máquina infectada:
.jpeg , .rb , .602 , .jpg , .rtf , .doc , .js , .sch , .3dm , .jsp , .sh , .3ds , .key , .sldm , .3g2 , .lay , .sldm , .3gp , .lay6 , .sldx , .7z , .ldf , .slk , .accdb , .m3u , .sln , .aes , .m4u , .snt , .ai , .max , .sql , .ARC , .mdb , .sqlite3 , .asc , .mdf , .sqlitedb , .asf , .mid , .stc , .asm , .mkv , .std , .asp , .mml , .sti , .avi , .mov , .stw , .backup , .mp3 , .suo , .bak , .mp4 , .svg , .bat , .mpeg , .swf , .bmp , .mpg , .sxc , .brd , .msg , .sxd , .bz2 , .myd , .sxi , .c , .myi , .sxm , .cgm , .nef , .sxw , .class , .odb , .tar , .cmd , .odg , .tbk , .cpp , .odp , .tgz , .crt , .ods , .tif , .cs , .odt , .tiff , .csr , .onetoc2 , .txt , .csv , .ost , .uop , .db , .otg , .uot , .dbf , .otp , .vb , .dch , .ots , .vbs , .der” , .ott , .vcd , .dif , .p12 , .vdi , .dip , .PAQ , .vmdk , .djvu , .pas , .vmx , .docb , .pdf , .vob , .docm , .pem , .vsd , .docx , .pfx , .vsdx , .dot , .php , .wav , .dotm , .pl , .wb2 , .dotx , .png , .wk1 , .dwg , .pot , .wks , .edb , .potm , .wma , .eml , .potx , .wmv , .fla , .ppam , .xlc , .flv , .pps , .xlm , .frm , .ppsm , .xls , .gif , .ppsx , .xlsb , .gpg , .ppt , .xlsm , .gz , .pptm , .xlsx , .h , .pptx , .xlt , .hwp , .ps1 , .xltm , .ibd , .psd , .xltx , .iso , .pst , .xlw , .jar , .rar , .zip , .java , .raw


Recomendações:


É importantíssimo que todos os usuários que possuam plataformas baseadas em Windows atualizem seus ambientes (especialmente aplicando a correção MS17-010).


O antivírus deverá estar atualizado e não permitir a criação das seguintes extensões:
00000000.eky,00000000.pky, 00000000.res, @Please_Read_Me@.txt, @WanaDecryptor@.exe, b.wnry, c.wnry, f.wnry, r.wnry, s.wnry, t.wnry, u.wnry.
Por existirem outros vetores de infecção para que ransomwares possam atuar, aconselhamos que não sejam abertos e-mails e anexos que pareçam suspeitos.

A disseminação desmedida do Wcry nos lembra a importância de manter os sistemas sempre atualizados, aplicando patches de segurança e realizando verificações constantes nas infraestruturas internas. Além disso, ressalta a necessidade, cada vez maior, de se investir em segurança da informação.
[Atualização 19/05/2017]

Foi desenvolvida uma ferramenta chamada "WanaKiwi", que simplifica todo o processo de decodificação de arquivos infectados com WannaCry.

Embora a ferramenta não funcione para todos os usuários devido a suas dependências, pelo menos ele dá alguma esperança para as vítimas de WannaCry de obter seus arquivos criptografados de volta gratuitamente, mesmo do Windows XP. O WanaKiwi também funciona nos sistemas Windows 7, Windows Vista, Windows Server 2003 e 2008

Todas as pessoas infectadas têm que fazer o download da ferramenta WanaKiwi do Github e executá-lo em seu computador Windows afetado pelo WannaCry usando a linha de comando (cmd).

WanaKiwi tool
https://github.com/gentilkiwi/wanakiwi/releases

Referências: 

https://nakedsecurity.sophos.com/2017/05/15/wannacry-heres-what-we-know-now-about-the-outbreak/

https://blog.comae.io/wannacry-the-largest-ransom-ware-infection-in-history-f37da8e30a58

https://latesthackingnews.com/2017/05/13/protect-your-self-against-wannacry-ransomware/

http://thehackernews.com/2017/05/how-to-wannacry-ransomware.html


http://thehackernews.com/2017/05/wannacry-ransomware-unlock.html


http://anchisesbr.blogspot.com.br/2017/05/seguranca-perguntas-e-respostas-faq.html


https://blog.comae.io/wannacry-decrypting-files-with-wanakiwi-demo-86bafb81112d

Novo Header de Segurança : Expect - CT


Certificate Transparency


Abril de 2018 é o deadline para que seu certificado esteja devidamente instalado e configurado na aplicação, de acordo com as recomendações da Google. As aplicações que não estiverem em conformidade, irão apresentar mensagens de falta se segurança e não terão as páginas com um bom índice de SEO, ou seja, o site não irá funcionar corretamente no Chrome, não serão tratados como certificados confiáveis pelo browser.  Estas recomendações surgiram de um projeto que a Google iniciou em 2012, chamado de Certificate Transparency, que visa obter a maior transparência possível nas emissões de certificados feitas pelas CA, possível obter mais informações aqui.  
Para ajudar neste processo de adequação as solicitações da Google, a empresa criou um header de segurança, chamado Expect-CT, que permite analisar se a sua aplicação está pronta para as mudanças que serão aplicadas a partir de Abril de 2018.

Signed Certificate Timestamp

Os certificados deverão ser enviados ao servidor do Certificate Transparency (CT) pela CA que os emitiu, entretanto, é possível que o mantenedor do site faça isso. Signed Certificate Timestamp (SCT) é o response de um log de um certificado, ele que deve ser entregue aos clientes quando é feita estabelecida uma conexão TLS, e isso pode ser feito de três maneiras:

x.509v3 Extension

Uma extensão que já vem com o certificado, ou seja, quando sua CA emite o certificado, ela entrega esta extensão que já faz a entrega SCT, sem necessitar de uma ação por parte do dono do site que não seja a instalação típica.

TLS Extension

Via extensão TLS, onde é necessária uma ação por parte do dono do site, aplicando a extensão chamada de signed_certificate_timestamp

OCSP Stapling

OCSP Stapling é normalmente usado para obter informações sobre a revogação dos certificados em um servidor, mas também serve para entrega do SCT.  

Clicando aqui, é possível ver como funciona um log, ele busca todos os certificados que foram instalados no seu domínio.


Header Expect-CT


Para implementar o header, não requer muita configuração. As suas diretivas disponíveis são:

Enforce – A diretiva enforce é opcional, ela controla se o browser deve aplicar uma política ou trata-la como report-only.
Max-age – A diretiva max-age especifica o número de segundos que o browser deve fazer cache e aplica a política para enforced ou report-only
Report-uri – A diretiva report-uri especifica onde o browser deve enviar relatórios, caso não esteja recebendo informações validas do CT.


Aplicando o Header

Para aplicar o header, é importante que esteja no modo report-only para testar e certificar que não irá causar alguma falha. Isso significa que deve omitir a diretiva enforce e aplicar max-age para 0. Exemplo:

Expect-CT: max-age=0; report-uri="https://meusite.report-uri.io/r/default/ct/reportOnly"
Essa política é implementada no modo report-only e se o browser não receber as informações CT de acordo, será referenciado como não qualificado e ao invés de terminar a conexão, será enviado um relatório para o valor report-uri especificado. Quando as configurações estiverem corretas e as entregas de SCTs estejam de acordo, aplique a politica Expect-CT. Inicie o processo com um “max-age” baixo.

Expect-CT: enforce; max-age=30; report-uri=https://meusite.report-uri.io/r/default/ct/enforce
Agora o browser irá fazer o cache e aplicar esta política em todas as conexões do site por 30 segundos.

As especificações do header podem ser encontradas aqui.
Essa opção ajuda para que a sua aplicação esteja de acordo com os requerimentos que a Google pede. Mesmo que sua CA forneça o certificado com o SCT, considero ser importante a aplicação do header, pois um dia você poderá trocar de CA.

Referencias: