Jump to content

O uso da tabela ASCII na ofuscação de palavras


VictorNeves

Recommended Posts

Olá pessoal,

Esse é meu primeiro post no fórum, vim trazer um método de ofuscação de palavras.
O objetivo é contribuição para a comunidade com conhecimento.

Meses atrás houve um malware que ofuscava TODAS as Strings usando os códigos da tabela ASCII, pode parecer simples, mas a forma que ele usou foi bastante interessante.
O método dele deixava bem estressante a reverse. Ele colocou TODAS as strings ofuscadas numa única tripa gigantesca de número.

O método consiste em transformar cada caractere no seu código ASCII e juntar em uma String só.
Para desfazer o processo, voce precisa saber onde cada código referente à cada letra está.
Vamos montar a palavra 'victor', a representação de cada letra é pelos seguintes números:

v 118
i 105
c 99
t 116
o 111
r 114

A ofuscação seria: 11810599116111114
Porém, perceba, alguns caracteres possuem 3 outros 2 casas numéricas. Então na hora de desfazer, voce tem que saber o lugar de CADA caractere, o reverso seria o exemplo de código a seguir (vou fazer de modo genérico, depois voce coloca na sintaxe da linguagem que voce escreve) :

var="11810599116111114"
desofuscado = Char(var.split(0,3))+Char(var.split(4,7))+Char(var.split(7,9))+ <e por ai vai>

Então voce vai catando os números e transformando pra char e formando sua palavra. Método simples, mas quando voce coloca TODAS AS STRINGS do seu código numa variável só, vai ficar uma tripa gigantesca de número e muito chato de fazer o reverse; se é voce quem ofusca, não pode perder a posição de cada caractere, um número a mais ou a menos e voce pode simplesmente mudar uma palavra!

Link to comment
Share on other sites

  • Administrators

Interessante. :)

Uma ideia seria, assumindo que os valores ASCII só vão até 127, poderíamos ler a string a cada 3 caracteres, converter pra inteiro e, caso o resultado seja maior que 127, significa que deveríamos ler somente 2 caracteres (2 dígitos já que é string numérica). Eu definitivamente não sei Python, mas:

import sys

s = '11810599116111114'
i=0

while i < len(s):
	v = int(s[i:i+3])

	if v > 127:
		v = int(s[i:i+2])
		i += 2
	else:
		i += 3

	sys.stdout.write(chr(v))

A saída:

$ python str.py
victor

Abraços,

Fernando

Link to comment
Share on other sites

  • Administrators
1 hora atrás, ncaio disse:

7797110101105114111333297321091111181051091011101169799971113210011132971141149712132102105991111173298111974632671111051159732100101321131171011093210697321151111021141011173210911710511611132101109321151041011081083211599114105112116326193

hahahaha, sabe que deu uma ideia de fazer um programa que detecta que tipo de ofuscação tá sendo usada na string - e tenta desofuscar, claro? Será que é útil?

Tipo assim:

ideia.png.8ccb30b6b16413887f7d678d7722ebd3.png

Link to comment
Share on other sites

Main.java.zip@Fernando Mercês

Lá no final, uma única string com os números...

Aprendi bastante malícia com essa campanha que até hoje se tem muita pouca informação ... sabe-se que atacaram a República da Moldávia, eu chamo essa campanha de 'new order', por conta do primeiro arquivo que peguei deles...

Só peguei a string dele e substituí no seu script.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...