Engenharia de um Vírus – Looping e Modo Silencioso

Pensei em criar uma aplicação Windows Forms, porém como não teremos telas nessas demonstrações, optei por utilizar uma aplicação Console (Tela Preta), por serem menores (para efeito de testes criei 2 projetos um Console e um Windows Forms não alterei nenhuma configuração, compilei no modo release e percebi que o assembly gerado na aplicação Console é 2 kb menor que o assembly da aplicação Windows Forms).

Criação do Projeto

Nome do Projeto: V1RILL

Modelo de Projeto: Console Application

Versão Plataforma .NET: 4.0 -> Pensando na compatibilidade com o XP e versões anteriores

projeto

Looping Infinito

Pra começar a estrutura do nosso VIRILL, vamos coloca-lo em um looping infinito, a idéia é que ele sempre fique ativo, monitorando e interagindo com a máquina.

Abra o arquivo Program.cs e no ponto de entrada da aplicação coloque o código abaixo:

static void Main(string[] args)
{
    //Colocamos a variante em um looping infinito
    while (true)
    {

    }
}

Modo Silencioso

É muito comum que uma variante rode em background no modo SILENCIOSO, sem que o usuário saiba de sua execução até porquê se perceber que algo está errado vai tentar remover (Manualmente, Anti Vírus, Patch de Remoção) e consequentemente irá acabar com a brincadeira, quanto mais imperceptível estiver MELHOR !!!

Literalmente temos que dar um Visible (False), porém como estamos utilizando uma aplicação Console não temos uma interface visual e suas configurações, para resolver esse problema iremos recorrer as APIS NATIVAS DO WINDOWS.

Interagindo com as APIS WIN32 podemos manipular recursos nativos do sistema operacional (registro do windows, arquivos e pastas, arquivos de drivers, barras, menus, aplicações, formatações) e dispositivos conectados a máquina (teclado, mouse, webcam, monitor, cd-rom, impressora).

Agora veio a grande dúvida, como interagir com as APIS WIN32 através do Visual C# ???

Simples tem um recurso da plataforma .NET chamado PINVOKE que nos auxilia a fazer o Marshaling (Interoperabilização entre o código gerenciado e o código NÃO gerenciado normalmente bibliotecas em C, C++), para não ter que ficar decorando a assinatura e chamada das APIS WIN32, existe um site bem bacana chamado PINVOKE nele podemos visualizar todas as DLL’S nativas do sistema operacional, métodos e exemplos para CTRL + C e CTRL + V.

Para começar a utilizar PINVOKE, vamos importar a namespace (System.Runtime.InteropServices) e para poder deixar a aplicação oculta vamos utilizar os métodos (GetConsoleWindow e ShowWindow)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Namespace necessária para habilitar as chamadas as APIS WIN32
using System.Runtime.InteropServices;

namespace V1RILL
{
    class Program
    {
        //Assinatura do método responsável por capturar o handle da janela
        //Esse método esta dentro de kernel32.dll
        [DllImport("kernel32")]
        private static extern IntPtr GetConsoleWindow();

        //Assinatura do método responsável por manipular o estado da janela
        //Esse método esta dentro de user32.dll
        [DllImport("user32")]
        private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

        static void Main(string[] args)
        {
            //Pegamos o identificador da janela corrente
            //Deixamos a variante oculta = 0, visível = 1
            ShowWindow(GetConsoleWindow(), 0);

            //Colocamos a variante em um looping infinito
            while (true)
            {

            }
        }
    }
}

Engenharia de um Vírus – Situações e Efeitos Colaterais

Desenvolver um VIRILL é um processamento extremamente divertido e complicado, existem várias situações e efeitos colaterais que devemos nos atentar para garantir que a variante atinja o maior número de máquinas ao redor do mundo.

Fique sempre atento aos pontos listados abaixo, pois são eles que vão garantir o sucesso do virill…

Performance, Internet, Versão do Sistema Operacional, Firewall, Anti Vírus, Endereço de IP

Situações e Efeitos Colaterais

Nossa variante será executada em diversas máquinas ao redor do mundo, com isso não teremos como garantir que a máquina infectada possuirá o sistema operacional Windows ou uma determinada versão dele, portanto tome cuidado para não se prender em algum recurso (DLL, API, PASTA, CHAVE DO REGISTRO, APLICATIVO) específico daquela versão, tente se possível programar de forma genérica pra garantir que a aplicação se comporte do mesmo jeito em todos os SO.

Caso tenha algum recurso específico pra determinada versão, uma alternativa FAIXA PRETA para resolver esse cenário é disponibilizar um LOADER que detecte o Sistema Operacional e baixe de um servidor FTP a versão específica da variante daquele SO.

Tome cuidado com a performance, nem todas as máquinas ao redor do mundo são rápidas, quanto mais performática for a variante melhor, tente consumir a menor quantidade possível de recursos no HD, Memória, Processador e Rede.

A máquina pode estar sem internet no momento do envio ou resgate dos dados, armazene os dados offline de preferência criptografados e quebre as informações em diversos arquivos para dificultar a remontagem.

