PDA

View Full Version : |Tutorial| MuOnline x Antivirus - Como remover falso-positivos nos antivírus



Alankoba
16/11/2019, 01:41 PM
Olá pessoal beleza? Hoje vou mostrar pra vocês como resolver definitivamente esse problema e deixar seu Client limpo de avisos de vírus e falso-positivos.

Recentemente baixei alguns servidores para testar e tive que fazer vários procedimentos para conseguir entrar no jogo... Coisa que certamente fará você perder muitos players que não conseguirão fazer. Vamos lá!

Antes de tudo você precisa conhecer o site: virustotal.com, ele vai te ajudar a identificar quais antivírus estão detectando seus arquivos.
Você deve observar os seguintes pontos.



Remover os falso-positivos de todos os antivírus listados pelo Virustotal é uma tarefa muito difícil, concentre-se nos principais.
O antivírus da Microsoft não pode detectar seu arquivo como vírus em nenhuma hipótese, pois ele vem instalado nativamente no Windows, portanto de nada adianta conseguir reduzir o número de avisos e ele continuar detectando.
Os antivírus: Avast, AVG, Kaspersky e Avira são muito utilizados, portanto considere que se você conseguir tirar o aviso destes, então pode ser que seu problema já estará resolvido.
Não confie totalmente no Virustotal, pois apesar dele ajudar nos testes não é garantido que o mecanismo de detecção heurístico dos antivírus em execução no computador obterão o mesmo resultado.



Meu main/launcher está sendo detectado pelos principais antivírus, o que fazer?

Vou listar algumas técnicas que você pode seguir para resolver o problema, listarei na seguinte ordem: mais fácil de fazer/mais difícil de fazer.

Técnica 1: Reportar que o arquivo é um falso-positivo para a empresa desenvolvedora do antivírus.
Praticamente todas as empresas desenvolvedoras de antivírus possuem um formulário/e-mail para fazer isso, e a resposta geralmente é bem rápida, digo por experiência própria. Listo abaixo os canais de algumas empresas, você pode encontrar as outras facilmente no próprio site de cada uma.

Avast: [Only registered and activated users can see links]
AVG: [Only registered and activated users can see links]
BitDefender: [Only registered and activated users can see links]
Clamav: [Only registered and activated users can see links]
Microsoft: [Only registered and activated users can see links]
Kaspersky: [Only registered and activated users can see links]
Symantec: [Only registered and activated users can see links]

Esta técnica é extremamente eficiente, pois como os antivírus tem parte do seu banco de dados em nuvem, então de um dia pro outro o problema está resolvido e nem foi necessário programar/modificar nada nos arquivos.

Técnica 2: Usar um EXE Packer simples.
Usar um EXE Packer simples é muito útil para se livrar dos false-positives (principalmente nos AVs estranhos que aparecem no Virustotal), mas lembre-se quanto mais simples melhor, portanto nada de Molebox/Themida ou coisas assim. Eu recomendo usar o UPX com a compactação mais baixa possível.

UPX com utilitário visual: [Only registered and activated users can see links]

É estranho dizer, mas até mesmo as opções que você modificar nas configurações do EXE Packer irão fazer diferença na análise dos AVs. Fiz alguns testes com um Main 1.18.89 e o resultado foi assustador, de 16/68 caiu para 2/68.

Técnica 3: Assine digitalmente os executáveis com um certificado auto-assinado.
O que? Como assim? Calma eu explico! Sabe quando você abre um executável no Windows e aparece que um programa externo que fazer alterações no seu dispositivo?

2216

Pois é! Quando um executável é assinado digitalmente ele ganha um pouco de reputação com os AVs, sabendo disso há duas formas de fazer a assinatura, a primeira é comprando um certificado de uma autoridade certificadora como a Comodo, desta forma você resolverá definidamente o problema, mas infelizmente o custo é alto, então o jeito é fazer o próprio certificado que já ajudará a elevar a reputação dos arquivos assinados.

