Analysis Report

MAR-10292089-1.v2 – Chinese Remote Access Trojan: TAIDOOR

Last Revised
Alert Code
AR20-216A

Notification

This report is provided "as is" for informational purposes only. The Department of Homeland Security (DHS) does not provide any warranties of any kind regarding any information contained herein. The DHS does not endorse any commercial product or service referenced in this bulletin or otherwise.

This document is marked TLP:WHITE--Disclosure is not limited. Sources may use TLP:WHITE when information carries minimal or no foreseeable risk of misuse, in accordance with applicable rules and procedures for public release. Subject to standard copyright rules, TLP:WHITE information may be distributed without restriction. For more information on the Traffic Light Protocol (TLP), see http://www.us-cert.gov/tlp.

Summary

Description

This Malware Analysis Report (MAR) is the result of analytic efforts between the Cybersecurity and Infrastructure Security Agency (CISA), the Federal Bureau of Investigation (FBI), and the Department of Defense (DoD). Working with U.S. Government partners, CISA, FBI, and DoD identified a malware variant used by Chinese government cyber actors, which is known as TAIDOOR. For more information on Chinese malicious cyber activity, please visit https[:]//www[.]us-cert.gov/china.



FBI has high confidence that Chinese government actors are using malware variants in conjunction with proxy servers to maintain a presence on victim networks and to further network exploitation. CISA, FBI, and DoD are distributing this MAR to enable network defense and reduce exposure to Chinese government malicious cyber activity.



This MAR includes suggested response actions and recommended mitigation techniques. Users or administrators should flag activity associated with the malware and report the activity to the Cybersecurity and Infrastructure Security Agency (CISA) or the FBI Cyber Watch (CyWatch), and give the activity the highest priority for enhanced mitigation.



Malicious binaries identified as a x86 and x64 version of Taidoor were submitted for analysis. Taidoor is installed on a target’s system as a service dynamic link library (DLL) and is comprised of two files. The first file is a loader, which is started as a service. The loader decrypts the second file, and executes it in memory, which is the main Remote Access Trojan (RAT).

For a downloadable copy of IOCs, see MAR-10292089-1.v2.stix.

Submitted Files (4)

0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686 (svchost.dll)

363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90 (svchost.dll)

4a0688baf9661d3737ee82f8992a0a665732c91704f28688f643115648c107d4 (ml.dll)

6e6d3a831c03b09d9e4a54859329fbfd428083f8f5bc5f27abbfdd9c47ec0e57 (rasautoex.dll)

Domains (2)

cnaweb.mrslove.com

infonew.dubya.net

IPs (1)

210.68.69.82

Findings

4a0688baf9661d3737ee82f8992a0a665732c91704f28688f643115648c107d4

Tags

backdoorloadertrojan

Details
Name ml.dll
Size 43520 bytes
Type PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
MD5 6aa08fed32263c052006d977a124ed7b
SHA1 9a6795333e3352b56a8fd506e463ef634b7636d2
SHA256 4a0688baf9661d3737ee82f8992a0a665732c91704f28688f643115648c107d4
SHA512 179e9d9ccbc268cc94a7f6d31f29cf0f7a163db829a4557865f3c1f98614f94ceb7b90273d33eb49ef569cfc9013b76c7de32d7511639a7ab2c352f3137d51b6
ssdeep 768:uGRVnBnwS5kBKsl4anxKFhx3W3kGmifmUED7Bn5f6dBywFmZb:fDeSnbx3okvxVwFI
Entropy 5.864467
Antivirus
Ahnlab Trojan/Win32.Agent
Avira TR/Agent.aavma
BitDefender Trojan.GenericKD.34284857
ClamAV Win.Packer.Taidoor-9209869-0
Comodo Malware
Cyren W32/Trojan.DRSK-8300
ESET a variant of Win32/Agent.ACFH trojan
Emsisoft Trojan.GenericKD.34284857 (B)
Ikarus Trojan.Win32.Agent
K7 Trojan ( 0056be3e1 )
Lavasoft Trojan.GenericKD.34284857
McAfee RDN/Generic trojan.ks
Microsoft Security Essentials Trojan:Win32/Taidoor.DA!MTB
NANOAV Trojan.Win32.Dllhijacker.hqfyaa
Quick Heal Trojan.Taidoor.S15351536
Sophos Mal/Taidoor-A
Symantec Trojan Horse
Systweak trojan-backdoor.taidoor
TrendMicro Trojan.2826E77D
TrendMicro House Call Trojan.2826E77D
VirusBlokAda Trojan.Dllhijacker
Zillya! Trojan.Agent.Win32.1363180
YARA Rules

No matches found.

ssdeep Matches

No matches found.

PE Metadata
Compile Date 2019-01-03 07:16:12-05:00
Import Hash dbb469cb14550e6085a14b4b2d41ede9
PE Sections
MD5 Name Raw Size Entropy
62ab3bae7859f6f6dc68366d283ad53e header 1024 2.511204
63550f7c47453c2809834382e228637d .text 23040 6.442964
a30bb3ac9b6694a8980c39c0267c9a83 .rdata 11264 4.926331
ad5814673b8579de78be5b6b929d2405 .data 3072 2.629944
619ecca9c8d1073a0b90f5fffac42ec8 .rsrc 512 5.105029
0f292021853e7ca76c4196bcbe9afdaf .reloc 4608 3.712197
Packers/Compilers/Cryptors
Microsoft Visual C++ DLL *sign by CodeRipper
Relationships
4a0688baf9... Used 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
Description

