安全路透社
当前位置:安全路透社 > 网络转载 > 正文

解密方程式组织的Unix后门NOPEN

Clipboard Image.png

前言

不久之前,黑客组织ShadowBrokers(影子经纪人)曾声称他们从EquationGroup(方程式组织)那里窃取来了大量的黑客工具,并且他们还将部分工具放在网上进行拍卖。

近日,Vectra公司的安全研究专家NickBeauchesne对其中的一份泄漏文件进行了分析,并且发现了一个名叫“NOPEN”的Unix远程管理工具(RAT)。

Nick Beauchesne说到:

“当我在对方程式组织泄漏的文件以及黑客工具进行分析时,我发现了一些非常有意思的东西,而这些东西似乎没有得到它们应得的关注。虽然很多安全研究专家将他们的注意力全部放在了那些潜在的0day漏洞上,但是我认为我们应该还可以从这些泄漏文件中了解到方程式组织的攻击手法和操作模式,毕竟这是全世界最危险的黑客组织之一。”

NOPEN-针对Unix系统的远程管理工具(RAT)

根据NickBeauchesne的描述,在ShadowBrokers所泄漏的黑客工具中,有一款名为“NOPEN”的工具。在此之前,安全研究人员普遍认为这款工具是一种“Post-ExploitationShell”,方程式组织可以用它来感染一台被入侵的设备,而这款工具将允许攻击者与被入侵的设备进行持续性地通信。

但是通过深入分析之后Beauchesne发现,“NOPEN”实际上是一款针对Unix操作系统的远程管理工具(RAT)。各位应该知道,“RAT”这个词通常形容的是那些针对Windows系统和Android设备的恶意软件,攻击者可以利用这些恶意软件来与受感染的目标主机进行网络通信。

根据Beauchesne的分析结果,NOPEN毫无疑问是属于RAT工具这一类的。Beauchesne还表示,这是一款非常复杂的恶意软件,而且该工具似乎是方程式组织的一款非常重要的黑客工具,因为在泄漏文件(script/ops/doc)中曾多次提到了“NOPEN”的名字。之所以说它非常重要,是因为它既可以作为一个网络后门来感染目标系统,而且攻击者还可以用它来监听数据。

Clipboard Image.png

首先,方程式组织的黑客需要成功入侵目标系统,然后在系统中安装NOPEN。安装成功之后,攻击者就可以在自己的计算机与被入侵的设备之间建立一条通信链接,并开始监听目标主机中的各种数据。当他们发现并获取到了他们所要寻找的数据之后,黑客可以立刻删除NOPEN。NOPEN的主要功能就是在被感染主机与方程式组织的服务器之间建立一条通信隧道,并运行反向shell(命令行接口)。攻击者运行的是NOPEN的客户端,而NOPEN的服务器端则安装在被感染的设备上。

Beauchesne在分析报告中写到:

“这款工具不仅可以允许攻击者运行功能强大的shell脚本,而且还为他们提供了通信隧道的支持。需要注意的是,所有的操作信息和通信数据都采用了RC6加密算法来进行保护。但好消息是,尽管NOPEN采用了RC6加密算法来保护其网络通信数据,但是目前的很多安全解决方案也许能够在网络中检测到NOPEN的存在。”

Linux、FreeBSD、SunOS、Solaris和HP-UX等操作系统也难逃厄运

根据Beauchesne的分析,NOPEN可以在i386、i486、i586、i686、i86pc、i86、SPARC、Alpha、x86_64、以及AMD64等架构的计算机上正常运行。除此之外,安全专家表示,NOPEN还可以在Linux、FreeBSD、SunOS、Solaris和HP-UX等操作系统上运行。

深入分析NOPEN

简单而言,NOPEN就是一款静态编译的后门。这款UnixRAT会对其所有的控制命令和通信隧道数据进行加密保护,并且还允许攻击者在目标主机中实现提权。接下来,我们会对NOPEN进行深入分析,并且找出可以检测到NOPEN的安全策略。

Clipboard Image.png

NOPEN的欢迎界面

