Overview

This is a trash rat that started as an open source project but has since been adopted for various campaigns, both ecrime and espionage (lol).

References

Analysis

C2 Decryption

import base64
from Crypto.Cipher import AES
from Crypto.Util import Padding
import hashlib

data = b'At2C9Qk3d7SA7+3KqcaDzAGk3UjkKgbD1CC2tXzgWnvXISV8gQCyC4DHdLLTVSy/'
key = b'20.199.13.167'



m = hashlib.md5()
m.update(key)
hex_key = m.digest()

full_key = hex_key[:15] + hex_key + b'\x00'

data_raw = base64.b64decode(data)

cipher = AES.new(full_key, AES.MODE_ECB)
tmp_out = cipher.decrypt(data_raw)
out = Padding.unpad(tmp_out, block_size=AES.block_size, style='pkcs7')
print(out)
b'https://pastebin.com/raw/sxNJt2ek'
def decrypt(data, key):
    m = hashlib.md5()
    m.update(key)
    hex_key = m.digest()

    full_key = hex_key[:15] + hex_key + b'\x00'
    
    try:
        data_raw = base64.b64decode(data)
        cipher = AES.new(full_key, AES.MODE_ECB)
        tmp_out = cipher.decrypt(data_raw)
        out = Padding.unpad(tmp_out, block_size=AES.block_size, style='pkcs7')
    except:
        return None
    return out

Identify and Extract Config

We know that the config data is stored as some strings in a .cctor we can target this programmatically.

import re
import struct
from dnfile import dnPE
from dnfile.mdtable import MethodDefRow

import dnfile
from dnfile.enums import MetadataTables

from dncil.cil.body import CilMethodBody
from dncil.cil.error import MethodBodyFormatError
from dncil.clr.token import Token, StringToken, InvalidToken
from dncil.cil.body.reader import CilMethodBodyReaderBase



class DnfileMethodBodyReader(CilMethodBodyReaderBase):
    def __init__(self, pe, row):
        """ """
        self.pe = pe
        self.offset = self.pe.get_offset_from_rva(row.Rva)

    def read(self, n):
        """ """
        data = self.pe.get_data(self.pe.get_rva_from_offset(self.offset), n)
        self.offset += n
        return data

    def tell(self):
        """ """
        return self.offset

    def seek(self, offset):
        """ """
        self.offset = offset
        return self.offset

    
class DnfileParse():
    DOTNET_META_TABLES_BY_INDEX = {table.value: table.name for table in MetadataTables}
    
    @staticmethod
    def read_dotnet_user_string(pe, token):
        """read user string from #US stream"""
        try:
            user_string = pe.net.user_strings.get_us(token.rid)
        except UnicodeDecodeError as e:
            return InvalidToken(token.value)

        if user_string is None:
            return InvalidToken(token.value)

        return user_string.value

    @staticmethod
    def resolve_token(pe, token):
        """ """
        if isinstance(token, StringToken):
            return DnfileParse.read_dotnet_user_string(pe, token)

        table_name = DnfileParse.DOTNET_META_TABLES_BY_INDEX.get(token.table, "")
        if not table_name:
            # table_index is not valid
            return InvalidToken(token.value)

        table = getattr(pe.net.mdtables, table_name, None)
        if table is None:
            # table index is valid but table is not present
            return InvalidToken(token.value)

        try:
            return table.rows[token.rid - 1]
        except IndexError:
            # table index is valid but row index is not valid
            return InvalidToken(token.value)

    @staticmethod
    def read_method_body(pe, row):
        """ """
        return CilMethodBody(DnfileMethodBodyReader(pe, row))

    @staticmethod
    def format_operand(pe, operand):
        """ """
        if isinstance(operand, Token):
            operand = DnfileParse.resolve_token(pe, operand)

        if isinstance(operand, str):
            return f'"{operand}"'
        elif isinstance(operand, int):
            return hex(operand)
        elif isinstance(operand, list):
            return f"[{', '.join(['({:04X})'.format(x) for x in operand])}]"
        elif isinstance(operand, dnfile.mdtable.MemberRefRow):
            if isinstance(operand.Class.row, (dnfile.mdtable.TypeRefRow,)):
                return f"{str(operand.Class.row.TypeNamespace)}.{operand.Class.row.TypeName}::{operand.Name}"
        elif isinstance(operand, dnfile.mdtable.TypeRefRow):
            return f"{str(operand.TypeNamespace)}.{operand.TypeName}"
        elif isinstance(operand, (dnfile.mdtable.FieldRow, dnfile.mdtable.MethodDefRow)):
            return f"{operand.Name}"
        elif operand is None:
            return ""

        return str(operand)

    @staticmethod
    def get_instruction_text(pe, insn):
        return "{:04X}".format(insn.offset) \
                + "    " \
                + f"{' '.join('{:02x}'.format(b) for b in insn.get_bytes()) : <20}" \
                + f"{str(insn.opcode) : <15}" \
                + DnfileParse.format_operand(pe, insn.operand)