Tome cuidado ao trabalhar com sockets, o firewall vai acusar que a variante está tentando abrir uma porta TCP, antes de abrir a porta adicione uma exceção no firewall ou desabilite o firewall momentaneamente, uma alternativa bacana é simular uma tela de erro no windows enquanto em background você desabilita o firewall.

A DMZ pode estar fechada então essa máquina  não possuirá comunicação externa através de alguma porta TCP, porém a porta da internet pode estar liberada, para esses casos enviar um pedido HTTP com SOAP ou REST para garantir o acesso ao mundo externo e fazer a sincronização de informações.

Pode ser que o anti vírus detecte a variante, para esses casos disponibilizar um LOADER, que desabilite o anti vírus para depois fazer o download e execução da variante, mesclar executáveis através do código MSIL ou código de máquina também ajuda a dificultar a detecção pelo anti vírus.

Antes de repassar a variante, aconselho testa-la em diversas VMS com diversos SO e pra poupar o trabalho de ficar instalando diversos softwares anti vírus, subir a variante para o site VIRUS TOTAL, ele faz um SCANNER do arquivo com todos os possíveis anti vírus e verifica se o arquivo está ou não infectado.

Engenharia de um Vírus – Expectativas

Depois de vários e vários meses sem escrever no blog, estou de volta… e muito provavelmente após essa série de artigos IMORTAIS vou sumir de novo, afinal diga-se de passagem eu odeio escrever em blogs !!!

A minha ideia é montar uma sequência de artigos para mostrar todos os passos envolvidos na criação e desenvolvimento de um vírus, worm, trojan, malware, adware e qualquer outra variante e mostrar que pra ser um bom VXER (Cara que coda um vírus), você só precisa ser um bom programador ou NÃO !!!

O que me motivou a escrever essa série foi a falta de assuntos desse gênero na Web, além de já estar enjoado de toda hora ver alguém postando mais do mesmo “SignalIR com exemplo de um Chat”, “MVC4 com Node.js”, “Windows Store Apps”…

Dei uma boa GOGADA (google) e BINGADA (bing) e não achei nenhum artigo em português, inglês que se compare aos assuntos que falarei nessa série de artigos, literalmente você vai adquirir conhecimentos para ser um HACKER utilizando o Visual Studio 2012, Visual C# 5.0 e PINVOKE.

Vou mostrar como é fácil interagir com as APIS nativas do Windows utilizando PINVOKE, monitorar o protocolo HTTP, simular teclados virtuais, interceptar informações de aplicações, conexões reversas, loaders e infects entre outras técnicas mais ROX, lembrando que todas as técnicas são exclusivamente para estudos o que você vai fazer com elas é problema seu !!!

Depois dessa série de artigos, você vai perceber que as aplicações vão muito além do CRUD, certificações não valem nada, que o sênior do seu lado não é tão sênior assim e o que importa na programação é a diversão !!!

 

Segue abaixo o link de um vídeo muito bacana, com uma simulação que fizemos no começo do ano !!!

Preview 

Visual Studio 2012 – Atualizações Automáticas

Um novo recurso bem interessante do Visual Studio 2012 é a atualização automática, toda vez que abrimos ele é feita uma busca atrás de novas atualizações disponíveis para a IDE e complementos instalados, caso exista alguma atualização somos informados através da janela EXTENSIONS AND UPDATES.

Nas imagens abaixo foram detectadas 2 atualizações (IDE e NUGET) e ao clicar no Botão (UPDATE) é feito o download e instalação.

Atualização da IDE

Atualização do NUGET

Por padrão esse recurso é habilitado mas você pode estar desabilitando no MENU -> TOOLS -> OPTIONS -> ENVIRONMENT -> EXTENSIONS AND UPDATES -> .

Windows 8 – Teclas de Atalho

Quem me conhece sabe que gosto muito das teclas de atalho, acho que simplificam muitas das tarefas do dia a dia.

Pensando nisso segue abaixo as teclas de atalho para algumas das novidades que falamos do Windows 8 em posts passados.

TELA INICIAL -> WIN

TELA PESQUISA -> WIN + Q

CHARM BAR -> WIN + C

CONFIGURAÇÕES -> WIN + I
COMPARTILHAMENTO -> WIN + H
DISPOSITIVOS -> WIN + K

Windows 8 – Charm bar

A Charm Bar também lembra a tela inicial, nela temos opções pras configurações e funcionalidades mais utilizadas no dia a dia .

Para abrir a Charm Bar posicione o mouse no canto direito (superior ou inferior)

Charm Bar

VERMELHO -> Tela de pesquisa de aplicações

AZUL -> Compartilhamento de arquivos e aplicações

VERDE -> Abertura da tela inicial de atalhos

AMARELO -> Suporte multi monitor e informações sobre data, hora, internet e bateria

BRANCO -> Abre a tela com as principais configurações para o Windows e Usuário Corrente

 

Windows 8 – Windows Explorer

Os menus do Windows Explorer também foram reformulados, eles estão parecidos com os menus dos aplicativos do office.

Esse componente visual se chama Ribbon.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.