لوكي 1.8: ملف عن سارق البيانات الشاب والقادم





في منتصف يونيو ، كانت المعركة ضد فيروس كورونا في كازاخستان على قدم وساق. بدافع القلق من زيادة عدد الحالات (حتى الرئيس السابق نور سلطان نزارباييف أصيب بعدوى) ، قررت السلطات المحلية مرة أخرى إغلاق جميع مراكز التسوق والترفيه ، والمتاجر والأسواق والبازارات. في تلك اللحظة ، استغل مجرمو الإنترنت الموقف عن طريق إرسال رسائل بريدية ضارة إلى الشركات الروسية والدولية.



تم اعتراض الرسائل الخطيرة ، المتخفية في شكل نداء من وزير الصحة في جمهورية كازاخستان ، من قبل نظام اكتشاف التهديدات (TDS) Group-IB. احتوى المرفق على مستندات ثبتت عند إطلاقها برنامجًا ضارًا من عائلة Loki PWS (Password Stealer) ، مصممًا لسرقة تسجيلات الدخول وكلمات المرور من جهاز كمبيوتر مصاب. في المستقبل ، يمكن للمهاجمين استخدامها للوصول إلى حسابات البريد الإلكتروني للاحتيال المالي أو التجسس أو بيعها في منتديات المتسللين.



في هذه المقالة ، يفحص نيكيتا كاربوف ، المحلل في CERT-GIB ، مثيلًا لواحد من أكثر مخترقي البيانات شيوعًا الآن - Loki.



سننظر اليوم في أحد الإصدارات الشائعة من الروبوت - 1.8. يتم بيعه بنشاط ، ويمكن حتى العثور على لوحة الإدارة في المجال العام: هنا .



مثال على لوحة الإدارة:







تمت كتابة Loki بلغة C ++ وهي واحدة من أشهر البرامج الضارة المستخدمة لسرقة معلومات المستخدم من جهاز كمبيوتر مصاب. مثل بلاء عصرنا - فيروسات الفدية - يقوم Data Stealer ، بعد تعرضه للضرب على كمبيوتر الضحية ، بأداء المهمة بسرعة عالية جدًا - لا يحتاج إلى الحصول على موطئ قدم وزيادة امتيازاته في النظام ، فهو لا يترك أي وقت تقريبًا للدفاع ضد أي هجوم. لذلك ، في أحداث البرامج الضارة التي تسرق بيانات المستخدم ، يتم لعب الدور الرئيسي من خلال التحقيق في الحادث.



التفريغ والحصول على تفريغ برنامج ضار عملي



يتم التوزيع في معظم الحالات من خلال المرفقات في القوائم البريدية. يقوم المستخدم ، متنكرا كملف شرعي ، بتنزيل المرفق وفتحه ، ويطلق البرنامج الضار.



تشير علامة الحقن إلى وجود اللودر.





بمساعدة DIE نحصل على معلومات تفيد بأن الملف المصدر مكتوب في VB6.





يشير الرسم البياني الانتروبيا إلى كمية كبيرة من البيانات المشفرة.





عند إطلاق العملية الأولى ، تخلق العملية الفرعية ، وتحقنها وتخرج. العملية الثانية هي المسؤولة عن عمل البرمجيات الخبيثة. بعد فترة قصيرة من الوقت نوقف العملية ونحفظ تفريغ الذاكرة. للتأكد من وجود Loki داخل ملف التفريغ ، انظر داخل عنوان url لمركز الأوامر ، والذي ينتهي في معظم الحالات بـ fre.php .





نقوم بتفريغ جزء الذاكرة الذي يحتوي على Loki ونقوم بتصحيح رأس PE.



سوف نتحقق من أداء التفريغ باستخدام نظام TDS Huntbox.





وظائف البوت



في عملية فحص شفرة البرمجيات الخبيثة التي تم فك تشفيرها ، نجد جزءًا يحتوي على أربع وظائف تبدأ فورًا بعد تهيئة المكتبات اللازمة للعملية. بعد تفكيك كل منها بالداخل ، نحدد الغرض منها ووظائف برامجنا الضارة.





تمت إعادة تسمية أسماء الوظائف لتكون أكثر وصفية للراحة.

يتم تحديد وظيفة الروبوت من خلال وظيفتين رئيسيتين:



  1. Data Stealer هي الوظيفة الأولى المسؤولة عن سرقة البيانات من 101 تطبيقًا وإرسالها إلى الخادم.
  2. Downloader - طلب من أوامر CnC (الأمر والتحكم) للتنفيذ.


