L3MON -- Access Android Devices Remotely

L3MON is a remote Android management suite, we can use it to gain access on any android smartphone. In easy words this is a Android RAT (Remote Administrative Tool).

In today's detailed tutorial we learn how to install & configure L3MON on our Kali Linux system and use it.

Using L3MON we can make an Android APK payload and send it to android device and after installing it on android device we can gain the access of Android device via L3MON's web based interface, we can send commands from the easy web based interface and execute our commands on targeted devices.

L3mon Kali Linux Control Android device remotely

L3mon have lots of beautiful features they are following:
  • GPS Logging
  • Microphone Recording
  • View Contacts
  • SMS Logs
  • Send SMS
  • Call Logs
  • View Installed Apps
  • View Stub Permissions
  • Live Clipboard Logging
  • Live Notification Logging
  • View WiFi Networks (logs previously seen)
  • File Explorer & Downloader
  • Command Queuing
  • Built In APK Builder

  Installing L3MON in Kali Linux

We need Java Runtime Environment 8 and nodejs installed in our machine to run L3mon.

First we install the JRE (Java Runtime Environment) on our system by applying following command:
sudo apt-get install openjdk-8-jre
This command will install JRE version 8 on our system as shown in following screenshot.
installing JRE in Kali Linux
We already have installed JRE
Then we need to install NodeJs on our system we apply the following commands to download nodejs in our system.
curl -sL https://deb.nodesource.com/setup_13.x | sudo bash -
Then we run following command to install it.
sudo apt-get install -y nodejs
installing nodejs in Kali

Then we install pm2 process manager by using following command:
sudo npm install pm2 -g
Now we are ready to install and configure L3MON.

We download it from it's GitHub by using git clone command:

wget https://github.com/D3VL/L3MON/releases/download/1.1.2/L3MON-v1.1.2.zip
This command will download L3MON in our system. Now we create a new folder in our Desktop named L3MON and copy the downloaded zip file there.

Then extract it by right clicking on the zip file and choosing "extract here".

unziping l3mon

Then we open a terminal window and navigate to L3MON in our Desktop by simply using cd command:

cd /Desktop/L3MON
Here we install all the dependencies by using following command:

npm install
It will install the dependencies now as we can see the the following screenshot:

 installing dependencies of l3mon

Let start the server by using following command:
pm2 start index.js
starting the instance

Now we can see our server in our browser http://localhost:22533 there will be a login page as following screenshot:

l3mon login

We create a login for our server here. But we cant login because we did not created a password to login. To create a password we stop our serve by using following command:

pm2 stop index.js
 Now we need to edit maindb.json file using our favorite text editor mousepad.

mousepad maindb.json

Here we edit the username if we want it. But in the password field, we need to give our password's md5 hash. Means if we fill here the password as plain text, will not work. We must need to put password's md5 hash.