再简单的命令行工具也得有一个欢迎界面才对,NOPEN也不例外,而且NOPEN的欢迎界面还非常的友好。

NOPEN!                             v3.0.5.3

 

sh: 1: scanner: not found

sh: 1: ourtn: not found

sh: 1: scripme: not found

Wed Aug 31 18:07:05 GMT 2016

NHOME: environment variable not set, assuming"NHOME=/root/Firewall/TOOLS/NOPEN/.."

NHOME=/root/Firewall/TOOLS/NOPEN/..

Reading resource file"/root/Firewall/TOOLS/NOPEN/../etc/norc".../root/Firewall/TOOLS/NOPEN/../etc/norc: No such file or directory

TERM=xterm-256color

Entering connect mode

Attempting connection to 127.0.0.1:32754(127.0.0.1:32754)... ok

Initiating RSA key exchange

  Generating randomnumber... ok

  Initializing RC6...ok

  Sending randomnumber... ok

  Receiving randomnumber... ok

  Generating sessionkey... 0x0DE6200E48AB016831720B109B8B2874

  Sending first verifystring... ok

  Receiving secondverify string... ok

  Checking secondverify string... ok

RSA key exchange complete

NOPEN server version... 3.0.5.3

 

Connection

  Bytes In / Out     201/94 (213%C) / 63/4 (1575%C)

  Local Host:Port    localhost:41847 (127.0.0.1:41847)

  RemoteHost:Port   127.0.0.1:32754(127.0.0.1:32754)

  RemoteHost:Port   kali:32754 (127.0.0.1:32754)

Local

  NOPEN client       3.0.5.3

  Date/Time          Wed Aug 31 18:07:05 UTC 2016

  History            

  Command Out        

  CWD                /root/Firewall/TOOLS/NOPEN

  NHOME              /root/Firewall/TOOLS/NOPEN/..

  PID (PPID)         6904 (6896)

Remote

  NOPEN server       3.0.5.3

  WDIR               NOT SET

  OS                 Linux 4.6.0-kali1-amd64 #1 SMPDebian 4.6.4-1kali1 (2016-07-21) x86_64

  CWD                

  PID (PPID)         6908 (6889)

 

Reading resource file"/root/Firewall/TOOLS/NOPEN/../etc/norc.linux".../root/Firewall/TOOLS/NOPEN/../etc/norc.linux: No such file or directory

History loaded from"/root/Firewall/TOOLS/NOPEN/../down/history/kali.127.0.0.1"... ok

Creating command output file"/root/Firewall/TOOLS/NOPEN/../down/cmdout/kali.127.0.0.1-2016-08-31-18:07:05"...ok

Lonely?  Bored?  Need advice? Maybe "-help" will show you the way.

We are starting up our virtual autoport

我们可以通过“-help”命令来获取帮助信息:

We are bound and ready to go on port 1025

NO! kali:>-help

[08-31-16 18:07:17 GMT][localhost:41847 ->kali.127.0.0.1:32754]

[-help]

 

Remote General Commands:

Usage: -elevate 

Usage: -getenv 

Usage: -gs category|filename [options-if-any]

Usage: -setenv VAR=[val]

Usage: -shell 

Usage: -status 

Usage: -time 

 

Remote Server Commands:

Usage: -burn 

Usage: -call ip port

Usage: -listen port

Usage: -pid 

 

Remote Network Commands:

Usage: -icmptime target_ip [source_ip] 

Usage: -ifconfig 

Usage: -nslookup name1 ...

Usage: -ping -r remote_target_ip [-l local_source_ip][-i|-u|-t] [-p dest_port] [-s src_port]

       -ping host

       -ping[-u|-t|-i] host

Usage: -trace -r remote_target_ip [-l local_source_ip][-i|-u|-t] [-p dest_port] [-s src_port]

       -trace host

       -trace[-u|-t|-i] host

 

Remote Redirection Commands:

Usage: -fixudp port

Usage: -irtun target_ip call_back_port [call_back_ip] [ourtnarguements]