للراحة ، يسرد الجدول أدناه جميع التطبيقات التي يحاول مثيل Loki الذي يتم فحصه منه سرقة البيانات.

معرف الوظيفة تطبيق معرف الوظيفة تطبيق معرف الوظيفة تطبيق
1 موزيلا فايرفوكس 35 معلومات FTP 69 ClassicFTP
2 كومودو آيس دراغون 36 LinasFTP 70 PuTTY / KiTTY
3 أبل سفاري 37 فايلزيلا 71 ثندربيرد
4 K-Meleon 38 طاقم العمل- FTP 72 فوكسميل
خمسة قرد البحر 39 BlazeFtp 73 بوكومايل
6 قطيع 40 NETFile 74 إنكريديميل
7 NETGATE بلاك هوك 41 GoFTP 75 برنامج تنبيه Gmail المحترف
8 لوناسكيب 42 ALFTP 76 افحص البريد
تسع جوجل كروم 43 برنامج DeluxeFTP 77 WinFtp
عشرة أوبرا 44 القائد الكلي 78 مارتن بريكريل
أحد عشر متصفح QTWeb 45 FTP الحصول على 79 32 بت إف تي بي
12 QupZilla 46 WS_FTP 80 متصفح FTP
ثلاثة عشر متصفح الانترنت 47 ملفات تكوين عميل البريد 81 البريد

(softwarenetz)
أربعة عشرة أوبرا 2 48 لعبة البوكر Full Tilt 82 بريد أوبرا
خمسة عشر سايبرفوكس 49 بوكر ستارز 83 صندوق بريد
السادس عشر القمر الشاحب 50 اكسبان درايف 84 FossaMail
17 ووترفوكس 51 فرس 85 بيكي!
الثامنة عشر لغة مبسطة 52 برنامج FlashFXP 86 POP3
19 سوبربوتي 53 نوفافتب 87 الآفاق
20 FTPShell 54 NetDrive 88 Ymail2
21 NppFTP 55 قائد المجموع 2 89 تروجيتا
22 MyFTP 56 سمارت إف تي بي 90 TrulyMail
23 FTPBox 57 مدير FAR 91 ملفات spn
24 شيرود FTP 58 بيتفيز 92 قائمة المهام
25 FTP الآن 59 RealVNC

TightVNC
93 مثبتات
26 NexusFile 60 محفظة mSecure 94 ملحوظة
27 Xftp 61 سينكوفيري 95 نوت زيلا
28 EasyFTP 62 FreshFTP 96 ورق ملاحظات
29 SftpNetDrive 63 BitKinex 97 KeePass
ثلاثين AbleFTP 64 UltraFXP 98 Enpass
31 JaSFtp 65 FTP الآن 2 99 RoboForm الخاص بي
32 أتمتة 66 Vandyk SecureFX 100 1 كلمة المرور
33 سايبرداك 67 Odin Secure FTP Expert 101 برنامج Mikrotik WinBox
34 Fullsync 68 قذف
في هذه المرحلة ، يتم الانتهاء من التحليل الثابت للبرامج الضارة ، وفي القسم التالي سننظر في كيفية اتصال Loki بالخادم.



الشبكات



هناك مشكلتان يجب معالجتهما لتسجيل تفاعلات الشبكة:



  1. مركز القيادة متاح فقط وقت الهجوم.
  2. لا يسجل Wireshark اتصالات الروبوت في الاسترجاع ، لذلك تحتاج إلى استخدام وسائل أخرى.


أبسط حل هو إعادة توجيه عنوان CnC الذي سيتواصل Loki معه إلى المضيف المحلي. بالنسبة إلى الروبوت ، يتوفر الخادم الآن في أي وقت ، على الرغم من أنه لا يستجيب ، ولكن ليس من الضروري تسجيل اتصالات الروبوت. لحل المشكلة الثانية ، سنستخدم الأداة RawCap ، التي تسمح لنا بكتابة الاتصالات التي نحتاجها إلى pcap. بعد ذلك ، سنقوم بتحليل pcap المسجل في Wireshark.





قبل كل اتصال ، يتحقق الروبوت من توفر CnC ويفتح المقبس إذا كان متاحًا. تتم جميع اتصالات الشبكة على مستوى النقل باستخدام بروتوكول TCP ، وعلى مستوى التطبيق ، يتم استخدام HTTP.



يوضح الجدول أدناه رؤوس الحزم التي يستخدمها Loki كمعيار.