This file is a 32-bit Windows DLL file. The file “ml.dll” is a Taidoor loader. The file utilizes the export function called “MyStart” to decrypt and load “svchost.dll” (8CF683B7D181591B91E145985F32664C), which was identified as Taidoor malware. Taidoor is a traditional RAT.



The “MyStart” function looks for the file name “svchost.dll” in its running directory. If that file is located, the DLL will read “svchost.dll” into memory. After the file is read into memory, the DLL uses a RC4 encryption algorithm to decrypt the contents of the file. The RC4 key used for decryption is, “ar1z7d6556sAyAXtUQc2”.



After the loader has finished decrypting “svchost.dll”, the loader now has a decrypted version of Taidoor, which is a DLL. The loader then uses the API calls GetProcessHeap, GetProcAddress, and LoadLibrary to load the following DLLs, KERNEL32.dll, ADVAPI32.dll, and WS2_32.dll, which Taidoor will utilize.



Next, the loader looks for the export “Start” in the Taidoor DLL and executes that function.

363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90

Tags

remote-access-trojantrojan

Details
Name svchost.dll
Size 158208 bytes
Type data
MD5 8cf683b7d181591b91e145985f32664c
SHA1 f0a20aaf4d2598be043469b69075c00236b7a89a
SHA256 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
SHA512 b75401d591caee812c5c1a669ce03c47f78f1c40a2fa31cf58a0318ffbfc032b82cb1b6d2a599ce1b3547be5a404f55212156640b095f895a9aac3c58ec4bad8
ssdeep 3072:fRxYk0d5+6/kdGyfitoxNsUZE2XZ+4Duz6fCKmjjwF5PaT:JqkoiGiZxE4qRKqgIT
Entropy 7.998691
Antivirus
Ahnlab Data/BIN.EncPe
Antiy Trojan/Win32.Taidoor
Avira TR/Taidoor.BD
BitDefender Trojan.Agent.EUMT
ClamAV Win.Packed.Taidoor-9209834-1
Cyren W32/Taidoor.A.enc!Camelot
Emsisoft Trojan.Agent.EUMT (B)
Ikarus Trojan.Win32.Taidoor
Lavasoft Trojan.Agent.EUMT
McAfee Trojan-Taidoor
Microsoft Security Essentials Trojan:Win32/Taidoor.DC!MTB
Sophos Troj/Taidoor-A
Symantec Trojan Horse
TrendMicro Backdoo.7F53B305
TrendMicro House Call Backdoo.7F53B305
Zillya! Trojan.Taidoor.Win32.6
YARA Rules
  • rule CISA_10292089_01 : rat loader TAIDOOR

    {

       meta:

           Author = "CISA Code & Media Analysis"

           Incident = "10292089"

           Date = "2020-06-18"    

           Last_Modified = "20200616_1530"

           Actor = "n/a"

           Category = "Trojan Loader Rat"

           Family = "TAIDOOR"

           Description = "Detects Taidoor Rat Loader samples"

           MD5_1 = "8cf683b7d181591b91e145985f32664c"

           SHA256_1 = "363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90"

           MD5_2 = "6627918d989bd7d15ef0724362b67edd"

           SHA256_2 = "0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686"

       strings:

           $s0 = { 8A 46 01 88 86 00 01 00 00 8A 46 03 88 86 01 01 00 00 8A 46 05 88 86 02 01 00 00 8A 46 07 88 86 03 01 00 00 }

           $s1 = { 88 04 30 40 3D 00 01 00 00 7C F5 }

           $s2 = { 0F BE 04 31 0F BE 4C 31 01 2B C3 2B CB C1 E0 04 0B C1 }

           $s3 = { 8A 43 01 48 8B 6C 24 60 88 83 00 01 00 00 8A 43 03 }

           $s4 = { 88 83 01 01 00 00 8A 43 05 88 83 02 01 00 00 8A 43 07 88 83 03 01 00 00 }

           $s5 = { 41 0F BE 14 7C 83 C2 80 41 0F BE 44 7C 01 83 C0 80 C1 E2 04 0B D0 }

           $s6 = { 5A 05 B2 CB E7 45 9D C2 1D 60 F0 4C 04 01 43 85 3B F9 8B 7E }

       condition:

           ($s0 and $s1 and $s2) or ($s3 and $s4 and $s5) or ($s6)

    }
ssdeep Matches

No matches found.

Relationships
363ea096a3... Used_By 4a0688baf9661d3737ee82f8992a0a665732c91704f28688f643115648c107d4
363ea096a3... Connected_To cnaweb.mrslove.com
363ea096a3... Connected_To 210.68.69.82
Description

This encrypted file has been identified as the Taidoor RAT loaded by “ml.dll” (6AA08FED32263C052006D977A124ED7B). After the loader has finished decrypting this file, the loader has a decrypted version of Taidoor, which is a DLL. The loader then uses the API calls GetProcessHeap, GetProcAddress, and LoadLibrary to load the following DLLs, KERNEL32.dll, ADVAPI32.dll, and WS2_32.dll, which this file will utilize.