file_data = open('/tmp/old.bin','rb').read()

pe = dnfile.dnPE(data=file_data)

def ctor_hunt(pe):
    for row in pe.net.mdtables.MethodDef:

        if not row.ImplFlags.miIL or any((row.Flags.mdAbstract, row.Flags.mdPinvokeImpl)):
            # skip methods that do not have a method body
            continue

        try:
            body = DnfileParse.read_method_body(pe, row)
        except MethodBodyFormatError as e:
            print(e)
            continue

        if not body.instructions:
            continue

        if 'ctor' not in row.Name:
            continue 

        if len(body.instructions) < 30:
            continue

        arr_data = None
        print('\n\n\n')
        ldstr_count = 0
        for ptr in range(0,len(body.instructions)):
            insn = body.instructions[ptr]
            insn_text = DnfileParse.get_instruction_text(pe, insn)
            print(insn_text)
            if str(insn.opcode) == 'ldstr':
                ldstr_count += 1
            print(f"ldstr count: {ldstr_count}")
        raw_config = {}
        config_ptr = 0
        if ldstr_count == 15:
            # Found our config!
            for ptr in range(0,len(body.instructions)):
                insn = body.instructions[ptr]
                if str(insn.opcode) == 'ldstr':
                    raw_config[config_ptr] = DnfileParse.resolve_token(pe, insn.operand)
                    config_ptr += 1
            break
    return raw_config
        
            
            
            
raw_config = ctor_hunt(pe)



