絡安全公司Cybereason于近日發文稱,該公司旗下Nocturnus團隊正在追蹤一種新型鍵盤記錄病毒,這是因為這種病毒正越來越頻繁地出現,在網絡犯罪中越來越受歡迎。
被命名為“Phoenix(鳳凰)”的鍵盤記錄病毒于2019年7月首次出現,能夠從近20款瀏覽器、4種電子郵箱客戶端以及FTP客戶端和即時通訊客戶端中竊取個人數據,數據竊取能力遠遠超出了單純鍵盤記錄的范疇,以至于Cybereason公司更傾向于把它歸類為“間諜軟件(infostealer)”。
Phoenix最初被一些殺毒軟件廠商識別為Agent Tesla(一種間諜軟件),但Cybereason公司在分析后發現,這是一種全新的惡意軟件。
通過在暗網的一番搜索,Cybereason公司發現Phoenix最早出現的時間是在7月份,且是通過“惡意軟件即服務(MaaS)”出售的,初始售價從14.99到78.99美元不等。
圖1. Phoenix MaaS上架的時間(2019年7月24日)
圖2.Phoenix MaaS的定價模式
圖3. Phoenix MaaS的最新定價
Phoenix上架后不久便引來了大量的關注,并贏得了許多用戶的好評——功能齊全、穩定性好、簡潔易用的用戶界面、良好的售后服務。
圖4. 一位Phoenix用戶寫下的評論,詳細描述了Phoenix的簡潔易用
圖5.另一位Phoenix用戶寫下的評論,詳細描述了賣家是如何幫他解決問題的
如上所述,采用VB.NET編寫的Phoenix具有許多功能,遠遠超出了鍵盤記錄的范疇,這其中包括:
感染鏈
大多數Phoenix樣本都是通過釣魚電子郵件附件中的惡意富文本文件(RTF)或Microsoft Office文檔進行傳播的,但使用的并不如如今更為流行的宏技術,而是漏洞利用(被利用最多的漏洞是微軟公式編輯器漏洞CVE-2017-11882)。
圖6. Phoenix的感染鏈
受感染系統分析
Phoenix在成功感染目標計算機后,將對計算機進行配置,以收集有關操作系統、硬件、運行中的進程、用戶及其外部IP的信息,并將這些信息存儲到內存中,然后將發送給攻擊者。
由于被盜信息不會被寫入硬盤,這就導致不會有痕跡留下,信息竊取行為也就很難被發現。
圖7.發送給攻擊者的數據示例
反分析檢測功能
Phoenix的開發者在反分析檢測花費了大量的經歷,因為他使用了多種方法來確保Phoenix能夠逃過檢測:
此外,Phoenix還具有一組功能,可在管理面板中禁用多種Windows工具,如CMD、注冊表、任務管理器和系統還原等。
圖8. Phoenix鍵盤記錄病毒管理面板上禁用其他工具的選項
反虛擬機模塊
Phoenix的大多數反虛擬機檢查都基于已知的技術,Cybereason公司我們認為它們很可能是從Cyberbit博客直接復制過來的。
一旦Phoenix在目標計算機中發現以下任何進程或文件,它都將執行檢查并自行終止:
圖9.Phoenix內置的目標進程列表
禁用Windows Defender
Phoenix會嘗試通過更改以下注冊表項來禁用Windows Defender AntiSpyware模塊。
圖10.Phoenix試圖禁用Windows Defender
反殺毒軟件模塊
Phoenix的反殺毒模塊會嘗試殺死多種安全產品的進程。
圖11.用于殺死安全產品進程的代碼
分析表明,目標進程包括:
zlclient、egui、bdagent、npfmsg、olydbg、anubis、wireshark、avastui、_Avp32、vsmon、mbam、keyscrambler、_Avpcc、_Avpm、Ackwin32、Outpost、Anti-Trojan、ANTIVIR、Apvxdwin、ATRACK、Autodown、Avconsol、Ave32、Avgctrl、Avkserv、Avnt、Avp、Avp32、Avpcc、Avpdos32、Avpm、Avptc32、Avpupd、Avsched32、AVSYNMGR、Avwin95、Avwupd32、Blackd、Blackice、Cfiadmin、Cfiaudit、Cfinet、Cfinet32、Claw95、Claw95cf、Cleaner、Cleaner3、Defwatch、Dvp95、Dvp95_0、Ecengine、Esafe、Espwatch、F-Agnt95、Findviru、Fprot、F-Prot、F-Prot95、Fp-Win、Frw、F-Stopw、Iamapp、Iamserv、Ibmasn、Ibmavsp、Icload95、Icloadnt、Icmon、Icsupp95、Icsuppnt、Iface、Iomon98、Jedi、Lockdown2000、Lookout、Luall、MCAFEE、Moolive、Mpftray、N32scanw、NAVAPSVC、NAVAPW32、NAVLU32、Navnt、NAVRUNR、Navw32、Navwnt、NeoWatch、NISSERV、Nisum、Nmain、Normist、NORTON、Nupgrade、Nvc95、Outpost、Padmin、Pavcl、Pavsched、Pavw、PCCIOMON、PCCMAIN、Pccwin98、Pcfwallicon、Persfw、POP3TRAP、PVIEW95、Rav7、Rav7win、Rescue、Safeweb、Scan32、Scan95、Scanpm、Scrscan、Serv95、Smc、SMCSERVICE、Snort、Sphinx、Sweep95、SYMPROXYSVC、Tbscan、Tca、Tds2-98、Tds2-Nt、TermiNET、Vet95、Vettray、Vscan40、Vsecomr、Vshwin32、Vsstat、Webscanx、WEBTRAP、Wfindv32、Zonealarm、LOCKDOWN2000、RESCUE32、LUCOMSERVER、avgcc、avgcc、avgamsvr、avgupsvc、avgw、avgcc32、avgserv、avgserv9、avgserv9schedapp、avgemc、ashwebsv、ashdisp、ashmaisv、ashserv、aswUpdSv、symwsc、norton、Norton Auto-Protect、norton_av、nortonav、ccsetmgr、ccevtmgr、avadmin、avcenter、avgnt、avguard、avnotify、avscan、guardgui、nod32krn、nod32kui、clamscan、clamTray、clamWin、freshclam、oladdin、sigtool、w9xpopen、Wclose、cmgrdian、alogserv、mcshield、vshwin32、avconsol、vsstat、avsynmgr、avcmd、avconfig、licmgr、sched、preupd、MsMpEng、MSASCui、Avira.Systray
憑證竊取
Phoenix試圖通過搜索包含敏感信息的特定文件或注冊表項來竊取目標計算機本地存儲的憑證和其他敏感信息,目標包括瀏覽器、電子郵箱客戶端、FTP客戶端和即時通訊客戶端。
圖12.Phoenix的Outlook模塊
圖13.Phoenix的Pidgin模塊
鍵盤記錄器模塊
Phoenix使用了一種常見的掛鉤鍵盤事件的方法來記錄鍵盤錄入——使用Windows API函數SetWindowsHookExA映射按下的鍵,然后將它們與相應的進程進行匹配。
圖14. Phoenix的鍵盤記錄鉤子函數
圖15. Phoenix將鍵盤錄入與相關進程進行匹配
Phoenix是一種作為惡意軟件即服務出售的鍵盤記錄病毒,自2019年7月下旬上架以來,因其低廉的價格、簡潔易用和良好的售后服務在暗網交易市場越來越受歡迎。
嚴格意義上講,Phoenix應該被歸類為間諜軟件,因為它擁有比單純鍵盤記錄病毒多得多的功能。相信,在“惡意軟件即服務”銷售模式下,Phoenix必將在即將到來的2020年掀起一場腥風血雨。
之前效果都放在最后,是不是大家不看到最后就走了, ̄□ ̄||,所以打算以后就先放效果在寫實現方法。
上篇文章中已經實現了組件庫的基本窗口框架,之后我就在想怎么進行組件的展示呢?構思了幾種實現方法:
通常的做法,就是在窗口上放置一個又一個的按鈕,點擊一個按鈕就彈出一個組件窗口。然后為了美觀一點,不能只用純文字的按鈕,而可以使用QToolButton,并為其添加圖標和文字,最終效果就類似于大部分軟件上的工具欄。
或者進階一點呢可以使用QTabWidget或者QToolBox對控件進行分類,然后在每個Tab頁或者抽屜中對該類控件進行展示,而且Tab頁也可以進行美化,最典型的Tab頁可以參考360的程序,真的是你想要的的Tab頁它里面都有:
至于典型的抽屜窗口就像QQ里面的好友列表或者音樂軟件中的歌單:
在上面說的說的這幾種實現方法中我是偏向于利用Tab窗口實現的,然后就在我盯著電腦桌面發呆的時候,突然意識到電腦桌面不正是一個最普遍、最典型、使用最多的展示窗口嗎?不管是應用、文件、音樂、視頻在桌面上展示的不就是不同的圖標和文字說明嗎?展示組件不也可以使用這種方法,而且桌面圖標還可以自由移動,隨意擺放、自動排列、交互等,這也比上面說的幾種方法更加靈活,因此最終敲定,展示窗口就按照系統桌面窗口的效果進行實現。
既然已經有了既定的目標,那么我們該怎么實現呢?窗口、自由移動、交互......首先想到的就是圖形視圖框架,它可以滿足我們當前的所有需求。在之前我們實現的窗口框架中添加一個圖形視圖窗口其實很簡單,基本功能只需要幾行代碼,實現如下:
m_pScene=new QGraphicsScene;
m_pScene->setSceneRect(-500,-500,1000,1000);
m_pView=new QGraphicsView(m_pScene);
m_pView->centerOn(0,0);
m_pView->resize(2000, 2000);
創建完以后,將m_pView布局到主窗口中即可。當然了此時我們只實現了Scene和View,還沒有往場景中添加Item。桌面中的Item其實就是桌面圖標了,它包含一個圖標、文字說明、選擇狀態,點擊響應以及右鍵菜單等,當然我們不可能一下子全都實現,今天我們先來實現圖標和選擇狀態的功能。Qt自帶的Item中沒有適合我們需求的,那么我們就只能自己繼承QGraphicsItem進行自定義實現。
自定義Item下面最基本的兩個函數是必須實現的:
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
然后我們還可以選擇是否實現shape函數,當然對于我們桌面圖標來說我感覺是不需要實現的,就用默認的即可,不過我還是重寫了一下......
之后我們要在Item上添加一張圖片,并負責圖片的繪制工作,該工作在paint函數中實現即可。至于選擇狀態,其實QGraphicsItem本身就可以設置可選,我們只需要在檢測到選中時,為其繪制一個不同的顯示效果即可。例如顯示一個虛線框,出現背景透明等,甚至還可以添加動畫,鼠標懸浮時,Item變大,鼠標移動時,Item變小,鼠標點擊時,Item抖動等。動畫我還沒有添加,打算等基本功能都實現了再添加,先來看看基本功能是怎么實現的吧:
//IconWidget.h
#include <QGraphicsItem>
#include <QPainter>
#include <QRectF>
#include <QPainterPath>
//自定義桌面圖標Item
class IconWidget : public QGraphicsItem
{
public:
IconWidget(QString strImagePath);
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QPainterPath shape() const;
private:
QImage m_qImage;
};
#include "IconWidget.h"
#include "MyType.h"
#include <QStyleOptionGraphicsItem>
IconWidget::IconWidget(QString strImagePath)
{
//加載圖片
m_qImage.load(strImagePath);
setZValue(0);
setAcceptDrops(true);
//設置Item可選和可移動
setFlags(ItemIsSelectable | ItemIsMovable);
}
QRectF IconWidget::boundingRect() const
{
//這個設置相當于把item相對于自身的坐標系的原點(0,0)放到自己的正中央
return QRectF(-ICON_WIDTH/2, -ICON_HEIGHT/2, ICON_WIDTH, ICON_HEIGHT).adjusted(-1, -1, 1, 1);
}
QPainterPath IconWidget::shape() const
{
QPainterPath path;
path.addRect(QRectF(-ICON_WIDTH/2, -ICON_HEIGHT/2, ICON_WIDTH, ICON_HEIGHT));
return path;
}
void IconWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(widget);
//選中時
if(option->state & QStyle::State_Selected)
{
//繪制虛線框
painter->setPen(QPen(Qt::blue, 1, Qt::DotLine));
QRectF rect=QRectF(-ICON_WIDTH/2, -ICON_HEIGHT/2, ICON_WIDTH, ICON_HEIGHT).adjusted(-1, -1, 1, 1);
painter->drawRect(rect);
//繪制透明背景
QLinearGradient grad(rect.topLeft(), rect.bottomRight());
QGradientStops gs;
gs << QGradientStop(0.0, QColor(0, 0, 0 , 100))
<< QGradientStop(0.5, QColor(0, 0, 0, 100))
<< QGradientStop(1.0, QColor(0, 0, 0, 100));
grad.setStops(gs);
painter->setOpacity(0.5);
painter->fillRect(rect, grad);
}
//繪制圖片
painter->drawImage(boundingRect().adjusted(5, 5, -5, -5), m_qImage);
//繪制邊框的方法,有點丑,不使用
//painter->drawRect(QRectF(-ICON_WIDTH/2, -ICON_HEIGHT/2, ICON_WIDTH, ICON_HEIGHT));
}
其實很簡單,使用方法如下:
m_pScene=new QGraphicsScene;
m_pScene->setSceneRect(-500,-500,1000,1000);
m_pView=new QGraphicsView(m_pScene);
m_pView->setMouseTracking(true);
m_pView->centerOn(0,0);
//添加圖標Item
m_pIconWidget[0]=new IconWidget(":/Images/QQ.png");
m_pScene->addItem(m_pIconWidget[0]); //將Item加入到Scene中
m_pIconWidget[0]->setPos(-3*66, 0); //設置初始位置
m_pIconWidget[1]=new IconWidget(":/Images/WeChat.png");
m_pScene->addItem(m_pIconWidget[1]);
m_pIconWidget[1]->setPos(-2*66, 0);
m_pView->resize(2000, 2000);
我這里為了省事就用了數組,后面我再想想怎么優化,再將創建和布局Item封裝一下。
IconWidget* m_pIconWidget[10];
絡安全公司Cybereason于近日發文稱,該公司旗下Nocturnus團隊正在追蹤一種新型鍵盤記錄病毒,這是因為這種病毒正越來越頻繁地出現,在網絡犯罪中越來越受歡迎。
被命名為“Phoenix(鳳凰)”的鍵盤記錄病毒于2019年7月首次出現,能夠從近20款瀏覽器、4種電子郵箱客戶端以及FTP客戶端和即時通訊客戶端中竊取個人數據,數據竊取能力遠遠超出了單純鍵盤記錄的范疇,以至于Cybereason公司更傾向于把它歸類為“間諜軟件(infostealer)”。
Phoenix最初被一些殺毒軟件廠商識別為Agent Tesla(一種間諜軟件),但Cybereason公司在分析后發現,這是一種全新的惡意軟件。
通過在暗網的一番搜索,Cybereason公司發現Phoenix最早出現的時間是在7月份,且是通過“惡意軟件即服務(MaaS)”出售的,初始售價從14.99到78.99美元不等。
圖1. Phoenix MaaS上架的時間(2019年7月24日)
圖2.Phoenix MaaS的定價模式
圖3. Phoenix MaaS的最新定價
Phoenix上架后不久便引來了大量的關注,并贏得了許多用戶的好評——功能齊全、穩定性好、簡潔易用的用戶界面、良好的售后服務。
圖4. 一位Phoenix用戶寫下的評論,詳細描述了Phoenix的簡潔易用
圖5.另一位Phoenix用戶寫下的評論,詳細描述了賣家是如何幫他解決問題的
如上所述,采用VB.NET編寫的Phoenix具有許多功能,遠遠超出了鍵盤記錄的范疇,這其中包括:
感染鏈
大多數Phoenix樣本都是通過釣魚電子郵件附件中的惡意富文本文件(RTF)或Microsoft Office文檔進行傳播的,但使用的并不如如今更為流行的宏技術,而是漏洞利用(被利用最多的漏洞是微軟公式編輯器漏洞CVE-2017-11882)。
圖6. Phoenix的感染鏈
受感染系統分析
Phoenix在成功感染目標計算機后,將對計算機進行配置,以收集有關操作系統、硬件、運行中的進程、用戶及其外部IP的信息,并將這些信息存儲到內存中,然后將發送給攻擊者。
由于被盜信息不會被寫入硬盤,這就導致不會有痕跡留下,信息竊取行為也就很難被發現。
圖7.發送給攻擊者的數據示例
反分析檢測功能
Phoenix的開發者在反分析檢測花費了大量的經歷,因為他使用了多種方法來確保Phoenix能夠逃過檢測:
此外,Phoenix還具有一組功能,可在管理面板中禁用多種Windows工具,如CMD、注冊表、任務管理器和系統還原等。
圖8. Phoenix鍵盤記錄病毒管理面板上禁用其他工具的選項
反虛擬機模塊
Phoenix的大多數反虛擬機檢查都基于已知的技術,Cybereason公司我們認為它們很可能是從Cyberbit博客直接復制過來的。
一旦Phoenix在目標計算機中發現以下任何進程或文件,它都將執行檢查并自行終止:
圖9.Phoenix內置的目標進程列表
禁用Windows Defender
Phoenix會嘗試通過更改以下注冊表項來禁用Windows Defender AntiSpyware模塊。
圖10.Phoenix試圖禁用Windows Defender
反殺毒軟件模塊
Phoenix的反殺毒模塊會嘗試殺死多種安全產品的進程。
圖11.用于殺死安全產品進程的代碼
分析表明,目標進程包括:
zlclient、egui、bdagent、npfmsg、olydbg、anubis、wireshark、avastui、_Avp32、vsmon、mbam、keyscrambler、_Avpcc、_Avpm、Ackwin32、Outpost、Anti-Trojan、ANTIVIR、Apvxdwin、ATRACK、Autodown、Avconsol、Ave32、Avgctrl、Avkserv、Avnt、Avp、Avp32、Avpcc、Avpdos32、Avpm、Avptc32、Avpupd、Avsched32、AVSYNMGR、Avwin95、Avwupd32、Blackd、Blackice、Cfiadmin、Cfiaudit、Cfinet、Cfinet32、Claw95、Claw95cf、Cleaner、Cleaner3、Defwatch、Dvp95、Dvp95_0、Ecengine、Esafe、Espwatch、F-Agnt95、Findviru、Fprot、F-Prot、F-Prot95、Fp-Win、Frw、F-Stopw、Iamapp、Iamserv、Ibmasn、Ibmavsp、Icload95、Icloadnt、Icmon、Icsupp95、Icsuppnt、Iface、Iomon98、Jedi、Lockdown2000、Lookout、Luall、MCAFEE、Moolive、Mpftray、N32scanw、NAVAPSVC、NAVAPW32、NAVLU32、Navnt、NAVRUNR、Navw32、Navwnt、NeoWatch、NISSERV、Nisum、Nmain、Normist、NORTON、Nupgrade、Nvc95、Outpost、Padmin、Pavcl、Pavsched、Pavw、PCCIOMON、PCCMAIN、Pccwin98、Pcfwallicon、Persfw、POP3TRAP、PVIEW95、Rav7、Rav7win、Rescue、Safeweb、Scan32、Scan95、Scanpm、Scrscan、Serv95、Smc、SMCSERVICE、Snort、Sphinx、Sweep95、SYMPROXYSVC、Tbscan、Tca、Tds2-98、Tds2-Nt、TermiNET、Vet95、Vettray、Vscan40、Vsecomr、Vshwin32、Vsstat、Webscanx、WEBTRAP、Wfindv32、Zonealarm、LOCKDOWN2000、RESCUE32、LUCOMSERVER、avgcc、avgcc、avgamsvr、avgupsvc、avgw、avgcc32、avgserv、avgserv9、avgserv9schedapp、avgemc、ashwebsv、ashdisp、ashmaisv、ashserv、aswUpdSv、symwsc、norton、Norton Auto-Protect、norton_av、nortonav、ccsetmgr、ccevtmgr、avadmin、avcenter、avgnt、avguard、avnotify、avscan、guardgui、nod32krn、nod32kui、clamscan、clamTray、clamWin、freshclam、oladdin、sigtool、w9xpopen、Wclose、cmgrdian、alogserv、mcshield、vshwin32、avconsol、vsstat、avsynmgr、avcmd、avconfig、licmgr、sched、preupd、MsMpEng、MSASCui、Avira.Systray
憑證竊取
Phoenix試圖通過搜索包含敏感信息的特定文件或注冊表項來竊取目標計算機本地存儲的憑證和其他敏感信息,目標包括瀏覽器、電子郵箱客戶端、FTP客戶端和即時通訊客戶端。
圖12.Phoenix的Outlook模塊
圖13.Phoenix的Pidgin模塊
鍵盤記錄器模塊
Phoenix使用了一種常見的掛鉤鍵盤事件的方法來記錄鍵盤錄入——使用Windows API函數SetWindowsHookExA映射按下的鍵,然后將它們與相應的進程進行匹配。
圖14. Phoenix的鍵盤記錄鉤子函數
圖15. Phoenix將鍵盤錄入與相關進程進行匹配
Phoenix是一種作為惡意軟件即服務出售的鍵盤記錄病毒,自2019年7月下旬上架以來,因其低廉的價格、簡潔易用和良好的售后服務在暗網交易市場越來越受歡迎。
嚴格意義上講,Phoenix應該被歸類為間諜軟件,因為它擁有比單純鍵盤記錄病毒多得多的功能。相信,在“惡意軟件即服務”銷售模式下,Phoenix必將在即將到來的2020年掀起一場腥風血雨。