Next, the loader “ml.dll” (6AA08FED32263C052006D977A124ED7B) looks for the export “Start” in the Taidoor DLL and executes that function. Taidoor’s “Start” function kicks off by decrypting a multitude of import strings that it will use to dynamically import functions from the DLLs that have been loaded. A complex stream cipher is used to decrypt the encrypted strings utilized by this malware. The 85 strings include APIs and strings used by other structures, such as a structure capable of allowing the malware to load external plugin payloads. The malware utilizes the following 7-byte key to generate a 256-byte initial stream cipher value: “19 34 F4 D2 E9 B3 0F”.



Next, the algorithm pads the 256 initial cipher value out to 260 bytes utilizing 4-bytes already contained within the 256-byte block (Figure 2). The algorithm performs the encryption 2-bytes at a time from the encrypted string blocks. It compresses the 2-bytes into 1 byte before the decryption process by subtracting the first byte and second byte by 0x80h. The result of the performing the subtraction on the first byte is then shifted left by four. Both values are then added together by using Boolean addition (OR) resulting in a single byte that is decrypted by the cipher.



Using a simple Exclusive OR (XOR) operation, the 260-byte block is shuffled and modified to produce the byte that is used to decrypt the newly compressed byte. The byte being decrypted is then placed back into the 260-byte cipher block buffer. This effectively produces a recurrent block shifting effect where the 260-byte cipher block value changes as a result of the sequence of bytes it receives. This is an effective method of thwarting heuristic or brute force attacks.



Taidoor also uses the AES algorithm to decrypt a "1616 byte" configuration file. This configuration file contains the command and control (C2) servers and possibly another encryption key used later. The AES key used in hex is, “2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C” IV: “00”.



--Begin C2--

cnaweb.mrslove.com

210.68.69.82

--End C2--



After completing this decryption function Taidoor iterates through the System Event Log. Looking specifically for event IDs 6005 (event service started) and 6006 (event service stopped). After completing its decryption functions, Taidoor tries to connect to its C2 server. Once Taidoor and the C2 server finish the TCP handshake, Taidoor waits for at least one byte of data to be sent from the C2 server. This byte or bytes are not checked by Taidoo, anything can be sent.



After Taidoor has confirmed it has received at least one byte of data form the server, Taidoor sends a custom formatted packet over port 443. Note: this packet does not follow TLS protocol, and is easily identifiable. The initial packet sent from Taidoor to the C2 server in this case always starts with “F::” followed by the encryption key that Taidoor, and the C2 server will use to encrypt all following communications.



After sending the encryption key to the C2 server, Taidoor expects the server to respond with “200 OK\r\n\r\n”. Note: This response is over port 443, but is not encrypted, it is sent in clear text.



After Taidoor has successfully connected to its C2, it creates a Windows INI configuration file, and copies cmd.exe into the system temp folder.



--Begin Windows INI file created--

C:\ProgramData\Microsoft\~svc_.TMp

--End Windows INI file created--



--Begin contents of INI file--

[Micros]

source=c:\temp\cmd.exe

--End contents of INI file--



Note: Taidoor does not have a function built it that enables it to persist past a system reboot. It appears from the memory dump of the infected system, it was installed as a service DLL by some other means.



The malware author never removed the symbol file for the “ml.dll” build. This artifact provides additional information that the malware author intended this binary to do, “DllHijackPlushInject”.



--Begin symbol file artifact--

c:\Users\user\Desktop\DllHijackPlushInject\version\Release\MemoryLoad.pdb

--End symbol file artifact--



The following IDA script can be used to decrypt all the encrypted strings and demonstrate how a sequence of bytes is encrypted utilizing the initial 260 byte cipher block generated from the key value “19 34 F4 D2 E9 B3 0F”:



--Begin IDA script--

import os

import sys

import idaapi

cwd = os.getcwd()

cwd = '/Users/terminator/PycharmProjects/rc4_test//'

cipherblock = []

pb_fname = cwd + "//" + 'pristine_block.bin'

es_fname = cwd + "//" + 'encrypted_strings.bin'

secure_strings_func = 0x10003cb7

encrypted_strings_block = 0x1001c434

enc_string_size = 2875

global_decrypted_stringz = []

try:

fh = open(pb_fname, 'rb')

read_bitez = fh.read()

fh.close()

except Exception as e:

print("Couldnt read filename. Reading from code (Attempt)")

print("Cipher Block len: " + str(len(cipherblock)))

for idx in read_bitez: # convert them to ords to do the math!

idx = ord(idx)

cipherblock.append(idx)

def decrypt(encrypted_string, cipherblock): # **CALL THIS FUNC to decrypt stuff!

string_len = len(encrypted_string)

string_len = string_len / 2

throttle = 0

da_string = ""

while True:

cipherblock, decoded_byte = decrypt_it(cipherblock, encrypted_string, throttle)

try:

charr = chr(decoded_byte)

if throttle:

da_string += charr

except Exception as e:

pass

throttle += 1 # INCREMENT before doing the compare

if throttle == string_len:

global_decrypted_stringz.append(da_string)

return da_string

def decrypt_it(cipherblock, encoded_data, throttle):

ebx = 128 # *0x80

ecx = throttle

ecx = ecx + ecx

eax = encoded_data[ecx]

ecx = encoded_data[ecx + 1]

eax = eax - ebx

ecx = ecx - ebx

eax = eax << 4

eax = eax | ecx

cipherblock, decoded_byte = outter_shuffle_func(cipherblock, eax)

return cipherblock, decoded_byte

def outter_shuffle_func(cipherblock, encoded_bite):