1100    72 81 05 00 70      ldstr          "At2C9Qk3d7SA7+3KqcaDzAGk3UjkKgbD1CC2tXzgWnvXISV8gQCyC4DHdLLTVSy/"
ldstr count: 1
1105    80 08 00 00 04      stsfld         澤她顧程孫她成接司成生希為
ldstr count: 1
110A    72 04 06 00 70      ldstr          "20.199.13.167"
ldstr count: 2
110F    80 0b 00 00 04      stsfld         的敬人繼孫生人
ldstr count: 2
1114    72 20 06 00 70      ldstr          "|'N'|"
ldstr count: 3
1119    80 0c 00 00 04      stsfld         行顧家將命成使太顧
ldstr count: 3
111E    72 2c 06 00 70      ldstr          "|'L'|"
ldstr count: 4
1123    80 0d 00 00 04      stsfld         人法顧執首接
ldstr count: 4
1128    72 38 06 00 70      ldstr          "checker netflix.exe"
ldstr count: 5
112D    80 0e 00 00 04      stsfld         人子導顧成的的的司法受
ldstr count: 5
1132    72 60 06 00 70      ldstr          "True"
ldstr count: 6
1137    28 79 00 00 0a      call           Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean
ldstr count: 6
113C    80 10 00 00 04      stsfld         澤金的的程導敬顧的法太商接
ldstr count: 6
1141    72 60 06 00 70      ldstr          "True"
ldstr count: 7
1146    28 79 00 00 0a      call           Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean
ldstr count: 7
114B    80 11 00 00 04      stsfld         顧敬生尊行為程是的為孫行合顧
ldstr count: 7
1150    72 60 06 00 70      ldstr          "True"
ldstr count: 8
1155    28 79 00 00 0a      call           Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean
ldstr count: 8
115A    80 12 00 00 04      stsfld         公成的繼程望行尊首澤的引將
ldstr count: 8
115F    72 60 06 00 70      ldstr          "True"
ldstr count: 9
1164    28 79 00 00 0a      call           Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean
ldstr count: 9
1169    80 13 00 00 04      stsfld         商城顧她首她希執引行
ldstr count: 9
116E    72 6a 06 00 70      ldstr          "AppData"
ldstr count: 10
1173    80 14 00 00 04      stsfld         的人命的行
ldstr count: 10
1178    72 7a 06 00 70      ldstr          "\"
ldstr count: 11
117D    80 15 00 00 04      stsfld         人承官顧首官希顧公家家席太
ldstr count: 11
1182    7e 14 00 00 04      ldsfld         的人命的行
ldstr count: 11
1187    28 7a 00 00 0a      call           Microsoft.VisualBasic.Interaction::Environ
ldstr count: 11
118C    7e 15 00 00 04      ldsfld         人承官顧首官希顧公家家席太
ldstr count: 11
1191    7e 0e 00 00 04      ldsfld         人子導顧成的的的司法受
ldstr count: 11
1196    28 51 00 00 0a      call           System.String::Concat
ldstr count: 11
119B    80 16 00 00 04      stsfld         城管將的引為
ldstr count: 11
11A0    72 7e 06 00 70      ldstr          "86hac88hN1LipZ8Pzugfp65vMuPzKdYQudAKeKsjzU4RKRtTSSRSzZDNech2VwKy6yEPu8XZGYDsEd51M3vBG6ozAUqPpk3"
ldstr count: 12
11A5    80 17 00 00 04      stsfld         顧法接的為承的太她管商的的
ldstr count: 12
11AA    72 60 06 00 70      ldstr          "True"
ldstr count: 13
11AF    28 79 00 00 0a      call           Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean
ldstr count: 13
11B4    80 18 00 00 04      stsfld         人官的敬受
ldstr count: 13
11B9    72 7f 00 00 70      ldstr          ""
ldstr count: 14
11BE    80 19 00 00 04      stsfld         人顧希太顧的的
ldstr count: 14
11C3    72 75 05 00 70      ldstr          "3"
ldstr count: 15
11C8    28 7b 00 00 0a      call           Microsoft.VisualBasic.CompilerServices.Conversions::ToInteger
ldstr count: 15
11CD    80 1a 00 00 04      stsfld         行玉的澤她敬孫程合的太顧顧
ldstr count: 15
11D2    2a                  ret            
ldstr count: 15
# Public Shared HOST As String 'IP
# Public Shared PORT As Integer 'PORT
# Public Shared EncryptionKey As String = "NYANCAT" 'encryption/decryption key
# Public Shared ENDOF As String = "|'N'|" 'endof
# Public Shared SPL As String = "|'L'|" 'split data
# Public Shared EXE As String = "CLIENT.exe" 'client drop name
# Public Shared MTX As Threading.Mutex
# Public Shared USB As Boolean = False 'usb spread
# Public Shared PIN As Boolean = False 'pin spread
# Public Shared ANTI As Boolean = False 'anti virtual machines
# Public Shared DROP As Boolean = False 'drop and install client
# Public Shared PATH1 As String = "Temp" 'Main Folder
# Public Shared PATH2 As String = "\Lime\" 'Sub Folder
# Public Shared fullpath = Environ(PATH1) & PATH2 & EXE
# Public Shared BTC_ADDR As String = "THIS IS YOUR BTC 1234567890" 'Bitcoin address
# Public Shared DWN_CHK As Boolean = True 'downloader once
# Public Shared DWN_LINK As String = "" 'downloader link
# Public Shared Delay As Integer = "3" 'Delay AKA Sleep

