Twitter-based Botnet Command Channel
by. Pituphong Yavirach

วันที่ 6 สิงหาคม 52 ชาว Tweet ทั้งหลาย เกือบลงแดงตาย เพราะใช้งาน Twitter ไม่ได้

เป็นเวลานานกว่าหลายชั่วโมง ที่เว็บไซต์ และระบบทั้งหมดของ Twitter.com ทำการกูระบบขึ้นมา โดยใช้ระบบสำรอง ทำให้สามารถใช้งานได้ตามปกติ จากรายงานข่าว พบว่าไม่เพียง Twitter เท่านั้นที่โดนโจมตี Facebook, Google Blog ก็โดนด้วยเช่นเดียวกัน ถึงขั้นขนาดเป้นวาระของชาติสหรัฐฯ เลยทีเดียว อีกทั้งมีการตั้งค่าหัวในการค้นหาผู้ที่ทำการโจมตีในครั้งนี้

Twitter’s security team ได้ทำการ response ในทันทีที่โดนโจมตี จากการวิเคราะห์พบว่า รูปแบบการโจมตีที่กระทำเข้ามานั้น เป็นรูปแบบ DDoS (Distribution Denial of Services) หรือการโจมตีแบบรุม โดยอาศัย BOT Net จากทั่วโลกในการโจมตี

* ข้อมูล BOT Net เพิ่มเติม http://www.sran.net/archives/51

จนเวลาผ่านไปกว่าอาทิตย์ Twitter ยังโดนโจมตีอย่างไม่หยุดหย่อน โดยอาศัยช่องทางที่ทาง twitter เปิดรับข้อมูล ไม่ว่าจากทางหน้าเว็บ หรือทาง API ที่ใช้สื่อสารกับ Third-party client 

เรื่องเก่ายังไม่จบ ล่าสุด Twitter’s security team ก็พบว่า มี account ไว้ใช้สำหรับ update ชุดคำสั่งในการควบคุมด้วยเครื่อง โดยชุดคำสั่งนี้เป็นการ update ชุดคำสั่ง เพื่อเปิดโปรแกรม, ดาวน์โหลด และเปิด



จากคำสั่งเบื้องต้น โดยการสุ่มเดาและทดสอบหลายรูปแบบจาก “http://tools.web-max.ca/encode_decode.php” ทำให้เรารู้ได้ว่า คำสั่งดังกล่าว ถูกเข้ารหัสในรูปแบบของ Base 64 เพราะฉะนั้น เมื่อเราถอดข้อความ ออกมา เราก็จะได้ข้อมูลที่เราต้องการ


$ echo "aHR0cDovL2JpdC5seS9SNlNUViAgaHR0cDovL2JpdC5seS8yS29Ibw==" | openssl base64 -d
hxxp://bit.ly/R6STV hxxp://bit.ly/2KoHo


ในที่สุดเราก็เห็น link ที่ผู้ไม่ประสงค์ดี ส่งคำสั่งมาแล้ว

ขั้นต่อไป เราลองพยายาม download ข้อมูลตาม link ที่ได้มา เราก็ได้ text file มา 1 file พอเปิดอ่านแล้ว กลับพบว่า เจอข้อความในรูปแบบการเข้ารหัสอีกแล้ว เราเลยลองสุ่มดูอีกที ว่าผู้ไม่ประสงค์ดี น่าจะใช้การเข้ารหัสในแบบ Base64 อีกครั้ง 

ผมได้เขียนโปรแกรมเล็ก ๆ ขึ้นมา 1 ตัว ด้วยภาษา Python เพื่อใช้ในการ decode ข้อมูลที่เราได้มา

 

 

# decodes base64 files
# usage: python /b64_decode.py (encoded_file) (output_file)

import base64
import sys

encodedFile = sys.argv[1]
outputFile = sys.argv[2]

encodedFileHndl = open(encodedFile,"r")
outputFileHndl = open(outputFile, "w")

outputFileHndl.write(base64.b64decode(encodedFileHndl.read()))

encodedFileHndl.close();
outputFileHndl.close();

 


$python b64_decode.py m6bc6ade8.txt m6bc6ade8.b64


เมื่อสั่ง decrypt ออกมา ผมก็จะได้ file ที่ชื่อ m6bc6ade8.b64 ตามที่ได้ตั้งไว้ เมื่อเข้าไปดูใน file ดังกล่าว กลับพบว่าเป็น binary ที่ยังอ่านไม่ออก และยืนยันไม่ได้ว่าเป็น file ชนิดใด



โปรแกรมถัดมาที่จะใช้คือ TrID/32 - File Identifier

 