# before inner func

cipherblock = inner_shuffle_func(cipherblock)

# after inner func

eax = cipherblock[258]

ecx = cipherblock[eax]

eax = cipherblock[260]

eax = cipherblock[eax]

edx = cipherblock[257]

edi = cipherblock[256]

edx = cipherblock[edx]

edi = cipherblock[edi]

ecx = eax + ecx

eax = cipherblock[259]

eax = cipherblock[eax]

ecx = eax + ecx

eax = 255

ecx = ecx & eax

ecx = cipherblock[ecx]

cl = cipherblock[ecx]

edx = edx + edi

edx = edx & eax

cl = cipherblock[edx] ^ cl # **actual manipulation here

al = encoded_bite

cl = cl ^ al

cipherblock[260] = al

cipherblock[259] = cl

al = cl

decoded_byte = al

return cipherblock, decoded_byte

def wrap_around_strip(da_byte):

da_byte_str = str(hex(da_byte))

da_byte_str = da_byte_str.split("x")

da_byte_str = da_byte_str[1]

str_length = len(da_byte_str)

if str_length > 2:

got_em = "0x"

got_em += da_byte_str[str_length - 2]

got_em += da_byte_str[str_length - 1]

got_em = int(got_em, 16)

return got_em

return da_byte

def add_bites(a, b):

for_return = a + b

for_return = wrap_around_strip(for_return)

return for_return

def inner_shuffle_func(cipherblock_orig): # *SHUFFLE The cipher block here!

cipherblock = []

for idx in cipherblock_orig: # lets make a copy!

cipherblock.append(idx)

al = cipherblock[256]

esi = cipherblock[260]

dl = cipherblock[esi]

al = al & 0xffffff

edi = al

bl = cipherblock[edi]

da_byte = cipherblock[257]

da_byte = add_bites(da_byte, bl)

cipherblock[257] = da_byte

al += 1

cipherblock[256] = al

eax = cipherblock[257]

al = cipherblock[eax]

cipherblock[esi] = al

esi = cipherblock[259]

bl = cipherblock[esi]

edi = cipherblock[257]

cipherblock[edi] = bl

esi = cipherblock[256]

eax = cipherblock[259]

bl = cipherblock[esi]

cipherblock[eax] = bl

eax = cipherblock[256]

cipherblock[eax] = dl

eax = dl

al = cipherblock[eax]

temp_byte = cipherblock[258]

temp_byte = add_bites(temp_byte, al)

cipherblock[258] = temp_byte

return cipherblock

def decode_from_addr(target_addr, label_loc, pointer_addr, label_them):

init_bitez = []

ord_bitez = []

while True:

temp_bite = idaapi.get_byte(target_addr)

if not temp_bite:

break

init_bitez.append(temp_bite)

target_addr += 1

for idx in init_bitez:

ord_bitez.append(idx)

cipher_block_copy = []

for idx in cipherblock:

cipher_block_copy.append(idx)

dec_string = decrypt(ord_bitez, cipher_block_copy)

if label_them:

SetColor(label_loc, CIC_ITEM, 0xc7c7ff)

MakeComm(label_loc, dec_string)

SetColor(pointer_addr, CIC_ITEM, 0xc7c7ff)

MakeComm(pointer_addr, dec_string)

print(dec_string)

def find_initial_loc(target_addr):

addr = target_addr

give_up = 5

attempts = 0

while True:

addr = idc.PrevHead(addr)

if GetMnem(addr) == "push" and "off_" in GetOpnd(addr, 0):

string_addr = GetOperandValue(addr, 0)

print("Found String Loc: " + str(hex(string_addr)))

pointer_addr = idaapi.get_dword(string_addr)

print(hex(pointer_addr))

decode_from_addr(pointer_addr, addr, string_addr, 1)

return string_addr

attempts += 1

if attempts == give_up:

return 0

enc_stringz_data = []

try:

fh = open(es_fname)

da_data = fh.read()

fh.close()

for idx in da_data:

x = ord(idx)

enc_stringz_data.append(x)

except Exception as e:

print("Couldnt read encrypted strings file. Reading from Malware!")

addr_throttle = encrypted_strings_block

while len(enc_stringz_data) < enc_string_size:

x = idaapi.get_byte(addr_throttle)

enc_stringz_data.append(x)

encrypted_stringz = [] # *list of lists

temp_string = []

for idx in enc_stringz_data:

if idx:

temp_string.append(idx)

if not idx:

if len(temp_string):

encrypted_stringz.append(temp_string)

temp_string = []

decrypted_stringz = []

debug_it = False

if debug_it:

for enc_string in encrypted_stringz:

cipher_block_copy = []

for idx in cipherblock:

cipher_block_copy.append(idx)

dec_string = decrypt(enc_string, cipher_block_copy)

decrypted_stringz.append(dec_string)

print("----------------------")

for idx in decrypted_stringz:

print(idx)

print("Complete")

addresses_to = []

for addr in XrefsTo(secure_strings_func):

print("---------")

print(hex(addr.frm))

find_initial_loc(addr.frm)

print("---------")

print("\n")

addresses_to.append(addr.frm)

print("IDA IDB Labeled. Decrypted Strings Below:")

print("-----------------------------")

for idx in global_decrypted_stringz:

print idx

--End IDA script--



String decrypted by the IDA script are displayed below:



--Begin decrypted strings--