How to create a md5 hash of a password? Suppose our password is qwerty (This is for an example we shouldn't choose easy passwords for security reasons). To convert it on md5 we need to use following command in another terminal window.

echo -n "qwerty" | md5sum | cut -d" " -f 1
Here we got the MD5 hash of our password as we can see in the following screenshot.
creating md5 hash

Then we fill our username and password in maindb.json file then save and close this file.
modify and save the maindb.json file

Now we again start the server by using following command :

pm2 start index.js
Then again open our localhost in browser with 22533 port.

As we set our username kali and password qwerty we fill it and click on login.
We are successfully logged in.

Now we are in control. We need to open the APK builder tab.

APK builder
Here we put our IP address (local or public) and leave the port as default and click on build.

Note: If we want to control android device on our local network (same WiFi) then we can use our local IP and to connect devices through internet we need to put our Public IP (Static IP is preferred for a long time use).

After clicking on build we got an error like this.

we got error

We solved this error by configuring JAVA in another terminal by running following command:

update-alternatives --config java
Here we can select Java versions. We need Java version 8 to run L3MON tool. In out case it is on number 2, as we can see in the following screenshot.
Java version 8 selecting on Kali Linux
So we type 2 and hit "Enter".

Then we restart our running L3MON server by using following command:
pm2 restart all
Bingo, the error goes now the build is ready to download.

l3mon apk download
Now we can download the L3MON.apk in our system, and send it to our targeted device anyway and make a successful installation.

After a successful installation it on targeted device and the phone user tries to open this L3MON will asks all the permission of devices and automatically hide itself from the app drawer.

After this we got the connection with the device. We can check it on our Devices tab.

Now we can control this phone from the manage button. Here in the following screenshot we are in the file manager of the phone. Now we can spy on this phone.

File manager accessing by L3MON
We are in the file manager of victim device

Our downloaded data and recorded audio clips will be saved under assets/webpublic/client_downloads/ directory.

Our discussed method is for local network. To connect a device from internet we prefer to have a static IP address and forward our default port 22533 in our router settings or we can change the default port by changing these lines (inside includes/const.js).

Using this method we can control phones connected in our same network. We also can control devices through internet by using ngrok services. Configuring L3MON on VPS will make it portable and useful.


Provides no warranty with this software and will not be responsible for any direct or indirect damage caused due to the usage of this tool or this tutorial.
L3MON is built and our article is documented for both Educational and Internal use ONLY

Getting any problem during installing or configuring L3MON ? Feel free to contact us by commenting with error details on below comment section. We always reply. For more tutorials like this subscribe our newsletter to get updated. Also we post updates on our Twitter and GitHub.
Kali Linux


Post a Comment
  • AnonymousJune 25, 2020 at 11:29 PM

    bro 'im not getting L3MON Page, i were used this http://localhost:22533 '''http://xxxxxx:22533'' , plz help me bro...

    Delete Comment
    • Kali Linux photo
      Kali LinuxJune 26, 2020 at 7:10 AM

      it should work we have tested it many times. Please check that you followed all the process without any error.

      Delete Comment
      • Unknown photo
        UnknownJuly 8, 2020 at 1:48 AM

        Bro use port number like 4444 like this

        Delete Comment
      • AnonymousJuly 11, 2020 at 7:20 PM

        Sir write more article like this

        Delete Comment
        • Kali Linux photo
          Kali LinuxJuly 11, 2020 at 8:52 PM

          There is another tool called HaxRat. We personally give some suggestion to the developer of HaxRat (he is old good friend), then he is planning to move to http from tcp. Then we can host that RAT on any web server. Then it doesn't require special servers with port forwarding. Trust us HaxRat is much more improved version of L3mon.

          Delete Comment
        • AnonymousAugust 6, 2020 at 4:53 AM

          Plz help. It says "[PM2][ERROR] Script not found". I have been retrying the process several times now

          Delete Comment
        • AnonymousAugust 6, 2020 at 10:51 PM

          Thank you

          Delete Comment
          • SK Gokulbarath photo
            SK GokulbarathAugust 10, 2020 at 4:46 PM


            Delete Comment
            • AnonymousAugust 11, 2020 at 11:32 AM


              Delete Comment
              • Unknown photo
                UnknownSeptember 27, 2020 at 8:29 PM

                I port forwarded the port but it still doesn't work are there any more steps I need to take?

                Delete Comment
                • Kali Linux photo
                  Kali LinuxSeptember 27, 2020 at 10:37 PM

                  Did you use your external ip. Is your public ip is fixed ? or dynamic?

                  Delete Comment
                • Unknown photo
                  UnknownOctober 29, 2020 at 12:30 PM

                  app installs but it is not shown in devices

                  Delete Comment
                  • AnonymousNovember 1, 2020 at 8:21 PM

                    Hello, I did install the APK but my server does not see the device.

                    Delete Comment
                    • Kali Linux photo
                      Kali LinuxNovember 2, 2020 at 7:56 AM

                      Turn off "data saver" & "battery saver" on your android phone, then the devices will appear on your server

                      Delete Comment
                    • AnonymousDecember 8, 2020 at 8:34 PM

                      I did everything, but at the moment of infecting a device and opening the application. This does not appear in the system

                      Delete Comment
                      • Kali Linux photo
                        Kali LinuxDecember 9, 2020 at 9:07 AM

                        You need to be sure on some things.

                        1. The devices have set permission for the payload app.
                        2. The target device must not have battery saver activated (Battery saver doesn't allow to run other apps in background).
                        3. The device connected to network (for local we can use same WiFi for internet we need to forward port and internet connection).

                        Delete Comment