$./trid m6bc6ade8.b64
TrID/32 - File Identifier v2.00/Linux - (C) 2003-06 By M.Pontello
Definitions found:  3811
Analyzing...
Collecting data from file: m6bc6ade8.b64
100.0% (.ZIP) ZIP compressed archive (4000/1)


นั่นทำให้เราทราบได้ว่า นั่นคือ file สกุล zip ที่ถูก compress ไว้ หลังจากนี้เราคงต้องแตกมันออกมา ก่อนอื่น ทำการ rename file ให้เป็นสกุล .zip และใช้คำสั่ง .zip เราได้ file ออกมาดังนี้

 


$./unzip m6bc6ade8.zip
Archive:  m6bc6ade8.zip
  inflating: gbpm.dll                
  inflating: gbpm.exe


เมื่อได้ file ออกมา 2 file แล้ว เราจะมาทำการ analyze ต่อด้วยการส่งตัวอย่าง file ไปตรวจสอบที่ Virustotal.com เราก็เห็นว่ามันคือ Trojan ชนิดหนึ่ง ที่บางค่ายรู้จัก เราจะมาดูกันต่อว่า file เหล่านี้ มีอะไรซ่อนอีกบ้าง

เริ่มด้วยการ Identify file format อีกครั้ง ทั้ง 2 file

 


./trid gbpm.dll
TrID/32 - File Identifier v2.00/Linux - (C) 2003-06 By M.Pontello
Definitions found:  3811
Analyzing...
Collecting data from file: gbpm.dll
39.5% (.EXE) UPX compressed Win32 Executable (30569/9/7)
34.3% (.EXE) Win32 EXE Yoda's Crypter (26569/9/4)
11.0% (.EXE) Win32 Executable Generic (8527/13/3)
  9.8% (.DLL) Win32 Dynamic Link Library (generic) (7583/30/2)
  2.5% (.EXE) Generic Win/DOS Executable (2002/3)

./trid gbpm.exe
TrID/32 - File Identifier v2.00/Linux - (C) 2003-06 By M.Pontello
Definitions found:  3811
Analyzing...
Collecting data from file: gbpm.exe
39.5% (.EXE) UPX compressed Win32 Executable (30569/9/7)
34.3% (.EXE) Win32 EXE Yoda's Crypter (26569/9/4)
11.0% (.EXE) Win32 Executable Generic (8527/13/3)
  9.8% (.DLL) Win32 Dynamic Link Library (generic) (7583/30/2)
  2.5% (.EXE) Generic Win/DOS Executable (2002/3)


รูปแบบ format file ที่ตรงมากที่สุดคือ “UPX compressed Win32 Executable” เพราะฉะนั้น เราต้องทำการคลายข้อมูลออกมาก่อน ถึงจะตรวจ string บางอย่างต่อไปได้

ก่อนอื่นคือ สำเนา file ทั้งสอง file ให้มีนามสกุล .upx ต่อท้ายก่อน มิฉะนั้น file อาจโดนทับเสียหายได้ หลังจากนั้นใช้ UPX tool ในการคลาย file ดังกล่าว

 


./ upx -d gbpm.dll.upx
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 – 2008
UPX 3.03        Markus Oberhumer, Laszlo Molnar & John Reiser   Apr 27th 2008
        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    254464 <-     99840   39.24%    win32/pe     gbpm.dll.upx
Unpacked 1 file.


./upx -d gbpm.exe.upx
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 – 2008
UPX 3.03        Markus Oberhumer, Laszlo Molnar & John Reiser   Apr 27th 2008
        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     71680 <-     34304   47.86%    win32/pe     gbpm.exe.upx
Unpacked 1 file.



เมื่อคลายมาแล้ว ขั้นตอนต่อไปคือหา string ที่เกี่ยวข้องใน file ทั้ง 2 ตัวนั้นด้วยคำสั่ง

 

strings gbpm.dll.upx | egrep -A200 '[A-Z]+='

strings gbpm.exe.upx | egrep -A200 '[A-Z]+='


และเราก็เจอจุดประสงค์ของผู้ไม่หวังดีใน file ชื่อ gbpm.dll.upx

พบข้อมูล URL บางที่ ที่จะต้องส่งข้อมูลไปหาดังนี้

 


http://64.79.197.110/friends/alert/new.php
hxxp://64.79.197.110/friends/post.php
hxxps://www2.bancobrasil.com.br/aapf/login.jsp?aapf.IDH=sim
hxxps://www2.bancobrasil.com.br/aapf/
hxxps://www2.bancobrasil.com.br/aapf/login.jsp
hxxps://www2.bancobrasil.com.br/senhaConta=
hxxps://www2.bancobrasil.com.br/aapf/relacionamento/mcib.jsp
hxxps://www2.bancobrasil.com.br/update/rld
hxxps://www2.bancobrasil.com.br/templates
hxxps://www2.bancobrasil.com.br/aapf/includes/sair.jsp