config_enum = {'pastebin':0,
                'key':1,
                'endof':2,
                'split_data':3,
                'client_drop_name':4,
                'usb_spread':5,
                'pin_spread':6,
                'anti_virtual_machines':7,
                'drop_and_install_client':8,
                'main_folder':9,
                'sub_folder':10,
                'bitcoin_address':11,
                'downloader_once':12,
                'download_link':13,
                'sleep':14 }


pastebin_url = decrypt(raw_config[config_enum['pastebin']].encode('utf-8'), raw_config[config_enum['key']].encode('utf-8'))
pastebin_url
b'https://pastebin.com/raw/sxNJt2ek'
def get_config_data(pe):
    for row in pe.net.mdtables.MethodDef:

        if not row.ImplFlags.miIL or any((row.Flags.mdAbstract, row.Flags.mdPinvokeImpl)):
            # skip methods that do not have a method body
            continue

        try:
            body = DnfileParse.read_method_body(pe, row)
        except MethodBodyFormatError as e:
            print(e)
            continue

        if not body.instructions:
            continue

        if 'ctor' not in row.Name:
            continue 

        if len(body.instructions) < 30:
            continue

        arr_data = None
        #print('\n\n\n')
        ldstr_count = 0
        for ptr in range(0,len(body.instructions)):
            insn = body.instructions[ptr]
            insn_text = DnfileParse.get_instruction_text(pe, insn)
            #print(insn_text)
            if str(insn.opcode) == 'ldstr':
                ldstr_count += 1
            #print(f"ldstr count: {ldstr_count}")
        raw_config = {}
        config_ptr = 0
        if ldstr_count == 15:
            # Found our config!
            for ptr in range(0,len(body.instructions)):
                insn = body.instructions[ptr]
                if str(insn.opcode) == 'ldstr':
                    raw_config[config_ptr] = DnfileParse.resolve_token(pe, insn.operand)
                    config_ptr += 1
            break
    return raw_config
def print_config(file_path):
    file_data = open(file_path,'rb').read()
    pe = dnfile.dnPE(data=file_data)
    raw_config = get_config_data(pe)
    pastebin_url = decrypt(raw_config[config_enum['pastebin']].encode('utf-8'), raw_config[config_enum['key']].encode('utf-8'))
    print(f"c2: {pastebin_url}")
    for k,v in config_enum.items():
        if v > 1:
            print(f"{k}: {raw_config[v]}")


print_config('/tmp/new.bin')
c2: b'https://pastebin.com/raw/bCzwnKS8'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3
import os
# assign directory
directory = '/tmp/limes/'
 
# iterate over files in
# that directory
for filename in os.listdir(directory):
    f = os.path.join(directory, filename)
    # checking if it is a file
    if os.path.isfile(f):
        print("\n\n\n")
        print(f)
        try:
            print_config(f)
        except:
            print("failed!")



/tmp/limes/851266da3ffdf9c37b139611382b30710ab960b761125cdde6cba1eeaebf24e1
failed!




/tmp/limes/a716b5f8a785fdbd248b36963d8a797083bf9d05dc4ae50b10536dbca81f4301
c2: b'https://pastebin.com/raw/CWD9meJm'
endof: |'N'|
split_data: |'L'|
client_drop_name: winIogon.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: True
main_folder: AppData
sub_folder: \Local\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/945b71b62abed5c7bca32598ce35d828e6519a87611e22d8bafdbd8580b88926
c2: b'https://pastebin.com/sprwUYBJ'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: True
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/4f35e245a543eb6888dd7d2d3cd32be839d7925b857d78d3721999c383bb9dbd
c2: b'https://pastebin.com/raw/bCzwnKS8'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/73411e00e99670eeceaac740f8f8c5e2f72ddf6a2b50dcab3a801780ba5fc3de
c2: b'https://pastebin.com/raw/CY4BZ4Z0'
endof: |'N'|
split_data: |'L'|
client_drop_name: Grand Theft Auto VI.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: True
main_folder: UserProfile
sub_folder: \/\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/228d45f589db33d9f9afb5fe00f1c0dca51227c1b255d34fe3b9068ce82a47d4
c2: b'https://pastebin.com/raw/3YAbmSCc'
endof: |'N'|
split_data: |'L'|
client_drop_name: AudioDriver.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: False
drop_and_install_client: True
main_folder: UserProfile
sub_folder: \Windows\
bitcoin_address: 31u93LeqAjhmu48kA6JYNVSyGshBNvnqNS
downloader_once: False
download_link: 
sleep: 6




