Ir para conteúdo
  • Cadastre-se
VictorNeves

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

Posts Recomendados

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!

  • Curtir 1
  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, Fernando Mercês disse:

caso o resultado seja maior que 127, significa que deveríamos ler somente 2 caracteres

BOOOAAAA sacada! hahahaha não tinha pensado nisso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

7797110101105114111333297321091111181051091011101169799971113210011132971141149712132102105991111173298111974632671111051159732100101321131171011093210697321151111021141011173210911710511611132101109321151041011081083211599114105112116326193

 

  • l33t 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto, já temos ofuscador e desofuscador! hehe :D

E quando voce vai fazer reverse de um malware que voce encontra isso... dá ate preguiça... mas será que com esse script em python eu consigo desofuscar o resto do malware que caiu na minha mão?? 9_9

Já volto... mhua mhua mhua

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Editado por VictorNeves

Compartilhar este post


Link para o post
Compartilhar em outros sites
//
//
//
package main

//
//
//
import (
	"fmt"
)

//
//
//
func main() {
	msg := "Maneiro! movimentacao do array ficou boa ..."
	for index := 0; index < len(msg); index++ {
		ascii := int(msg[index])
		fmt.Print(ascii)
	}
	fmt.Println()
}

O-fusca.go hahaha

  • l33t 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons no total são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.


  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...