ยังพบการเรียกใช้ Windows system files อีกหลายรายการ

 


java.exe
iexplore.exe
firefox.exe
KERNEL32.DLL
ADVAPI32.dll
IPHLPAPI.DLL
ole32.dll
USER32.dll
WININET.dll


ทำตัวเองเป็น Web Client เพราะมี Ryeol HTTP Client และหลอก Banner อีกรอบเป็น 

 


Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718

 





ณ วันที่ 14 จาก bit.ly จากสถิติผู้ที่ติด ส่วนมากนั้นเป็นบุคคลใน Brazil และเป็นที่น่าเสียดาย ผมไม่ค่อยอยากเอาเครื่องผมเสี่ยงซะด้วยสิ ไม่อย่างนั้น คงมี network forensics กันต่อ



ถึงตอนนี้ Twitter’s security team ได้ทำการระงับการใช้งาน account ดังกล่าวเป็นที่เรียบร้อยไปแล้ว แต่ก็ยังไม่วาย ย้ายไปที่อื่นอีกเรื่อยๆ 





ถึงตรงนี้แล้ว คนที่อ่านก็คงมีคำถามว่า จะติด malware ตัวนี้ได้อย่างไร ในเมื่อต้อง decode ก่อนจะ load ได้สิ? ... ตรงนี้คงต้องบอกเลยว่า ผมยังไม่เจอ หากเจอแล้ว ผมจะเอามาชำแหละให้ดูกันอีก

จบแค่นี้จริงหรือ?

ยังหลอกครับ การ analyze นี้เป็นเพียงการเริ่มต้น แค่หา string ใน file มาให้ดูมันเด็กไป เพราะทำจริง ๆ คงต้อง re-assembly กันออกมาถึงว่า มันไปจองพื้นที่หน่วยความจำส่วนไหน และทำอะไรบ้าง

ผมหมดแรงแล้วครับ ใครขยันช่วยทำต่อจากผมทีแล้วกัน.....

ก็เพียงแต่หวังว่า คนไทยอย่างเรา ๆ คงจะได้ In-trend กันในไม่ช้า อาจจะไม่ใช่รูปแบบนี้ ซึ่งน่าจะพิศดาลจากเดิม ซึ่งถ้ามันมีมาจริง ผมก็จะจับมาชำแหละอีกรอบแหละครับ

ขอเพียงให้ทุกคนโชคดี





เอวัง ด้วยประการฉะนี้.



Write by. 
Pituphong Yavirach
Global Technology Integrated Co.,Ltd.
Senior IT Security Consultant
18/08/2552 00:53




ps. บทวิเคราะัห์นี้ จะใช้ในการพูดงาน Computer & Network Forensics ณ. King Mongkut's University of Technology Thonburi. วันที่ 4 กันยายน 2552 นี้

 

 

แปลและ analyse ต่อจาก -> http://asert.arbornetworks.com/2009/08/twitter-based-botnet-command-channel/

*ขออภัย ไม่ได้ติด refer แต่แรกครับ ขอบคุณครับผม 

 

Comment

Comment:

Tweet

Excellent & remarkable post!
I have been visiting various blogs for my Term Papers writing research.I have found your blog to be quite useful. Keep updating your blog with valuable information....... Regards

#8 By Term Papers writing (182.178.91.3) on 2010-10-11 15:11

เจ๋งจริงๆ อย่างกับหนังนักสืบ สืบสวนสอบสวนเลย

#7 By cubic zirconia (110.164.101.2) on 2009-12-28 09:21

ผมอยาก อ่านออกมั่งจัง

#6 By be freezing ro_Om on 2009-11-03 04:03

twitter.com ครับ ไม่ใช่ tweeter.com

#5 By GK (58.137.14.42) on 2009-08-18 14:10

แปลมาจากอันนี้ป่าว
http://asert.arbornetworks.com/2009/08/twitter-based-botnet-command-channel/

ถ้าใช่ควรอ้างอิงหน่อยไหม?

#4 By หหห (58.147.66.250) on 2009-08-18 13:50

เทพมาเอง

#3 By @Aomzawu (58.8.73.21) on 2009-08-18 13:40

เหนือยก็ัพัก พักแล้วต่อด้วยนะครับบบ สู้ ๆ

#2 By P@W (124.157.133.183) on 2009-08-18 13:39

ขอให้ดาวก่อนเลยได้ไหม Hot! ;)