/tmp/limes/1ac44eda1cc529647ffc10722a39e11da7c0cc9cff19b773a3af07f4baf7d664
c2: b'https://pastebin.com/raw/BhUB9EXY'
endof: |'N'|
split_data: |'L'|
client_drop_name: scvhost.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: True
main_folder: UserProfile
sub_folder: \scvhostLog\
bitcoin_address: bc1q233hm2e03j09e5zy52zqzt0sh7temfq9h4t3cl
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/a707faf1eae81e0d6e764c40b8b4d78b902e99a93b76eacc35f46fc50047563c
c2: b'https://pastebin.com/raw/Kvy6HPa4'
endof: |'N'|
split_data: |'L'|
client_drop_name: winlogon.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: True
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: True
download_link: ApplictionFramework.exe
sleep: 3




/tmp/limes/6d08ed6acac230f41d9d6fe2a26245eeaf08c84bc7a66fddc764d82d6786d334
c2: b'https://pastebin.com/raw/sxNJt2ek'
endof: |'N'|
split_data: |'L'|
client_drop_name: checker netflix.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: True
main_folder: AppData
sub_folder: \
bitcoin_address: 86hac88hN1LipZ8Pzugfp65vMuPzKdYQudAKeKsjzU4RKRtTSSRSzZDNech2VwKy6yEPu8XZGYDsEd51M3vBG6ozAUqPpk3
downloader_once: True
download_link: 
sleep: 3




/tmp/limes/52a19a9b1fc41e58aa0ffeda8e9711b1c424c58825b084a4a9a378854318920f
c2: b'https://pastebin.com/raw/hkXuRtp9'
endof: |'N'|
split_data: |'L'|
client_drop_name: OverTheCounter.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: True
main_folder: Temp
sub_folder: \otc\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/67578152293ecb30216bf496ff017d37ca4982705dcebd0eb1337c8ef7643c09
c2: b'https://pastebin.com/raw/H6K0uUqr'
endof: |'N'|
split_data: |'L'|
client_drop_name: Dork searcher gold.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: True
main_folder: AppData
sub_folder: \
bitcoin_address: 1Jyrji1JwM6wcv9w6E7GWRUfBt8VyAu6g1
downloader_once: True
download_link: 
sleep: 3




/tmp/limes/8f7d77448048b69eb7ca9e33f365bb93f33e56e4d83eaba4828891ac6a21a785
c2: b'https://pastebin.com/raw/DDTVwwbu'
endof: |'N'|
split_data: |'L'|
client_drop_name: Better-Discord.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: True
main_folder: Temp
sub_folder: \BDiscord\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/e47ebff8db8445fac5e5cfa3a9cf5f3543907ac8d47066a2cbd80c00be10749d
c2: b'https://pastebin.com/raw/H6K0uUqr'
endof: |'N'|
split_data: |'L'|
client_drop_name: Dork searcher gold.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: True
main_folder: AppData
sub_folder: \
bitcoin_address: 1Jyrji1JwM6wcv9w6E7GWRUfBt8VyAu6g1
downloader_once: True
download_link: 
sleep: 3