Como fazer?
Está com paciência? Vai precisar... rs.

Você precisa instalar o Windows SDK, o link para o SDK do Windows 10 é este aqui:
[Only registered and activated users can see links]
Você pode instalar o SDK do Windows 10 mesmo se estiver usando Windows 7 ou 8.

OpenSSL também, segue o link:
[Only registered and activated users can see links]


ZOSA - Utilitário para assinatura de executáveis:
[Only registered and activated users can see links]

O cidadão que fez essa ferramenta esta de parabéns, facilita muito o trabalho.


2217

Preencha tudo com dados válidos, coloque seu nome se não tiver os dados empresariais.

Se você instalou o SDK e o OpenSSL nos diretórios recomendados então preencha com as seguintes informações:
C:\Program Files (x86)\OpenSSL-Win32\bin\openssl.exe
e
C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe

A outra configuração é para indicar onde esses certificados serão salvos.

DICA IMPORTANTE: A ferramenta salvará o certificado usado na primeira vez, use sempre o mesmo, pois desta forma você elevará ainda mais a confiança do certificado nos AVs.
DICA IMPORTANTE: Não importa o número de dias que o certificado vencerá, por padrão coloque 720, nesse tempo você precisará fazer outro certificado. Não coloque um número absurdo de dias, pois os AVs irão achar estranho e fora da realidade.

DICA BÔNUS: Você não precisa fazer isso no launcher se usar um que já está assinado ou que não levante falso-positivo nos AVs. Se for comprar um personalizado exija isso do desenvolvedor. Eu disponibilizei recentemente meu launcher que está 100% clean.
[Only registered and activated users can see links]

Depois conta pra gente o que vocês acharam. Valeu! Qualquer coisa estamos ai.

megaman
16/11/2019, 02:04 PM
hum6 dessa eu não sabia

cronusmaker
16/11/2019, 02:11 PM
so para complementar aqui alguns programas de paket tambem faz o sistema acusar como falso positivo por exemplo jogar dlls dentro de um executavel pelo molebox

o luncher da sky team e algumas tools da bor team tb tem virus por causa desse sistema de dlls pakets

Mentor
16/11/2019, 02:13 PM
Tutorial muito bom e bem detalhado congrats

andredeco
16/11/2019, 03:40 PM
Belo tutorial!

Me atrevo a dizer que não acredito em nenhum procedimento descrito pelo fato de duvidar muito que com apenas um e-mail uma detentora de Anti-vírus
irá liberar o programa X do seu banco de dados sem ao menos analisar tal programa, e para isso, iriam necessitar do programa aberto para tal análise, certamente não iriam perder tempo Decompilando um .exe para analisar. É o nome público do Anti-vírus em jogo e não abririam exceções na detecção tão facilmente.
Outro ponto é toda a facilidade, imagina se funcionasse tão efetivamente, os hacker, maliciosos e etc... teriam toda a sua vida facilitada, apenas reportando como falso positivo ou usando um simples programa para assim disseminar os seus vírus em nossos PC's.

Alankoba
16/11/2019, 09:31 PM
Belo tutorial!

Me atrevo a dizer que não acredito em nenhum procedimento descrito pelo fato de duvidar muito que com apenas um e-mail uma detentora de Anti-vírus
irá liberar o programa X do seu banco de dados sem ao menos analisar tal programa, e para isso, iriam necessitar do programa aberto para tal análise, certamente não iriam perder tempo Decompilando um .exe para analisar. É o nome público do Anti-vírus em jogo e não abririam exceções na detecção tão facilmente.
Outro ponto é toda a facilidade, imagina se funcionasse tão efetivamente, os hacker, maliciosos e etc... teriam toda a sua vida facilitada, apenas reportando como falso positivo ou usando um simples programa para assim disseminar os seus vírus em nossos PC's.

Para incluir o arquivo na lista de exceções não basta apenas envia-lo no formulário/e-mail, se você compacta-lo com Molebox ou Themida é enviar e receber em horas a recusa. O arquivo será analisado e se passar na análise ele deixa de ser detectado já na próxima atualização.