kernel32.dll

InitializeCriticalSection

GetLocalTime

LeaveCriticalSection

GetModuleFileNameA

Sleep

ExpandEnvironmentStringsA

GetSystemTime

SystemTimeToFileTime

GetTickCount

CreatePipe

DuplicateHandle

GetCurrentProcess

DisconnectNamedPipe

TerminateProcess

PeekNamedPipe

ReadFile

CreateFileA

SetFileTime

OpenProcess

GetFileTime

WaitForSingleObject

WriteFile

DeleteFileA

GetCurrentProcessId

GetAdaptersInfo

advapi32.dll

RegOpenKeyExA

RegQueryValueExA

RegCloseKey

OpenEventLogA

ReadEventLogA

CloseEventLog

RegDeleteValueA

RegCreateKeyExA

RegNotifyChangeKeyValue

Can't open update file.

File too small.

SOFTWARE\Microsoft\Windows NT\CurrentVersion

RValue

SOFTWARE\Microsoft\Windows NT\CurrentVersion

RValue

%temp%\~lpz.zp

Can't find plug file

Can't find plug file

Can't load more plug

Load Dll Plug Failed

%s\uaq*.dll

\services.exe

Create File Failed

Create File Failed

rundll32.exe

SOFTWARE\Microsoft\Windows NT\CurrentVersion

RValue

RValue

%SystemRoot%\system32\cmd.exe

source

Micros

CmdPage

InfoPage

cmd.exe

source

Micros

avp.exe

shell process Terminated

ReadShellThread closed

Create result file failed

Create result file failed

CreateProcess Error: %d

CreateProcess Error: %d

CreateProcess succ

Open file Failed

File Size is 0

Open file Failed

Create File Failed

Create File Failed

no shell

\services.exe

200

F::

200 OK

--End decrypted strings--

Screenshots

Figure 1 - Screenshot of the following strings that are used as imports.

Figure 2 - Screenshot of the complex stream cipher padding the initial cipher value.

Figure 3 - Screenshot of the complex steam cipher compressing 2-bytes into 1-byte.

cnaweb.mrslove.com

Tags

command-and-control

Ports
  • 443 TCP
Whois

Queried whois.publicdomainregistry.com with "mrslove.com"...



Domain Name: MRSLOVE.COM

Registry Domain ID: 70192241_DOMAIN_COM-VRSN

Registrar WHOIS Server: whois.publicdomainregistry.com

Registrar URL: www.publicdomainregistry.com

Updated Date: 2020-02-26T08:01:27Z

Creation Date: 2001-05-02T02:10:12Z

Registrar Registration Expiration Date: 2021-05-02T02:10:12Z

Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com

Registrar IANA ID: 303

Domain Status: OK https://icann.org/epp#OK

Registry Registrant ID: Not Available From Registry

Registrant Name: changeip operations

Registrant Organization: changeip.com

Registrant Street: 1200 brickell ave

Registrant City: miami

Registrant State/Province: florida

Registrant Postal Code: 33131

Registrant Country: US

Registrant Phone: +1.800791337

Registrant Phone Ext:

Registrant Fax:

Registrant Fax Ext:

Registrant Email: noc@changeip.com

Registry Admin ID: Not Available From Registry

Admin Name: changeip operations

Admin Organization: changeip.com

Admin Street: 1200 brickell ave

Admin City: miami

Admin State/Province: florida

Admin Postal Code: 33131

Admin Country: US

Admin Phone: +1.800791337

Admin Phone Ext:

Admin Fax:

Admin Fax Ext:

Admin Email: noc@changeip.com

Registry Tech ID: Not Available From Registry

Tech Name: changeip operations

Tech Organization: changeip.com

Tech Street: 1200 brickell ave

Tech City: miami

Tech State/Province: florida

Tech Postal Code: 33131

Tech Country: US

Tech Phone: +1.800791337

Tech Phone Ext:

Tech Fax:

Tech Fax Ext:

Tech Email: noc@changeip.com

Name Server: ns1.changeip.com

Name Server: ns2.changeip.com

Name Server: ns3.changeip.com

Name Server: ns4.changeip.com

Name Server: ns5.changeip.com

DNSSEC: Unsigned

Registrar Abuse Contact Email: abuse-contact@publicdomainregistry.com

Registrar Abuse Contact Phone: +1.2013775952

URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/

Relationships
cnaweb.mrslove.com Connected_From 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
Description

svchost.dll (8cf683b7d181591b91e145985f32664c) attempts to connect to the following domain.

210.68.69.82

Tags

command-and-control

Ports
  • 443 TCP
Whois

Queried whois.apnic.net with "210.68.69.82"...



% Information related to '210.68.0.0 - 210.68.255.255'



% Abuse contact for '210.68.0.0 - 210.68.255.255' is 'hostmaster@twnic.net.tw'



inetnum:        210.68.0.0 - 210.68.255.255

netname:        SEEDNET

descr:         Digital United Inc.

descr:         9F, No. 125, Song Jiang Road

descr:         Taipei, Taiwan

country:        TW

admin-c:        JC256-AP

tech-c:         JC256-AP

mnt-by:         MAINT-TW-TWNIC

mnt-irt:        IRT-TWNIC-AP

status:         ALLOCATED PORTABLE

last-modified: 2018-12-12T06:04:02Z

source:         APNIC



irt:            IRT-TWNIC-AP

address:        Taipei, Taiwan, 100