Usage: -jackpop target_ip target_port source_ip source_port

Usage: -nrtun port [toip [toport]]

Usage: -nstun toip [toport [localport [srcport [command]]]]

       -nstuntoip:port

Usage: -rawsend tcp_port

Usage: -rtun port [toip [toport]]

Usage: -scan 

Usage: -sentry target_address source_address (tcp|udp)dest_port src_port interface

Usage: -stun toip toport [localport [srcport]]

Usage: -sutun [-t ttl] toip toport [localport [srcport]]

Usage: -tunnel [command_listen_port [udp]]

Usage: -vscan  (shouldadd help)

 

Remote File Commands:

Usage: -cat remfile

Usage: -chili [-l] [-s lines] [-m max] MM-DD-YYYY remdirremfile [remfile ...]

Usage: -cksum remfile ...

Usage: -fget [MM-DD-YYYY] loclist

Usage: -get [-l] [-q] [-s minimumsize] [-m MM-DD-YYYY]remfile ...

Usage: -grep [-d] [-v] [-n] [-i] [-h] [-Cnumber_of_context_lines] pattern file1 [file2 ...] 

Usage: -oget [-a] [-q] [-s begoff] [-b begoff] [-e endoff]remfile

Usage: -put locfile remfile [mode]

Usage: -strings remfile

Usage: -tail [+/-n] remfile, + to skip n lines of remfilebeginning

Usage: -touch [-t mtime:atime | refremfile] remfile

Usage: -rm remfile|remdir ...

Usage: -upload file port

Usage: -mailgrep [-l] [-m maxbytes] [-r "regexp"[-v]] [-f regexpfilename [-v]] [-a "regexp for attachments toeliminate"] [-b MM-DD-YYYY] [-e MM-DD-YYYY] [-d remotedumpfile] remotedirfile1 [file2 ...]

 ex: -mailgrep -a".doc" -r "^Fred" -b 2-28-2002 /var/spool/mail G*

 

Remote Directory Commands:

Usage: -find [-M | -m -mkfindsargs] [-x[m|a|c] MM-DD-YYYY]remdir [remdir...]

Usage: -ls [-1ihuRt] [-x[m|a|c] MM-DD-YYYY] [remfile|remdir...]

Usage: -cd [remdir]

Usage: -cdp 

 

Local Client Commands:

Usage: -autopilot port [xml]

Usage: -cmdout [locfilename]

Usage: -exit 

Usage: -help 

Usage: -hist 

Usage: -readrc [locfile]

Usage: -remark [comment]

Usage: -rem [comment]

Usage: # [comment]

Usage: -reset 

 

Local Environment Commands:

Usage: -lcd locdir

Usage: -lgetenv 

Usage: -lpwd 

Usage: -lsetenv VAR=[val]

Usage: -lsh [[-q] command]

 

Aliases:

NOPEN支持的体系架构

反汇编之后,我们就可以看到NOPEN所支持的架构了。NOPEN是Unix系统上的一款通用远程管理工具(RAT),我们在泄漏文件中获取到的是其Linuxi386版本。但是我在对其客户端和服务器端进行了反汇编之后,结果显示该版本的NOPEN所支持的架构远不止i386一个。

.rodata:0807B04D aI586           db 'i586',0             ; DATA XREF: _serverCpuInfo+1Do

.rodata:0807B04D                                         ;_serverCpuInfo+4Co

.rodata:0807B052 ; char aI686[]

.rodata:0807B052 aI686           db 'i686',0             ; DATA XREF: _serverCpuInfo+73o

.rodata:0807B057 ; char aI486[]

.rodata:0807B057 aI486           db 'i486',0             ; DATA XREF: _serverCpuInfo+8Do

.rodata:0807B05C ; char aI386[]

.rodata:0807B05C aI386           db 'i386',0             ; DATA XREF: _serverCpuInfo+A7o

.rodata:0807B061 ; char aSparc[]

.rodata:0807B061 aSparc          db 'sparc',0            ; DATA XREF: _serverCpuInfo+E0o

.rodata:0807B067 ; char aI86pc[]