/tmp/limes/1b1e7ddd338756c95cbe0e05241230f32c0341cba76dad9042777a23971694ae
c2: b'https://pastebin.com/raw/RPvdzvf9'
endof: |'N'|
split_data: |'L'|
client_drop_name: Lol.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: True
main_folder: AppData
sub_folder: \Discrd\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/8fc718a75777a80722b50ad6fef3306078e900bbc872bb664a197884721294f0
c2: b'http://pastebin.pl/view/raw/0755aad0'
endof: |'N'|
split_data: |'L'|
client_drop_name: MicrosoftUpdater.tft.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: False
main_folder: UserProfile
sub_folder: \.Temp\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/e360c69993aeff3cece090d1ac380c5da51739c4f2a19a0870dde8541afdeb3c
failed!




/tmp/limes/fd3a5396eaa4725e9e17e35ef05fd34f0762a2f04fb302c43bb7052e53ab5ad6
c2: b'https://pastebin.com/raw/hq1MSJc0'
endof: |'N'|
split_data: |'L'|
client_drop_name: FLOPPA.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: True
main_folder: UserProfile
sub_folder: \FLopping\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/024cce95a63124cd3cbfe3f21fbacf8437fd288717fce379006064aa2a97641e
c2: b'https://pastebin.com/raw/LJe9sUk5'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: True
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 1B5aLZh6psoQttLGn9tpbdibiWqzyh4Jfv
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/d1e23942effbdf831fb99ceb19495a5338fbcf2872a6782c58b184b4b2b33c4d
c2: b'https://pastebin.com/raw/upsAbbQq'
endof: |'N'|
split_data: |'L'|
client_drop_name: File.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: True
main_folder: AppData
sub_folder: \System\
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/6c7bdaff20d493e728807b64e7730f8a3bc54653a21b28a10f0537ebd3d2c5c5
c2: b'https://pastebin.com/raw/Tb0DZ8Ap'
endof: |'N'|
split_data: |'L'|
client_drop_name: TESTE.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: False
main_folder: AppData
sub_folder: \
bitcoin_address: 
downloader_once: True
download_link: 
sleep: 3




/tmp/limes/9449691939856bd53ccb28071c5fec85da01ba6e113e9088f545857171b5f7a3
c2: b'https://pastebin.com/raw/nW4J6TiP'
endof: |'N'|
split_data: |'L'|
client_drop_name: windowsdefender.exe
usb_spread: True
pin_spread: False
anti_virtual_machines: True
drop_and_install_client: True
main_folder: AppData
sub_folder: \
bitcoin_address: 13WHQ6XEobZYNAjHZPJHkDuzMS8TpgkRqm
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/6d28fe68df58ab9121992fdcfba660bac50108c9ea9fd786a8dc3611b4f60289
c2: b'https://pastebin.com/raw/rTiY1HLu'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: False
pin_spread: False
anti_virtual_machines: False
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/ee31fd6498e39135434c49e6102c3115b88ef1f3c3fae5aed967c29742a624e0
c2: b'https://pastebin.com/raw/DDTVwwbu'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/64bf83c64990339c6965d052d2bdc40deb827b534a0cb7f36634c64f83baec40
failed!




/tmp/limes/a408402de01a362f79a9a1676ca13407756a7c0fd3b39497bae20374da34a066
c2: b'https://pastebin.com/raw/DDTVwwbu'
endof: |'N'|
split_data: |'L'|
client_drop_name: Wservices.exe
usb_spread: True
pin_spread: True
anti_virtual_machines: True
drop_and_install_client: False
main_folder: Temp
sub_folder: \
bitcoin_address: 
downloader_once: False
download_link: 
sleep: 3




/tmp/limes/1e278a4faa45fb13694135a4fcec2ea9e7e136cac23900eb631cd50888f22325
c2: b'https://pastebin.com/raw/cXuQ0V20'
endof: |'N'|
split_data: |'L'|
client_drop_name: Winservices.exe
usb_spread: True
pin_spread: False
anti_virtual_machines: True
drop_and_install_client: False
main_folder: AppData
sub_folder: \
bitcoin_address: 1JBKLGyE6AnRGvk92A8x3m8qmXfh3fcEty
downloader_once: False
download_link: 
sleep: 3