Skip to content
/ Ninja Public

A general-purpose fully customizable software to control a remote computer behind any NAT, Firewall and proxy. Providing secure shell access, file transfer and shell stream (stream shell output from remote to a local file). Ninja has no prerequisites, you can just download the release and use it right away!

License

Notifications You must be signed in to change notification settings

ErAz7/Ninja

Repository files navigation

Ninja version-shield cross-platform-shield

A general-purpose fully customizable software to control a remote computer behind any NAT, Firewall and proxy. Providing secure shell access, file transfer and shell stream (stream shell output from remote to a local file). Ninja has no prerequisites, you can just download the release and use it right away!

Please note that Ninja is the host and executor of commands; So it will be running on target (remote) computer. You would need Jonin on controller (commander) computer to connect to your Ninjas and command them

logo

You can download latest release from here

Features

  • Secure shell access to remote (Ninja) computer
  • File upload/download (Multiple files at once) to/from remote (Ninja)
  • Shell stream, run command on remote (Ninja) and stream output to a file on local (Jonin)

Demo

ninja

demo.mp4

Platforms

windows macos linux
Windows 10 ✔ macOS 12 Monterey ✔ Parrot OS 4.11.2 ✔

Overview

Ninja is a portable remote computer control software. Once it's ran on a remote computer, it will provide you shell access, file transfer (upload/download) and shell stream. There's no need to open ports on the remote computer, even if it uses a cellular data network and is behind proxies, there will be no problem in connection since Ninja wont listen on a port for conenctions and instead will ask the controller or the Jonin computer for connection (WebSocket if available, otherwise xhr polling). So the controller computer should be running Jonin and have the required port open.

Jonin is the pair for Ninja which can control (order!) multiple Ninja instances. You'll need to use it on the controller computer in order to communicate with a Ninja

Setup

Follow these steps to setup Jonin and Ninja:

  • Download Jonin Release and Ninja Release
  • Change PORT in config/constants.json for both Ninja and Jonin, the ports should be the same. Please read This Guide about how to setup HOST to never lose access to Ninja
  • Forward configured port on Jonin's router. There are lots of guides out there for port forwarding. [This one][noio-port-forwarding] from noip is a nice one
  • Done! Now run Ninja on the target/remote computer, run Jonin on controller/local computer and wait for some report from your Ninja !

For usage guide and list of commands, check here

Note: NO_LOG in config file SHOULD be set to true when you want to use Ninja as a service, otherwise, the log file might grow larger forever (up to the limit)

Fix No Ninjas Error

If you did all above and got No Ninjas, then the chances are your ISP is putting you behind a NAT. To check this, you can find your router's WAN IP address (can be found on router's homepage) and then compare it to the actual IP address that you have on the internet (can be found by searching my ip on google); If these IP addresses were NOT identical, then your router is behind a NAT. To fix this, you should ask your ISP to change your NAT type to OPEN

Single Click Installer

You can use this single click installer (which uses Servicifier) on windows:

windows single click installer

Please note that you should still change HOST and PORT in Ninja config file as explained in Setup & Usage (for this installer, it will be in files/config/constants.json), before you use the installer. Also note that this installer, will install Ninja in C:/Ninja and name the service ninja.exe. To customize this, you can change installation config file in config/installation-config.json (check here for installation config format). Also to make installer ask for installation config values when you run it, instead of automatically using config file, you can simply remove installation config file

Configuration File

You can find this file in config/constants.json:

{
  // connection port
  "PORTS": {
    "DATA": 3707
  },

  // name to identify Ninja on Jonin when working with multiple Ninjas
  "NAME": "Ninja's Name",

  // Jonin computer's address
  "HOST": "domain.com",

  // connection config. any valid Socket.io option
  "CONNECTION": {
    "RECONNECTION_DELAY_MAX": 5000,
    "RECONNECTION_DELAY": 1000,
    "TIMEOUT": 20000,

    "rejectUnauthorized": false
  },

  // interval in which file receiver party will send ack to sender
  "FILE_TRANSFER": {
    "ACK_INTERVAL": 2000
  },

  // stop logging, this SHOULD be set to true when you want to use Ninja
  // as a service; otherwise, the log file might grow larger forever
  // (or up to the limit)
  "NO_LOG": false,

  "PROGRESS_BAR": {
    // progress bar colors
    "COLOR_MAP": {
      "FAILED": ["red", "red"],
      "INVALID": ["red", "red"],
      "DONE": ["gray", "green"],
      "IN_PROGRESS": ["gray", "cyan"]
    },
    // progress bar name/label maximum length
    "MAX_NAME_LENGTH": 10
  }
}

Host Setup

When configuring Ninja, you should use a HOST that points to Jonin computer and also will always be available. So you'll have to use one of the following options:

Dynamic DNS

This is the best way I can suggest since It's free and easy. you just need to create an account in one of DDNS services (like Duck DNS and No-Ip), create a domain name and set it to point to your dynamic IP address. If your ISP changed your IP, then just simply change it on DDNS website or install a Dynamic Update Client (DUC) to do this for you automatically.

VPS

You can purchase a VPS and use its IP or hostname as HOST in config file. However you'll always have to control your Ninjas from this VPS. Another downside is that this is paid.

Static IP Address

You can use an IP address for your Jonin and set this IP in Ninja's configuration. This is not recommended since you'll have to spend money while there are easy free ways, unless you have a static IP already

Domain Name

Just like static IP, you can use a domain name for your Jonin and set this name in Ninja's configuration. For same reason as static IP, this also is not a recommended way

Use As Spyware

Please note that Ninja can be easily used as a spyware, especially when installed as a service, it will open full access to the target computer for the Jonin controlling it. So use it carefully and don't leave the Ninja process running on a computer that is connected to the internet

Source Code

Source code will be open soon, after some refactoring and improvements

About

A general-purpose fully customizable software to control a remote computer behind any NAT, Firewall and proxy. Providing secure shell access, file transfer and shell stream (stream shell output from remote to a local file). Ninja has no prerequisites, you can just download the release and use it right away!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published