---
# System prepended metadata

title: 'Writeup étape 5: étrange fichier'

---

# Writeup étape 5: étrange fichier

[toc]

Nous pouvons réaliser la désoffuscation en 4 grandes étapes:

### Rajouter les sauts de lignes

-> 5.malware

### Repérer le(s) fonction(s) inliné

On remarque à partir de la ligne 85 l'utilisation répetée de ces lignes avec pour seule différence une chaîne de charactère qu'on remplace donc par $1 dans l'exemple suivant


```shell

Mjg0NGI3NTM5M2JhZTQxMThhOWJjZDc5ZGY3YmQyYWY5YmYyOWFhNzFhODZiNzUwNDczNzk0ZWJm=$("$ZmM3ZTkxNmY1YjI3ZjAxMjkxZTlmMGY3ZTBjNDM4NmU4ZGNkM2E2M2MyMjVmNWExNGE3YjNiMzZi")
    "$YTAzZDcwM2Q3ZWM1ZWYxMTNjZDY1ZWEzMGE4OGZhM2MzZWM1YjUyN2M3ZTViZTZlMzRhZmFhMmQy" "$1" | "$OTU4OTZkNmVjNGYwZjZmMmMwZTg0MmI4OGYzNjk2NjE4MTRjMzk4YTVhYmFmMDJkYmU0Y2QzNzRk" | "$MzIwMTBkNTA4N2ZhMjgzNDQwOTMwZDQ2YTM4OGQ0MmFmNWJlMDQxYWRlNDQzMTA3YjcyNGZmMDQz" | "$NTFlOWE5MzljN2ZjYzViOTc5ZDZhNjVkYmZlNDEwMDc3NWFlOTBiZGIwODFiYmZhZDZjNzViZTU5" "$Nzk1MzY4MzQ5ZTcxYmU2NjI4ZWRmMjIzMDg1M2ZiYWM0MGY2ODYzMTdiZTNlM2VlMDFjYWNhY2Yy" "$DAwZjJhODBiMTM4NGJiYjM1NzU5YjhhNzI0ZjQyMjkyZjgzOWNiOTlkZGNjMDExZDFmZDUx" | "$MDU4YWFhNTk0YjZiYWRiOTQ4NTkyOWUxOWMxODUxY2ZjNjk1YmVkZDNjNDE3YjJhYTc1ZDFlMjBj" -d > "$Mjg0NGI3NTM5M2JhZTQxMThhOWJjZDc5ZGY3YmQyYWY5YmYyOWFhNzFhODZiNzUwNDczNzk0ZWJm"
    "$OWQ5ZGY4YWFiMjhhMDQxMjkyZmJlMzdhNzVlMWM5OWI0NTMzM2I4MmM0ZGM5Y2VkODgwOWE5Y2Nm" -p "$Mjg0NGI3NTM5M2JhZTQxMThhOWJjZDc5ZGY3YmQyYWY5YmYyOWFhNzFhODZiNzUwNDczNzk0ZWJm"

    "$ZDY4ZWY5NTU0YTE2ZWQ5YTQwY2ViNzcyNzZlN2VlMzQyZjQ1YmYxM2M0YTYxYTMwZjEzMzNjNDdi" "$Mjg0NGI3NTM5M2JhZTQxMThhOWJjZDc5ZGY3YmQyYWY5YmYyOWFhNzFhODZiNzUwNDczNzk0ZWJm"
```

Puisque cette fonction ne prend qu'une chaine de caractère ayant l'air offusqué en paramètre, nous allons extraire cette fonction en `deobfuscate()` et remplacer son utilisation

-> 4.malware.sh

### Remplacer le nom des binaires

On comprend que le script semble télecharger des binaires jusqu'à la ligne 78, puis utilise ces binaires avec des arguments offusqués (désoffusqués avec la fonction trouvé precedement)

On peut heuristiquement, grâce à leur utilisation, essayer de déduire chacun des binaires:

par example
- `"$M2QwNzZhYjYwZTExNWQ4ZWM1NTE4YWIxYzg4M2ZmODVhZDllZWExYTljYWRmOTg0NzllZDhiZTYw"` s'utilise avec `type -f exec` (ligne 126) on en déduit donc qu'il doit s'agir de `find`
- `$ZDY4ZWY5NTU0YTE2ZWQ5YTQwY2ViNzcyNzZlN2VlMzQyZjQ1YmYxM2M0YTYxYTMwZjEzMzNjNDdi` s'utilise avec `-r` et en fin programme sur tout les fichiers télechargés, on peut donc en déduire qu'il s´agit de `rm`
- `"$YTM2YmI2ZjQ3MDRmYWI1YWU5MWVlMjI4MDJmNDJhZTY5ZmRmNTlhYjVmMTkyYzM4ZGNiZTBhOWFk"` s'utilise comme `chmod`
- Et ainsi de suite...

Finalement on peut obtenir un script avec les noms des binaires modifiés

-> 3.malware.sh

### Desoffuscation des strings

Avec les binaires trouvés à l'étape précedente on peut donc déduire le code de la fonction de désoffuscation (potentielement avec de l'essai erreur):

```shell=
deobfuscate() {
    file=$("$bin_mktemp")
    Nzk1MzY4MzQ5ZTcxYmU2NjI4ZWRmMjIzMDg1M2ZiYWM0MGY2ODYzMTdiZTNlM2VlMDFjYWNhY2Yy='A-Za-z'
    DAwZjJhODBiMTM4NGJiYjM1NzU5YjhhNzI0ZjQyMjkyZjgzOWNiOTlkZGNjMDExZDFmZDUx='N-ZA-Mn-za-m'

    "$bin_echo" "$1" | "$bin_dc" | "$bin_rev" | "$bin_tr" "$Nzk1MzY4MzQ5ZTcxYmU2NjI4ZWRmMjIzMDg1M2ZiYWM0MGY2ODYzMTdiZTNlM2VlMDFjYWNhY2Yy" "$DAwZjJhODBiMTM4NGJiYjM1NzU5YjhhNzI0ZjQyMjkyZjgzOWNiOTlkZGNjMDExZDFmZDUx" | "$bin_base64" -d > "$file"
    "$bin_unzip" -p "$file"

    "$bin_rm" "$file"
}
```

On applique ensuite la fonction sur l'entiereté des chaines de caractère offusqués pour obtenir le script.

-> 2.malware.sh