حقل القيمة وصف
وكيل المستخدم Mozilla / 4.08 (Charon؛ Inferno) وكيل مستخدم نموذجي لـ Loki
قبول * / *
نوع المحتوى التطبيق / الثماني تيار
ترميز المحتوى الثنائية
مفتاح المحتوى 7DE968CC نتيجة تجزئة للرؤوس السابقة (يتم التجزئة بواسطة خوارزمية CRC مخصصة مع كثير الحدود 0xE8677835)
الإتصال أغلق
دعنا ننتبه إلى جسم العبوة:



  1. تعتمد بنية البيانات المسجلة على إصدار الروبوت ، وفي الإصدارات السابقة لا توجد حقول مسؤولة عن خيارات التشفير والضغط.
  2. يحدد الخادم كيفية معالجة البيانات المستلمة حسب نوع الطلب. هناك 7 أنواع من البيانات يمكن للخادم قراءتها:

    • 0x26 بيانات المحفظة المسروقة
    • 0x27 بيانات التطبيق المسروقة
    • 0x28 طلب الأمر من الخادم
    • 0x29 تفريغ ملف مسروق
    • 0x2A نقاط البيع
    • 0x2B بيانات كلوغر
    • لقطة شاشة 0x2C
  3. في الحالة التي تم فحصها ، كانت 0x27 و 0x28 و 0x2B موجودة فقط.
  4. يحتوي كل طلب على معلومات عامة حول الروبوت والنظام المصاب ، والتي بموجبها يحدد الخادم جميع التقارير لجهاز واحد ، ثم هناك معلومات تعتمد على نوع الطلب.
  5. في أحدث إصدار من الروبوت ، يتم تنفيذ ضغط البيانات فقط ، ويتم إعداد الحقول المشفرة للمستقبل ولا تتم معالجتها بواسطة الخادم.
  6. تُستخدم مكتبة APLib مفتوحة المصدر لضغط البيانات.


عند تكوين طلب ببيانات مسروقة ، يخصص الروبوت مخزنًا مؤقتًا بحجم 0x1388 (5000 بايت). يظهر هيكل طلبات 0x27 في الجدول أدناه:

انحياز، نزعة الحجم القيمة وصف
0x0 0x2 0x0012 نسخة بوت
0x2 0x2 0x0027 نوع الطلب (إرسال بيانات مسروقة)
0x4 0xD ckav.ru المعرّف الثنائي (XXXXX11111 يحدث أيضًا)
0x11 0x10 - اسم المستخدم
0x21 0x12 - اسم الحاسوب
0x33 0x12 - اسم مجال الكمبيوتر
0x45 0x4 - دقة الشاشة (العرض والارتفاع)

0x49 0x4 -
0x4D 0x2 0x0001 علامة حقوق المستخدم (1 إذا كان المسؤول)
0x4F 0x2 0x0001 علم SID (1 إذا تم تعيينه)
0x51 0x2 0x0001 علم شاهد النظام (1 إذا كان x64)
0x53 0x2 0x0006 إصدار Windows (رقم الإصدار الرئيسي)
0x55 0x2 0x0001 إصدار Windows (رقم الإصدار الثانوي)
0x57 0x2 0x0001 معلومات النظام الإضافية (1 = VER_NT_WORKSTATION)
0x59 0x2 -
0x5B 0x2 0x0000 هل تم إرسال البيانات المسروقة
0x5D 0x2 0x0001 هل تم استخدام ضغط البيانات
0x5F 0x2 0x0000 نوع الضغط
0x61 0x2 0x0000 هل تم استخدام تشفير البيانات
0x63 0x2 0x0000 نوع التشفير
0x65 0x36 - MD5 من قيمة سجل MachineGuid
0x9B - - البيانات المضغوطة المسروقة
تبدأ المرحلة الثانية من التفاعل مع الخادم بعد أن تكون ثابتة في النظام. يرسل



الروبوت طلبًا من النوع 0x28 ، والذي يظهر هيكله أدناه: حجم المخزن المؤقت: 0x2BC (700 بايت)