Eles não precisam descompilar o executável para analisá-lo, basta observarem alguns aspectos como.
* APIs que o executável adiciona como vinculo estático na tabela de importação (IAT).
* Combinação dos empilhamentos de alguns endereços, como por exemplo, uma chamada para GetAsyncKeyState e logo em sequência qualquer API de socket ou escrita de arquivo.
* Mudanças drásticas na estrutura dos arquivos como por exemplo, alterar o entryPoint para um OFFSET que esta fora do especificado no compilador do vc++6.0, isso acontece muito com o arquivo main.exe do Muonline, pois muitas customizações são feitas através de "hooks" em algumas chamadas e isso inclui o próprio entryPoint para carregar a DLL, veja bem, com certeza o compilador original do main.exe não utilizaria aqueles endereços para nada, portanto é um arquivo alterado por engenharia reversa, pode ser um malware...

Isso são apenas alguns exemplos, posso citar muitos outros se ainda tiver dúvida.
Eu já consegui deixar um main.exe 100% limpo na verificação do virustotal apenas com o report do falso-positivo nos formulários.

Acredito que nesses anos eu já tenha feito mais de 500 reports eu tive menos de 30 recusas, e em todos os casos sem exceção foi por conta de estruturas mirabolantes no main.exe como juntar o player.bmd no main com o Molebox.

De qualquer forma um relato recente... Semanalmente envio arquivos de um sistema de gestão para alguns AVs e NUNCA recebi uma recusa, as respostas chegam muito rápido, raras vezes passou de 48 horas.

O Virustotal possui mecanismos para mitigar problemas como liberação por tentativa/erro, note que se você enviar 3 arquivos no site e depois enviar um outro este sempre receberá a mensagem que não contem qualquer ameaça, basta recarregar a página e ver o resultado real, isso tudo pra evitar bots.

Cada AV faz a análise de uma forma especifica, e como já fiz vários reports notei que também há uma tentativa deles de evitarem que malwares verdadeiros entrem na exceção, vez ou outra eles dizem que o arquivo foi incluído, mas ao checar novamente ele continua lá.

Sobre a assinatura digital eu nem vou comentar, pois acredito que você deva saber que é a unica forma recomendada para de fato se livrar de problemas com false-positives. No tópico eu ensino a criar o próprio certificado, isso já ajuda a elevar a reputação do arquivo, faça você mesmo o teste.

Enfim... Eu não encontrei nenhum material nos fóruns explicando como resolver isso, entrei na ultima semana em vários grupos de novos servidores e sempre a mesma coisa, prints e mais prints de players que não conseguem jogar por conta disso, que é algo simples de resolver mas a comunidade não havia democratizado essa informação.

A comunidade brasileira é a mais ativa no Muonline, mas infelizmente democratizar o acesso a conteúdo de qualidade nunca foi nosso forte.
Vejo outros jogos menos populares receberem centenas de modificações/customizações que parece que não há limites para os servidores privados...

Já no Muonline pouca coisa de fato evoluiu nesse sentido, demorou demais pra sair os emuladores, o pessoal fez cada trabalho digno de Cracker russo para adicionar funcionalidades no gameserver da própria Webzen, coisas que nunca fizeram sentido pra outros jogos, pois a emulação do server sempre foi o ponto principal antes das customizações... Mas isso é papo pra um outro tópico.

andredeco
16/11/2019, 09:42 PM
Para incluir o arquivo na lista de exceções não basta apenas envia-lo no formulário/e-mail, se você compacta-lo com Molebox ou Themida é enviar e receber em horas a recusa. O arquivo será analisado e se passar na análise ele deixa de ser detectado já na próxima atualização.