e-mail:         hostmaster@twnic.net.tw

abuse-mailbox: hostmaster@twnic.net.tw

admin-c:        TWA2-AP

tech-c:         TWA2-AP

auth:         # Filtered

remarks:        Please note that TWNIC is not an ISP and is not empowered

remarks:        to investigate complaints of network abuse.

mnt-by:         MAINT-TW-TWNIC

last-modified: 2015-10-08T07:58:24Z

source:         APNIC



person:         Jonas Chou

nic-hdl:        JC256-AP

e-mail:         Jonaschou@fareastone.com.tw

address:        2F, No.218, Rueiguang Road

address:        Taipei, 114, R.O.C

phone:         +886-2-7700-8888

fax-no:         +886-2-7700-8888

country:        TW

mnt-by:         MAINT-TW-TWNIC

last-modified: 2012-12-18T10:10:01Z

source:         APNIC



% Information related to '210.68.69.80 - 210.68.69.87'



inetnum:        210.68.69.80 - 210.68.69.87

netname:        42888423-TW

descr:         Taipei Taiwan

country:        TW

admin-c:        NN3251-TW

tech-c:         NN3251-TW

mnt-by:         MAINT-TW-TWNIC

remarks:        This information has been partially mirrored by APNIC from

remarks:        TWNIC. To obtain more specific information, please use the

remarks:        TWNIC whois server at whois.twnic.net.

changed:        DavidLin1@fareastone.com.tw 20180330

status:         ASSIGNED NON-PORTABLE

source:         TWNIC



person:         NULL

address:        N/A Taiwan

country:        TW

e-mail:         joy25488@gmail.com

nic-hdl:        NN3251-TW

changed:        hostmaster@twnic.net.tw 20180331

source:         TWNIC



% This query was served by the APNIC Whois Service version 1.88.15-SNAPSHOT (WHOIS-US4)

Relationships
210.68.69.82 Connected_From 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
Description

svchost.dll (8cf683b7d181591b91e145985f32664c) attempts to connect to the following IP address.

6e6d3a831c03b09d9e4a54859329fbfd428083f8f5bc5f27abbfdd9c47ec0e57

Tags

loadertrojan

Details
Name rasautoex.dll
Size 50176 bytes
Type PE32+ executable (DLL) (GUI) x86-64, for MS Windows
MD5 4ec8e16d426a4aaa57c454c58f447c1e
SHA1 5c89629e5873072a9ca3956b67cf7b5080312c80
SHA256 6e6d3a831c03b09d9e4a54859329fbfd428083f8f5bc5f27abbfdd9c47ec0e57
SHA512 284e0dff33f4ffb6d55f2fdb1de81d5644fb2671aa358dfb72b34a50632f708b7b071202202efec0b48bc0f622c6947f8ccf0818ebaff7277eda854cee67eeaa
ssdeep 768:DN5oCkAI3effi5djegTXLzAl78S3ge0eYUi3EaQkDdXptOKeosAmMotwEX1:DN5oCk1eyTXn+qXUi3pptJMwE
Entropy 5.681253
Antivirus
Ahnlab Trojan/Win64.Loader
Avira TR/Agent.ojanf
BitDefender Trojan.GenericKD.34284956
ClamAV Win.Packer.Taidoor-9209869-0
Comodo Malware
Cyren W64/Kryptik.AVM
ESET a variant of Win64/Agent.ACK trojan
Emsisoft Trojan.GenericKD.34284956 (B)
Ikarus Trojan.Win64.Agent
K7 Trojan ( 0056be3d1 )
Lavasoft Trojan.GenericKD.34284956
McAfee RDN/Generic trojan.ks
Microsoft Security Essentials Trojan:Win32/Taidoor.DA!MTB
NANOAV Trojan.Win64.Mlw.hqmqtg
Quick Heal Trojan.Taidoor.S15351536
Sophos Mal/Taidoor-A
Symantec Trojan Horse
TACHYON Trojan/W64.Dllhijacker.50176
TrendMicro Trojan.161033AF
TrendMicro House Call Trojan.161033AF
VirusBlokAda Trojan.Win64.Dllhijacker
Zillya! Trojan.Agent.Win64.5841
YARA Rules

No matches found.

ssdeep Matches

No matches found.

PE Metadata
Compile Date 2019-01-04 02:11:55-05:00
Import Hash 956b48719c7be61f48572c8fa464e00c
PE Sections
MD5 Name Raw Size Entropy
a9b389fc8171131551c6570d2395de57 header 1024 2.619293
8dabe7bfc2ee6b9819f554b2694c98eb .text 26624 6.217867
8e63e6b885c3d270ccfb7607b9662601 .rdata 14848 4.618383
d44f2a519c2649244a8c87581872b483 .data 4096 2.280898
0aa4114597794059e1d4a2c246c7d7a5 .pdata 2048 4.331432
7197f896bddfd6e434b1d5703bf0c5a2 .rsrc 512 5.097979
54bb45b94c64d3717b1be8194fb4a6a7 .reloc 1024 3.689756
Description

This file is a 64-bit Windows DLL file. The file "rasautoex.dll" is a Taidoor loader and will decrypt and execute the 64-bit version of Taidoor “svchost.dll" (6627918d989bd7d15ef0724362b67edd) in memory.

0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686

Tags

remote-access-trojantrojan