انحياز، نزعة الحجم القيمة وصف
0x0 0x2 0x0012 نسخة بوت
0x2 0x2 0x0028 نوع الطلب (طلب أمر من مركز القيادة)
0x4 0xD ckav.ru المعرّف الثنائي (XXXXX11111 يحدث أيضًا)
0x11 0x10 - اسم المستخدم
0x21 0x12 - اسم الحاسوب
0x33 0x12 - اسم مجال الكمبيوتر
0x45 0x4 - دقة الشاشة (العرض والارتفاع)
0x49 0x4 -
0x4D 0x2 0x0001 علامة حقوق المستخدم (1 إذا كان المسؤول)
0x4F 0x2 0x0001 علم SID (1 إذا تم تعيينه)
0x51 0x2 0x0001 علم شاهد النظام (1 إذا كان x64)
0x53 0x2 0x0006 إصدار Windows (رقم الإصدار الرئيسي)
0x55 0x2 0x0001 إصدار Windows (رقم الإصدار الثانوي)
0x57 0x2 0x0001 معلومات النظام الإضافية (1 = VER_NT_WORKSTATION)
0x59 0x2 0xFED0
0x5B 0x36 - MD5 من قيمة سجل MachineGuid
بعد الطلب ، يتوقع الروبوت أن يتلقى استجابة من الخادم تحتوي على الرقم والأوامر نفسها. يتم الحصول على متغيرات الأوامر المحتملة باستخدام تحليل ثابت لرمز البرامج الضارة التي تم فك تشفيرها ويتم عرضها أدناه.



حجم المخزن المؤقت: 0x10 (16 بايت) + 0x10 (16 بايت) لكل أمر في الحزمة.

رأس HTTP (بداية البيانات) \ r \ n \ r \ n [0D 0A 0D 0A] 4 بايت
- - 4
2 [00 00 00 02] 4


4


4


4


4



()

#0

EXE-
[00 00 00 00] [00 00 00 00] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.exe
#1

DLL
[00 00 00 00] [00 00 00 01] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.dll
#2

EXE-
[00 00 00 00] [00 00 00 02] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.exe
#8

(HDB file)
[00 00 00 00] [00 00 00 08] [00 00 00 00] [00 00 00 00] -
#9

[00 00 00 00] [00 00 00 09] [00 00 00 00] [00 00 00 00] -
#10

[00 00 00 00] [00 00 00 0A] [00 00 00 00] [00 00 00 00] -
#14

Loki
[00 00 00 00] [00 00 00 0E] [00 00 00 00] [00 00 00 00] -
#15

Loki
[00 00 00 00] [00 00 00 0F] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.exe
# 16

تغيير وتيرة التحقق من الاستجابة من الخادم
[00 00 00 00] [00 00 00 10] [00 00 00 00] [00 00 00 01] خمسة
# 17

قم بإزالة Loki واستقال
[00 00 00 00] [00 00 00 11] [00 00 00 00] [00 00 00 00] -


محلل حركة مرور الشبكة



بفضل هذا التحليل ، لدينا كل المعلومات التي نحتاجها لتحليل تفاعلات شبكة Loki.



يتم تنفيذ المحلل اللغوي في Python ، ويتلقى ملف pcap كمدخل ويجد جميع الاتصالات الخاصة بـ Loki فيه.



أولاً ، دعنا نستخدم مكتبة dkpt للعثور على جميع حزم TCP. لتلقي حزم http فقط ، دعنا نضع مرشحًا على المنفذ المستخدم. من بين حزم http المستلمة ، نختار تلك التي تحتوي على رؤوس Loki المعروفة ، ونحصل على الاتصالات التي تحتاج إلى تحليل من أجل استخراج المعلومات منها في شكل قابل للقراءة.



for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    if not isinstance(eth.data, dpkt.ip.IP):
        ip = dpkt.ip.IP(buf)
    else:
        ip = eth.data
 
    if isinstance(ip.data, dpkt.tcp.TCP):
        tcp = ip.data
        try:
            if tcp.dport == 80 and len(tcp.data) > 0:  # HTTP REQUEST
                if str(tcp.data).find('POST') != -1:
                    http += 1
                    httpheader = tcp.data
                    continue
                else:
                    if httpheader != "":
                        print('Request information:')
 
                        pkt = httpheader + tcp.data
                        httpheader = ""
                        if debug:
                            print(pkt)
                        req += 1
                        request = dpkt.http.Request(pkt)
                        uri = request.headers['host'] + request.uri
                        parsed_payload['Network']['Source IP'] = socket.inet_ntoa(ip.src)
                        parsed_payload['Network']['Destination IP'] = socket.inet_ntoa(ip.dst)
                        parsed_payload_same['Network']['CnC'] = uri
                        parsed_payload['Network']['HTTP Method'] = request.method
 
                        if uri.find("fre.php"):
                            print("Loki detected!")
                        pt = parseLokicontent(tcp.data, debug)
                        parsed_payload_same['Malware Artifacts/IOCs']['User-Agent String'] = request.headers['user-agent']
 
                        print(json.dumps(parsed_payload, ensure_ascii=False, sort_keys=False, indent=4))
                        parsed_payload['Network'].clear()
                        parsed_payload['Compromised Host/User Data'].clear()
                        parsed_payload['Malware Artifacts/IOCs'].clear()
                        print("----------------------")
            if tcp.sport == 80 and len(tcp.data) > 0:  # HTTP RESPONCE
                resp += 1
                if pt == 40:
                    print('Responce information:')
                    parseC2commands(tcp.data, debug)
                    print("----------------------")
                    pt = 0
        except(dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError):
            continue