Eles não precisam descompilar o executável para analisá-lo, basta observarem alguns aspectos como.
* APIs que o executável adiciona como vinculo estático na tabela de importação (IAT).
* Combinação dos empilhamentos de alguns endereços, como por exemplo, uma chamada para GetAsyncKeyState e logo em sequência qualquer API de socket ou escrita de arquivo.
* Mudanças drásticas na estrutura dos arquivos como por exemplo, alterar o entryPoint para um OFFSET que esta fora do especificado no compilador do vc++6.0, isso acontece muito com o arquivo main.exe do Muonline, pois muitas customizações são feitas através de "hooks" em algumas chamadas e isso inclui o próprio entryPoint para carregar a DLL, veja bem, com certeza o compilador original do main.exe não utilizaria aqueles endereços para nada, portanto é um arquivo alterado por engenharia reversa, pode ser um malware...

Isso são apenas alguns exemplos, posso citar muitos outros se ainda tiver dúvida.
Eu já consegui deixar um main.exe 100% limpo na verificação do virustotal apenas com o report do falso-positivo nos formulários.

Acredito que nesses anos eu já tenha feito mais de 500 reports eu tive menos de 30 recusas, e em todos os casos sem exceção foi por conta de estruturas mirabolantes no main.exe como juntar o player.bmd no main com o Molebox.

De qualquer forma um relato recente... Semanalmente envio arquivos de um sistema de gestão para alguns AVs e NUNCA recebi uma recusa, as respostas chegam muito rápido, raras vezes passou de 48 horas.

O Virustotal possui mecanismos para mitigar problemas como liberação por tentativa/erro, note que se você enviar 3 arquivos no site e depois enviar um outro este sempre receberá a mensagem que não contem qualquer ameaça, basta recarregar a página e ver o resultado real, isso tudo pra evitar bots.

Cada AV faz a análise de uma forma especifica, e como já fiz vários reports notei que também há uma tentativa deles de evitarem que malwares verdadeiros entrem na exceção, vez ou outra eles dizem que o arquivo foi incluído, mas ao checar novamente ele continua lá.

Sobre a assinatura digital eu nem vou comentar, pois acredito que você deva saber que é a unica forma recomendada para de fato se livrar de problemas com false-positives. No tópico eu ensino a criar o próprio certificado, isso já ajuda a elevar a reputação do arquivo, faça você mesmo o teste.

Agora está mais que compreendido. Sou totalmente leigo nestas questões de programações e etc... e em muitos anos nesta área de MuServer
eu nunca ouvi falar destes procedimentos, que por sinal são bem simples, por isto achei estranho e fácil demais. Certamente é uma ajuda
enorme, principalmente para quem manuseia as Seasons baixas onde praticamente todo Main acusa vírus.
Há sempre algo novo a aprender, muito obrigado por toda a explicação e conhecimento compartilhado.

s00x
17/11/2019, 10:17 AM
Olá colegas, bom dia!

Primeiramente parabéns pelo tópico.

Aviso que, tudo que foi aqui citado é o meio mais simples e eficaz de executar essa ação, apenas fazendo o procedimento, vocês iram conseguir anular, todas ou se não, boa parte das falsas acusações, digo por experiencia própria apesar de ter feito algumas coisas a mais no próprio código.


Gostaria de agradecer ao Alankoba pelo tópico, e dizer que merecidamente o conteúdo está fixado na área postada.

att's

Maykon
23/11/2019, 11:38 AM
Depois de uma semana volta a detectar com mais falsos ainda!

romariols
29/11/2019, 12:23 AM
A premissa é boa e ela realmente te faz acreditar que pode trazer algum resultado, mas a verdade é que isso não vai adiantar de nada, pode até piorar. O próprio executável main.exe de todos os servidores privados tem o código crackeado com base no original WebZen, passei um bom tempo analisando e tentando resolver este problema do false-positive com engenharia reversa, também tentei algumas das dicas citadas, um executável com o código extremamente alterado como o main.exe nunca vai ser aceito pelos verificadores, precisa-se de um código limpo sem realocações e isso todos sabemos que o Main MuOnline não tem.