Details
Name svchost.dll
Size 183808 bytes
Type data
MD5 6627918d989bd7d15ef0724362b67edd
SHA1 21e29034538bb4e3bc922149ef4312b90b6b4ea3
SHA256 0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686
SHA512 83ee751b15d8fd8477b8ecf8d33a4faf30b75aceb90c0e58ebf9dbbfc1d354f7e772f126b8462fd5897a4015a6f5e324d34900ff7319e8cc791fb239ca603ddc
ssdeep 3072:7PR4kaQOrd41zdruwiAyr/Ta1XxKH3zVrWvcfWslmOLdXFKY8SIMjUPpF5:3aQLgwiAyr/TiXxMsvcrxbnjUPP5
Entropy 7.999011
Antivirus
Ahnlab Data/BIN.EncPe
Antiy Trojan/Win32.Taidoor
Avira TR/Taidoor.AO
BitDefender Trojan.Agent.EUMT
ClamAV Win.Malware.Agent-9376986-0
Cyren W32/Taidoor.A.enc!Camelot
Emsisoft Trojan.Agent.EUMT (B)
Ikarus Trojan.Win32.Taidoor
Lavasoft Trojan.Agent.EUMT
McAfee Trojan-Taidoor
Microsoft Security Essentials Trojan:Win32/Taidoor.DB!MTB
Sophos Troj/Taidoor-A
Symantec Trojan Horse
TrendMicro Backdoo.4FA5823A
TrendMicro House Call Backdoo.4FA5823A
YARA Rules
  • rule CISA_10292089_01 : rat loader TAIDOOR

    {

       meta:

           Author = "CISA Code & Media Analysis"

           Incident = "10292089"

           Date = "2020-06-18"    

           Last_Modified = "20200616_1530"

           Actor = "n/a"

           Category = "Trojan Loader Rat"

           Family = "TAIDOOR"

           Description = "Detects Taidoor Rat Loader samples"

           MD5_1 = "8cf683b7d181591b91e145985f32664c"

           SHA256_1 = "363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90"

           MD5_2 = "6627918d989bd7d15ef0724362b67edd"

           SHA256_2 = "0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686"

       strings:

           $s0 = { 8A 46 01 88 86 00 01 00 00 8A 46 03 88 86 01 01 00 00 8A 46 05 88 86 02 01 00 00 8A 46 07 88 86 03 01 00 00 }

           $s1 = { 88 04 30 40 3D 00 01 00 00 7C F5 }

           $s2 = { 0F BE 04 31 0F BE 4C 31 01 2B C3 2B CB C1 E0 04 0B C1 }

           $s3 = { 8A 43 01 48 8B 6C 24 60 88 83 00 01 00 00 8A 43 03 }

           $s4 = { 88 83 01 01 00 00 8A 43 05 88 83 02 01 00 00 8A 43 07 88 83 03 01 00 00 }

           $s5 = { 41 0F BE 14 7C 83 C2 80 41 0F BE 44 7C 01 83 C0 80 C1 E2 04 0B D0 }

           $s6 = { 5A 05 B2 CB E7 45 9D C2 1D 60 F0 4C 04 01 43 85 3B F9 8B 7E }

       condition:

           ($s0 and $s1 and $s2) or ($s3 and $s4 and $s5) or ($s6)

    }
ssdeep Matches

No matches found.

Relationships
0d0ccfe7cd... Connected_To infonew.dubya.net
Description

This encrypted file has been identified as the Taidoor RAT loaded by “rasautoex.dll" (4ec8e16d426a4aaa57c454c58f447c1e). This file contains the same functionality and encryption keys as the 32-bit version “svchost.dll” (8CF683B7D181591B91E145985F32664C).



This file calls out to a different C2. This C2 was also observed in memory of the infected system provided for analysis.



--Begin C2--

infonew.dubya.net

--End C2--



The malware author never removed the symbol file for “rasautoex.dll” as with the 32-bit version. However, this artifact provides some additional information that the malware author intended this binary to do, “MemLoad(pass symantec)”.



--Begin symbol file artifact--

C:\Users\user\Desktop\MemLoad(pass symantec)\version\x64\Release\MemoryLoad.pdb

--End symbol file artifact--

infonew.dubya.net

Tags

command-and-control

Whois

Queried whois.publicdomainregistry.com with "dubya.net"...



Domain Name: DUBYA.NET

Registry Domain ID: 1861808123_DOMAIN_NET-VRSN

Registrar WHOIS Server: whois.publicdomainregistry.com

Registrar URL: www.publicdomainregistry.com

Updated Date: 2020-04-02T07:01:52Z

Creation Date: 2014-06-06T17:44:43Z

Registrar Registration Expiration Date: 2021-06-06T17:44:43Z

Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com

Registrar IANA ID: 303

Domain Status: OK https://icann.org/epp#OK

Registry Registrant ID: Not Available From Registry

Registrant Name: changeip operations

Registrant Organization: changeip.com

Registrant Street: 1200 brickell ave

Registrant City: miami

Registrant State/Province: florida

Registrant Postal Code: 33131

Registrant Country: US

Registrant Phone: +1.800791337

Registrant Phone Ext:

Registrant Fax:

Registrant Fax Ext:

Registrant Email: noc@changeip.com

Registry Admin ID: Not Available From Registry

Admin Name: changeip operations

Admin Organization: changeip.com

Admin Street: 1200 brickell ave

Admin City: miami