.rodata:0807B067 aI86pc          db 'i86pc',0            ; DATA XREF: _serverCpuInfo+FBo

.rodata:0807B06D ; char aI_86[]

.rodata:0807B06D aI?86           db 'i?86',0             ; DATA XREF: _serverCpuInfo+119o

.rodata:0807B072 ; char aAlpha[]

.rodata:0807B072 aAlpha          db 'alpha',0            ; DATA XREF: _serverCpuInfo+137o

.rodata:0807B078 ; char aX86_64[]

.rodata:0807B078 aX86_64         db 'x86_64',0           ; DATA XREF: _serverCpuInfo+155o

.rodata:0807B07F ; char aAmd64[]

.rodata:0807B07F aAmd64          db 'amd64',0            ; DATA XREF: _serverCpuInfo+173o

NOPEN所支持的操作系统

反编译之后,我们了解到了NOPEN所支持的操作系统类型。

FreeBSD

Linux

SunOS

HP-UX

Solaris

很多被隐藏的命令

我们发现,命令行的“-help”命令并不能够将NOPEN所有可用的指令全部显示出来。

.data:0808220C commandHelp     dd 0                    ; DATA XREF:sub_8059570+746r

"-head"; "[-n] remfile"

"-sget"; "hostname port file [file ...]"

"-srecv"; "port"

"-h"

"-burnBURN"

"-stat"

"-sq"; "remfile"

"-w"

"-lambda"

"-hammy"; "localport toip srcport[toport]"

"-at"; "[-B] time[m] command"

"-listen"; "port"

"-trigger"; "localport toip srcport[toport]"

"-triggerold"; "localport toip srcport[toport]"

"-sniff"; "localfile iface [exclusion filtersport"...

"-suc"; "[get|<filename>] | [-s]<pid> [<pid>..]"...

"-jscan"; "[-t timeout] scanType target[dstPort] "...

"-hstun"; "toip [toport [localport [srcport[comma"...

"-hrtun"; "port [toip [toport]]"

"-hutun"; "toip toport [localport[srcport]]"

"-lpid"

"-sha1sum"; "remfile ..."

UberControl子菜单

这部分功能似乎与rootkit有关,负责完成隐藏文件、任务处理、socket通信、以及持久化等操作。

Tunnel子菜单

具体命令如下所示:

[t]imeout time

  [r]emote listenport[target [port]]

  [l]ocal  listenport target [port [source_port]]

  [L]ocal  listenport target [port [source_port]]; withone byte extra for socket state

  [u]dp    listenport target [port [source_port]]

  [U]dp    listenport [target [port]]

  [c]lose channel

  [s]tatus  - prints status messages for channels

 

  [q]uit - leaves thetunnel, please do not hit Cntl-C, it makes the tunnel unhappy

NOPEN的检测

正如我们之前所提到的那样,第一眼看过去,NOPEN绝对是一款非常复杂的恶意软件。但是如果我们一步一步地进行深入分析,我就发现其实这款RAT并没有我们想象中的那么复杂,因为此前我们还遇到过更加复杂的RAT。像PoisonIvy、blackshade、helium、以及其他的RAT,它们远比NOPEN要麻烦得多,但是这些RAT的功能和运行机制其实都是大同小异的。实际上,就我们目前的经验来看,大多数的RAT工具都拥有相似的行为模式。所以从这一点来看,NOPEN其实也没有多少新颖之处。

没错,该工具背后的黑客组织是方程式组织,他们的确更加复杂,但是这类攻击的本质其实是一样的。我们其实并不需要完全弄清楚任何一款RAT工具的行为模式,我们可以利用“机器学习”来构建出新型的安全防御体系。通过机器学习来识别恶意工具的行为模式其检测效率和准确率都是非常高的。不仅如此,这样可以迫使攻击者不断改变他们的攻击方法,并且增加攻击者绕过下一代安全产品的难度。

* 参考来源:Vectranetworks,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

未经允许不得转载:安全路透社 » 解密方程式组织的Unix后门NOPEN

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册