As chamadas para os APIs GetAsyncKeyState, WSAStartUp, Rec, Socket, Shell e algumas outras que andei analisando, são muito antigas e suspeitas. Para confirmar basta dar uma rápida olhada com OllyDbg + Scylla que vc vai notar muitos APIs inválidos ou suspeitas, ao fixar alguns o arquivo fica até inutilizado.

2231
2232

Uma das coisas que eu fiz e teve resultado, foi o uso das ferramentas OllyDbg + Scylla, como funciona?

Primeiro, vc abre o executável com o Debbuger OllyDbg, aguarde a leitura do código do executável completamente.
OBS: Use um Main.exe sem nenhuma DLL externa hookada e que o EntryPoint original não tenha sido alterado.

Segundo, o OllyDbg vai te dar o EntryPoint original e seu Main.exe vai estar aberto em segundo plano, a próxima etapa é vc executar o Scylla em modo Administrador, com isso vc terá anexo os processos em execução na sua máquina, e com alguns offsets vc pode pesquisar e importar OEPs inteiros para reconstruir ou fixar APIs.
OBS: Para quem não sabe o Scylla é uma ferramenta de análise e reconstrução de arquivos com suporte a 64x, 86x e unicode.

Isso é só uma base para quem quiser procurar saber sobre o assunto, vale apena, pq se vc quiser ser um bom administrador vai precisar dessas ferramentas.

Isso foi oq realmente deu resultado nos meus arquivos, mas é um processo delicado e exige tempo e dedicação, eu cheguei a ter apenas 2 false-positivos em um dos meus Mains em 2017. Quem quiser limpar seu Main, na minha opinião, tem que procurar essa opção, enviar formulários não vai resolver.

Alankoba
29/11/2019, 12:46 AM
A premissa é boa e ela realmente te faz acreditar que pode trazer algum resultado, mas a verdade é que isso não vai adiantar de nada, pode até piorar. O próprio executável main.exe de todos os servidores privados tem o código crackeado com base no original WebZen, passei um bom tempo analisando e tentando resolver este problema do false-positive com engenharia reversa, também tentei algumas das dicas citadas, um executável com o código extremamente alterado como o main.exe nunca vai ser aceito pelos verificadores, precisa-se de um código limpo sem realocações e isso todos sabemos que o Main MuOnline não tem.

As chamadas para os APIs GetAsyncKeyState, WSAStartUp, Rec, Socket, Shell e algumas outras que andei analisando, são muito antigas e suspeitas. Para confirmar basta dar uma rápida olhada com OllyDbg + Scylla que vc vai notar muitos APIs inválidos ou suspeitas, ao fixar alguns o arquivo fica até inutilizado.

2231
2232

Uma das coisas que eu fiz e teve resultado, foi o uso das ferramentas OllyDbg + Scylla, como funciona?

Primeiro, vc abre o executável com o Debbuger OllyDbg, aguarde a leitura do código do executável completamente.
OBS: Use um Main.exe sem nenhuma DLL externa hookada e que o EntryPoint original não tenha sido alterado.

Segundo, o OllyDbg vai te dar o EntryPoint original e seu Main.exe vai estar aberto em segundo plano, a próxima etapa é vc executar o Scylla em modo Administrador, com isso vc terá anexo os processos em execução na sua máquina, e com alguns offsets vc pode pesquisar e importar OEPs inteiros para reconstruir ou fixar APIs.
OBS: Para quem não sabe o Scylla é uma ferramenta de análise e reconstrução de arquivos com suporte a 64x, 86x e unicode.

Isso é só uma base para quem quiser procurar saber sobre o assunto, vale apena, pq se vc quiser ser um bom administrador vai precisar dessas ferramentas.

Isso foi oq realmente deu resultado nos meus arquivos, mas é um processo delicado e exige tempo e dedicação, eu cheguei a ter apenas 2 false-positivos em um dos meus Mains em 2017. Quem quiser limpar seu Main, na minha opinião, tem que procurar essa opção, enviar formulários não vai resolver.