Admin State/Province: florida

Admin Postal Code: 33131

Admin Country: US

Admin Phone: +1.800791337

Admin Phone Ext:

Admin Fax:

Admin Fax Ext:

Admin Email: noc@changeip.com

Registry Tech ID: Not Available From Registry

Tech Name: changeip operations

Tech Organization: changeip.com

Tech Street: 1200 brickell ave

Tech City: miami

Tech State/Province: florida

Tech Postal Code: 33131

Tech Country: US

Tech Phone: +1.800791337

Tech Phone Ext:

Tech Fax:

Tech Fax Ext:

Tech Email: noc@changeip.com

Name Server: ns1.changeip.com

Name Server: ns2.changeip.com

Name Server: ns3.changeip.com

Name Server: ns4.changeip.com

Name Server: ns5.changeip.com

DNSSEC: Unsigned

Registrar Abuse Contact Email: abuse-contact@publicdomainregistry.com

Registrar Abuse Contact Phone: +1.2013775952

URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/

Relationships
infonew.dubya.net Connected_From 0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686
Description

svchost.dll (6627918d989bd7d15ef0724362b67edd) attempts to connect to the following domain.

Relationship Summary

4a0688baf9... Used 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
363ea096a3... Used_By 4a0688baf9661d3737ee82f8992a0a665732c91704f28688f643115648c107d4
363ea096a3... Connected_To cnaweb.mrslove.com
363ea096a3... Connected_To 210.68.69.82
cnaweb.mrslove.com Connected_From 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
210.68.69.82 Connected_From 363ea096a3f6d06d56dc97ff1618607d462f366139df70c88310bbf77b9f9f90
0d0ccfe7cd... Connected_To infonew.dubya.net
infonew.dubya.net Connected_From 0d0ccfe7cd476e2e2498b854cef2e6f959df817e52924b3a8bcdae7a8faaa686

Mitigation

alert tcp 210.68.69.82 any <> $HOME_NET any (msg:" Malicious traffic "; sid:#########; rev:1; classtype:tcp‐event;)



alert tcp 156.238.3.162 any <> $HOME_NET any (msg:"Malicious traffic"; sid:#########; rev:1; classtype:tcp‐event;)



alert udp any any 53 <> $HOME_NET any (msg:"Attempt to connect to malicious domain"; content:"|03|www|07|infonew|05|dubya|03|net|00|"; sid:#########; rev:1;)



alert udp any any 53 <> $HOME_NET any (msg:"Attempt to connect to malicious domain"; content:"|03|www|06|cnaweb|07|mrslove|03|com|00|"; sid:#########; rev:1;)



Note: At the time of analysis, one of the domains resolved to the IP address 156.238.3.162.

Recommendations

CISA recommends that users and administrators consider using the following best practices to strengthen the security posture of their organization's systems. Any configuration changes should be reviewed by system owners and administrators prior to implementation to avoid unwanted impacts.

  • Maintain up-to-date antivirus signatures and engines.
  • Keep operating system patches up-to-date.
  • Disable File and Printer sharing services. If these services are required, use strong passwords or Active Directory authentication.
  • Restrict users' ability (permissions) to install and run unwanted software applications. Do not add users to the local administrators group unless required.
  • Enforce a strong password policy and implement regular password changes.
  • Exercise caution when opening e-mail attachments even if the attachment is expected and the sender appears to be known.
  • Enable a personal firewall on agency workstations, configured to deny unsolicited connection requests.
  • Disable unnecessary services on agency workstations and servers.
  • Scan for and remove suspicious e-mail attachments; ensure the scanned attachment is its "true file type" (i.e., the extension matches the file header).
  • Monitor users' web browsing habits; restrict access to sites with unfavorable content.
  • Exercise caution when using removable media (e.g., USB thumb drives, external drives, CDs, etc.).
  • Scan all software downloaded from the Internet prior to executing.
  • Maintain situational awareness of the latest threats and implement appropriate Access Control Lists (ACLs).

Additional information on malware incident prevention and handling can be found in National Institute of Standards and Technology (NIST) Special Publication 800-83, "Guide to Malware Incident Prevention & Handling for Desktops and Laptops".

Contact Information

CISA continuously strives to improve its products and services. You can help by answering a very short series of questions about this product at the following URL: https://www.cisa.gov/forms/feedback/

Document FAQ

What is a MIFR? A Malware Initial Findings Report (MIFR) is intended to provide organizations with malware analysis in a timely manner. In most instances this report will provide initial indicators for computer and network defense. To request additional analysis, please contact CISA and provide information regarding the level of desired analysis.

What is a MAR? A Malware Analysis Report (MAR) is intended to provide organizations with more detailed malware analysis acquired via manual reverse engineering. To request additional analysis, please contact CISA and provide information regarding the level of desired analysis.

Can I edit this document? This document is not to be edited in any way by recipients. All comments or questions related to this document should be directed to the CISA at 1-888-282-0870 or CISA Central.

Can I submit malware to CISA? Malware samples can be submitted via three methods:

CISA encourages you to report any suspicious activity, including cybersecurity incidents, possible malicious code, software vulnerabilities, and phishing-related scams. Reporting forms can be found on CISA's homepage at www.cisa.gov.

Revisions

August 3, 2020: Initial Version|August 3, 2020: Corrected Snort rules|August 31, 2020: Updated

This product is provided subject to this Notification and this Privacy & Use policy.