في جميع طلبات Loki ، تكون أول 4 بايتات مسؤولة عن إصدار الروبوت ونوع الطلب. باستخدام هاتين المعلمتين ، نحدد كيفية معالجة البيانات.



def parseLokicontent(data, debug):
    index = 0
 
    botV = int.from_bytes(data[0:2], byteorder=sys.byteorder)
    parsed_payload_same['Malware Artifacts/IOCs']['Loki-Bot Version'] =  botV
 
    payloadtype = int.from_bytes(data[2:4], byteorder=sys.byteorder)
    index = 4
    print("Payload type: : %s" % payloadtype)
    if payloadtype == 39:
        parsed_payload['Network']['Traffic Purpose'] =  "Exfiltrate Application/Credential Data"
        parse_type27(data, debug)
    elif payloadtype == 40:
        parsed_payload['Network']['Traffic Purpose'] = "Get C2 Commands"
        parse_type28(data, debug)
    elif payloadtype == 43:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Keylogger Data"
        parse_type2b(lb_payload)
    elif payloadtype == 38:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Cryptocurrency Wallet"
    elif payloadtype == 41:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Files"
    elif payloadtype == 42:
        parsed_payload['Network'].['Traffic Purpose'] = "Exfiltrate POS Data"
    elif payloadtype == 44:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Screenshots"
 
    return payloadtype


سيكون التالي في السطر هو تحليل الاستجابة من الخادم. لقراءة المعلومات المفيدة فقط ، ابحث عن التسلسل \ r \ n \ r \ n الذي يحدد نهاية رؤوس الحزم وبداية الأوامر من الملقم.



def parseC2commands(data, debug):
    word = 2
    dword = 4
    end = data.find(b'\r\n\r\n')
    if end != -1:
        index = end + 4
        if (str(data).find('<html>')) == -1:
            if debug:
                print(data)
            fullsize = getDWord(data, index)
            print("Body size: : %s" % fullsize)
            index += dword
            count = getDWord(data, index)
            print("Commands: : %s" % count)
            if count == 0:
                print('No commands received')
            else:
                index += dword
                for i in range(count):
                    print("Command: %s" % (i + 1))
 
                    id = getDWord(data, index)
                    print("Command ID: %s" % id)
                    index += dword
 
                    type = getDWord(data, index)
                    print("Command type: %s" % type)
                    index += dword
 
                    timelimit = getDWord(data, index)
                    print("Command timelimit: %s" % timelimit)
                    index += dword
 
                    datalen = getDWord(data, index)
                    index += dword
 
                    command_data = getString(data, index, datalen)
                    print("Command data: %s" % command_data)
                    index += datalen
        else:
            print('No commands received')
    return None


هذا ينهي تحليل الجزء الرئيسي من خوارزمية المحلل وينتقل إلى النتيجة التي نحصل عليها في الإخراج. يتم عرض جميع المعلومات بتنسيق json.



فيما يلي صور لنتيجة عمل المحلل اللغوي ، تم الحصول عليها من اتصالات مختلف الروبوتات ، مع CnC مختلفة ومسجلة في بيئات مختلفة.



Request information:
Loki detected!
Payload type: 39
Decompressed data: 
{'Module': {'Mozilla Firefox'}, 'Version': {0}, 'Data': {'domain': {'https://accounts.google.com'}, 'username': {'none@gmail.com'}, 'password': {'test'}}}
{'Module': {'NppFTP'}, 'Version': {0}, 'Data': {b'<?xml version="1.0" encoding="UTF-8" ?>\r\n<NppFTP defaultCache="%CONFIGDIR%\\Cache\\%USERNAME%@%HOSTNAME%" outputShown="0" windowRatio="0.5" clearCache="0" clearCachePermanent="0">\r\n    <Profiles />\r\n</NppFTP>\r\n'}}
{
    "Network": {
        "Source IP": "-",
        "Destination IP": "185.141.27.187",
        "HTTP Method": "POST",
        "Traffic Purpose": "Exfiltrate Application/Credential Data",
        "First Transmission": true
    },
    "Compromised Host/User Data": {},
    "Malware Artifacts/IOCs": {}
}