Comprando o certificado de uma autoridade certificadora resolve o problema instantaneamente, sem nenhum outro segredo.

Com isso é possível inclusive criar aplicações maliciosas que os AVs fazem vista grossa, claro que com o risco de perder toda a credibilidade do certificado todo.

Praticamente todas as aplicações que usamos no Windows fazem chamadas a APIS antigas ou mesmo não documentadas, nem por isso são maliciosas.

O Chrome por exemplo, veja a IAT e me explica como um antivírus vai analisar aquilo e não dizer que é algo suspeito... O segredo está na assinatura digital.

No passado o certificado do CCleaner vazou e hackers criaram vírus em cima de uma assinatura digital com boa reputação.




Enviado do meu iPhone usando Tapatalk

romariols
29/11/2019, 01:03 AM
Para se obter certificado de algum arquivo, é preciso ter a fonte dele, pelo menos quando eu tentei fazer isso, este foi um dos requisitos, não sei se há alguma entidade que faça isso sem a fonte, se o fizer, é muita irresponsabilidade. Para os Admins de Mu Online, esta questão da verificação dos APIs e realocações ao meu ver é a melhor saída.

Alankoba
29/11/2019, 01:23 AM
Para se obter certificado de algum arquivo, é preciso ter a fonte dele, pelo menos quando eu tentei fazer isso, este foi um dos requisitos, não sei se há alguma entidade que faça isso sem a fonte, se o fizer, é muita irresponsabilidade. Para os Admins de Mu Online, esta questão da verificação dos APIs e realocações ao meu ver é a melhor saída.

Pra assinar executáveis basta um certificado com carimbo de data e hora e a auroridade certificadora confiável.

Tá certo que não é barato, mas resolve definitivamente o problema. A empresa não solicita a fonte do arquivo mas sim os dados que comprovem a existencia do fornecedor do executável, portanto não significa que um executável assinado digitalmente será livre de falso-posirivo, mas sim que ele não foi adulterado por alguém (que pode ter incluído código malicioso com engenharia reversa por exemplo).

Faço a assinatura digital com certificado EV em vários arquivos e nunca mais tive problema.

No caso dos arquivos que eu uso até mesmo um certificado auto assinado é suficiente para resolver a treta com os AVs.


Do mais você tem razão, se for possível 'limpar' o main sem nenhuma assinatura digital ou sem nenhum report melhor ainda.


Em breve farei uma adição neste tutorial explicando outros métodos alterando poucas coisas no main, já fiz vários testes para encontrar uma alternativa ao getkeyassyncstate e encontrei bons resultados sem atrapalhar o tempo de resposta das teclas no jogo.

Um bônus que podemos fazer seria criar uma lista com vários arquivos main.exe limpos para o pessoal usar Da maioria das versões).


Enviado do meu iPhone usando Tapatalk

romariols
29/11/2019, 02:12 AM
Confesso que não sou bem informado sobre os meios de se obter um certificado desses, só tentei uma vez, na tentativa de resolver o problema de false-positive, como teve esses requisitos sobre a fonte, eu achei inviável. Você já tentou isso com algum Main?

Sinceramente eu acho meio difícil alguém deixar um 100% limpo, sem afetar o funcionamento dele, o meu que eu consegui começou apresentar alguns BUGs principalmente em Windows 7, a tela ficava preta, falha em sockets, a digitação as vezes travava ou não saia nada, uma vez os mapas ficou tudo branco, e na maioria dos Windows 10 não funcionava de forma alguma, tava me dando muito trabalho e eu desisti, quando tiver tempo vou me dedicar a isso, um Main limpo faz muita diferença em um servidor.

denilsomitamar
20/12/2019, 11:42 AM
bom dia, blz?
testei e deu certinho, obrigado !!!!

Alankoba
20/12/2019, 11:44 AM
bom dia, blz?
testei e deu certinho, obrigado !!!!

[emoji106]


Enviado do meu iPhone usando Tapatalk