أعلاه هو مثال لطلب الخادم 0x27 (تحميل بيانات التطبيق). للاختبار ، تم إنشاء الحسابات في ثلاثة تطبيقات: Mozilla Firefox و NppFTP و FileZilla. لدى Loki ثلاثة خيارات لتسجيل بيانات التطبيق:



  1. كقاعدة بيانات SQL (يحفظ المحلل اللغوي قاعدة البيانات ويعرض جميع الصفوف المتوفرة فيها).
  2. في شكل مفتوح ، كما في Firefox في المثال.
  3. كملف xml مثل NppFTP و FileZilla.


Request information:
Loki detected!
Payload type: 39
No data stolen
{
    "Network": {
        "Source IP": "-",
        "Destination IP": "185.141.27.187",
        "HTTP Method": "POST",
        "Traffic Purpose": "Exfiltrate Application/Credential Data",
        "First Transmission": false
    },
    "Compromised Host/User Data": {},
    "Malware Artifacts/IOCs": {}
}


الطلب الثاني من النوع 0x28 ويطلب أوامر من الخادم.



Responce information:
Body size: 26
Commands: 1
Command: 1
Command ID: 0
Command type: 9
Command timelimit: 0
Command data: 35


مثال على استجابة من CnC ، والتي أرسلت أمرًا واحدًا لبدء تشغيل برنامج تسجيل المفاتيح. والتفريغ اللاحق لبيانات راصد لوحة المفاتيح.



Request information:
Loki detected!
Payload type: : 43
{
    "Network": {
        "Source IP": "-",
        "Destination IP": "185.141.27.187",
        "HTTP Method": "POST",
        "Traffic Purpose": "Exfiltrate Keylogger Data"
    },
    "Compromised Host/User Data": {},
    "Malware Artifacts/IOCs": {}
}


في نهاية العمل ، يقوم المحلل اللغوي بطباعة المعلومات الواردة في كل طلب من الروبوت (معلومات حول الروبوت والنظام) ، وعدد الطلبات والاستجابات المرتبطة بـ Loki في ملف pcap.



General information:
{
    "Network": {
        "CnC": "nganyin-my.com/chief6/five/fre.php"
    },
    "Compromised Host/User Description": {
        "User Name": "-",
        "Hostname": "-",
        "Domain Hostname": "-",
        "Screen Resolution": "1024x768",
        "Local Admin": true,
        "Built-In Admin": true,
        "64bit OS": false,
        "Operating System": "Windows 7 Workstation"
    },
    "Malware Artifacts/IOCs": {
        "Loki-Bot Version": 18,
        "Binary ID": "ckav.ru",
        "MD5 from GUID": "-",
        "User-Agent String": "Mozilla/4.08 (Charon; Inferno)"
    }
}
Requests: 3
Responces: 3 




كود المحلل اللغوي الكامل متاح على: github.com/Group-IB/LokiParser



خاتمة



في هذه المقالة ، ألقينا نظرة فاحصة على برامج Loki الضارة وفككنا وظائفها ونفذنا محللًا لحركة مرور الشبكة من شأنه تبسيط عملية تحليل الحوادث بشكل كبير ومساعدتنا على فهم ما سُرق بالضبط من الكمبيوتر المصاب. بينما لا يزال تطوير Loki مستمرًا ، تم دمج الإصدار 1.8 (والإصدارات الأقدم) فقط ، وهو الإصدار الذي يواجهه محترفو الأمان كل يوم.



في المقالة التالية ، سنقوم بتحليل سارق بيانات آخر شهير ، المهر ، ومقارنة هذه البرامج الضارة.



مؤشر التسوية (IOCs):



عناوين URL:



  • nganyin-my.com/chief6/five/fre.php
  • Wardia.com.pe/wp-includes/texts/five/fre.php
  • break2.cf/Work2/fre.php
  • 185.141.27.187/danielsden/ver.php
  • تجزئة MD5: B0C33B1EF30110C424BABD66126017E5
  • User-Agent String: «Mozilla/4.08 (Charon; Inferno)»
  • Binary ID: «ckav.ru»



All Articles