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

[[171681]]

前言

不久之前,黑客组织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”的名字。之所以说它非常重要,是因为它既可以作为一个网络后门来感染目标系统,而且攻击者还可以用它来监听数据。

[[171682]]

首先,方程式组织的黑客需要成功入侵目标系统,然后在系统中安装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的安全策略。

[[171683]]

NOPEN的欢迎界面

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

  1. NOPEN!                             v3.0.5.3    
  2. sh: 1: scanner: not found  
  3. sh: 1: ourtn: not found  
  4. sh: 1: scripme: not found  
  5. Wed Aug 31 18:07:05 GMT 2016  
  6. NHOME: environment variable not set, assuming"NHOME=/root/Firewall/TOOLS/NOPEN/.." 
  7. NHOME=/root/Firewall/TOOLS/NOPEN/.. 
  8. Reading resource file"/root/Firewall/TOOLS/NOPEN/../etc/norc".../root/Firewall/TOOLS/NOPEN/../etc/norc: No such file or directory  
  9. TERM=xterm-256color 
  10. Entering connect mode  
  11. Attempting connection to 127.0.0.1:32754(127.0.0.1:32754)... ok  
  12. Initiating RSA key exchange  
  13.   Generating randomnumber... ok 
  14.   Initializing RC6...ok 
  15.   Sending randomnumber... ok 
  16.   Receiving randomnumber... ok  
  17.   Generating sessionkey... 0x0DE6200E48AB016831720B109B8B2874 
  18.   Sending first verifystring... ok 
  19.   Receiving secondverify string... ok 
  20.   Checking secondverify string... ok 
  21. RSA key exchange complete 
  22. NOPEN server version... 3.0.5.3 
  23. Connection 
  24.   Bytes In / Out     201/94 (213%C) / 63/4 (1575%C) 
  25.   Local Host:Port    localhost:41847 (127.0.0.1:41847) 
  26.   RemoteHost:Port   127.0.0.1:32754(127.0.0.1:32754) 
  27.   RemoteHost:Port   kali:32754 (127.0.0.1:32754) 
  28. Local 
  29.   NOPEN client       3.0.5.3 
  30.   Date/Time          Wed Aug 31 18:07:05 UTC 2016 
  31.   History              
  32.   Command Out          
  33.   CWD                /root/Firewall/TOOLS/NOPEN 
  34.   NHOME              /root/Firewall/TOOLS/NOPEN/.. 
  35.   PID (PPID)         6904 (6896) 
  36. Remote 
  37.   NOPEN server       3.0.5.3 
  38.   WDIR               NOT SET 
  39.   OS                 Linux 4.6.0-kali1-amd64 #1 SMPDebian 4.6.4-1kali1 (2016-07-21) x86_64 
  40.   CWD                  
  41.   PID (PPID)         6908 (6889) 
  42. Reading resource file"/root/Firewall/TOOLS/NOPEN/../etc/norc.linux".../root/Firewall/TOOLS/NOPEN/../etc/norc.linux: No such file or directory 
  43. History loaded from"/root/Firewall/TOOLS/NOPEN/../down/history/kali.127.0.0.1"... ok 
  44. Creating command output file"/root/Firewall/TOOLS/NOPEN/../down/cmdout/kali.127.0.0.1-2016-08-31-18:07:05"...ok 
  45. Lonely?  Bored?  Need advice? Maybe "-help" will show you the way.  
  46. We are starting up our virtual autoport 

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

  1. We are bound and ready to go on port 1025 
  2. NO! kali:>-help 
  3. [08-31-16 18:07:17 GMT][localhost:41847 ->kali.127.0.0.1:32754] 
  4. [-help] 
  5. Remote General Commands: 
  6. Usage: -elevate   
  7. Usage: -getenv   
  8. Usage: -gs category|filename [options-if-any
  9. Usage: -setenv VAR=[val] 
  10. Usage: -shell   
  11. Usage: -status   
  12. Usage: -time   
  13. Remote Server Commands: 
  14. Usage: -burn   
  15. Usage: -call ip port 
  16. Usage: -listen port 
  17. Usage: -pid   
  18. Remote Network Commands: 
  19. Usage: -icmptime target_ip [source_ip]   
  20. Usage: -ifconfig   
  21. Usage: -nslookup name1 ... 
  22. Usage: -ping -r remote_target_ip [-l local_source_ip][-i|-u|-t] [-p dest_port] [-s src_port] 
  23.        -ping host 
  24.        -ping[-u|-t|-i] host 
  25. Usage: -trace -r remote_target_ip [-l local_source_ip][-i|-u|-t] [-p dest_port] [-s src_port] 
  26.        -trace host 
  27.        -trace[-u|-t|-i] host 
  28. Remote Redirection Commands: 
  29. Usage: -fixudp port 
  30. Usage: -irtun target_ip call_back_port [call_back_ip] [ourtnarguements] 
  31. Usage: -jackpop target_ip target_port source_ip source_port 
  32. Usage: -nrtun port [toip [toport]] 
  33. Usage: -nstun toip [toport [localport [srcport [command]]]]  
  34.        -nstuntoip:port 
  35. Usage: -rawsend tcp_port 
  36. Usage: -rtun port [toip [toport]] 
  37. Usage: -scan   
  38. Usage: -sentry target_address source_address (tcp|udp)dest_port src_port interface 
  39. Usage: -stun toip toport [localport [srcport]] 
  40. Usage: -sutun [-t ttl] toip toport [localport [srcport]] 
  41. Usage: -tunnel [command_listen_port [udp]] 
  42. Usage: -vscan  (shouldadd help) 
  43. Remote File Commands: 
  44. Usage: -cat remfile 
  45. Usage: -chili [-l] [-s lines] [-m max] MM-DD-YYYY remdirremfile [remfile ...] 
  46. Usage: -cksum remfile ... 
  47. Usage: -fget [MM-DD-YYYY] loclist 
  48. Usage: -get [-l] [-q] [-s minimumsize] [-m MM-DD-YYYY]remfile ... 
  49. Usage: -grep [-d] [-v] [-n] [-i] [-h] [-Cnumber_of_context_lines] pattern file1 [file2 ...]   
  50. Usage: -oget [-a] [-q] [-s begoff] [-b begoff] [-e endoff]remfile 
  51. Usage: -put locfile remfile [mode] 
  52. Usage: -strings remfile 
  53. Usage: -tail [+/-n] remfile, + to skip n lines of remfilebeginning 
  54. Usage: -touch [-t mtime:atime | refremfile] remfile 
  55. Usage: -rm remfile|remdir ... 
  56. Usage: -upload file port 
  57. 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 ...] 
  58.  ex: -mailgrep -a".doc" -r "^Fred" -b 2-28-2002 /var/spool/mail G*  
  59. Remote Directory Commands: 
  60. Usage: -find [-M | -m -mkfindsargs] [-x[m|a|c] MM-DD-YYYY]remdir [remdir...] 
  61. Usage: -ls [-1ihuRt] [-x[m|a|c] MM-DD-YYYY] [remfile|remdir...] 
  62. Usage: -cd [remdir] 
  63. Usage: -cdp   
  64. Local Client Commands: 
  65. Usage: -autopilot port [xml] 
  66. Usage: -cmdout [locfilename] 
  67. Usage: -exit   
  68. Usage: -help   
  69. Usage: -hist   
  70. Usage: -readrc [locfile] 
  71. Usage: -remark [comment] 
  72. Usage: -rem [comment] 
  73. Usage: # [comment] 
  74. Usage: -reset   
  75. Local Environment Commands: 
  76. Usage: -lcd locdir 
  77. Usage: -lgetenv   
  78. Usage: -lpwd   
  79. Usage: -lsetenv VAR=[val] 
  80. Usage: -lsh [[-q] command] 
  81. Aliases: 

NOPEN支持的体系架构

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

  1. .rodata:0807B04D aI586           db 'i586',0             ; DATA XREF: _serverCpuInfo+1Do 
  2. .rodata:0807B04D                                         ;_serverCpuInfo+4Co 
  3. .rodata:0807B052 ; char aI686[] 
  4. .rodata:0807B052 aI686           db 'i686',0             ; DATA XREF: _serverCpuInfo+73o 
  5. .rodata:0807B057 ; char aI486[] 
  6. .rodata:0807B057 aI486           db 'i486',0             ; DATA XREF: _serverCpuInfo+8Do 
  7. .rodata:0807B05C ; char aI386[] 
  8. .rodata:0807B05C aI386           db 'i386',0             ; DATA XREF: _serverCpuInfo+A7o 
  9. .rodata:0807B061 ; char aSparc[] 
  10. .rodata:0807B061 aSparc          db 'sparc',0            ; DATA XREF: _serverCpuInfo+E0o 
  11. .rodata:0807B067 ; char aI86pc[] 
  12. .rodata:0807B067 aI86pc          db 'i86pc',0            ; DATA XREF: _serverCpuInfo+FBo 
  13. .rodata:0807B06D ; char aI_86[] 
  14. .rodata:0807B06D aI?86           db 'i?86',0             ; DATA XREF: _serverCpuInfo+119o 
  15. .rodata:0807B072 ; char aAlpha[] 
  16. .rodata:0807B072 aAlpha          db 'alpha',0            ; DATA XREF: _serverCpuInfo+137o 
  17. .rodata:0807B078 ; char aX86_64[] 
  18. .rodata:0807B078 aX86_64         db 'x86_64',0           ; DATA XREF: _serverCpuInfo+155o 
  19. .rodata:0807B07F ; char aAmd64[] 
  20. .rodata:0807B07F aAmd64          db 'amd64',0            ; DATA XREF: _serverCpuInfo+173o  

NOPEN所支持的操作系统

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

  • FreeBSD
  • Linux
  • SunOS
  • HP-UX
  • Solaris

很多被隐藏的命令

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

  1. .data:0808220C commandHelp     dd 0                    ; DATA XREF:sub_8059570+746r 
  2. "-head""[-n] remfile" 
  3. "-sget""hostname port file [file ...]" 
  4. "-srecv""port" 
  5. "-h" 
  6. "-burnBURN" 
  7. "-stat" 
  8. "-sq""remfile" 
  9. "-w" 
  10. "-lambda" 
  11. "-hammy""localport toip srcport[toport]" 
  12. "-at""[-B] time[m] command" 
  13. "-listen""port" 
  14. "-trigger""localport toip srcport[toport]" 
  15. "-triggerold""localport toip srcport[toport]" 
  16. "-sniff""localfile iface [exclusion filtersport"... 
  17. "-suc""[get|<filename>] | [-s]<pid> [<pid>..]"... 
  18. "-jscan""[-t timeout] scanType target[dstPort] "... 
  19. "-hstun""toip [toport [localport [srcport[comma"... 
  20. "-hrtun""port [toip [toport]]" 
  21. "-hutun""toip toport [localport[srcport]]" 
  22. "-lpid" 
  23. "-sha1sum""remfile ..."  

UberControl子菜单

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

Tunnel子菜单

具体命令如下所示:

  1. [t]imeout time 
  2.   [r]emote listenport[target [port]] 
  3.   [l]ocal  listenport target [port [source_port]]  
  4.   [L]ocal  listenport target [port [source_port]]; withone byte extra for socket state  
  5.   [u]dp    listenport target [port [source_port]] 
  6.   [U]dp    listenport [target [port]] 
  7.   [c]lose channel 
  8.   [s]tatus  - prints status messages for channels  
  9.   [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工具的行为模式,我们可以利用“机器学习”来构建出新型的安全防御体系。通过机器学习来识别恶意工具的行为模式其检测效率和准确率都是非常高的。不仅如此,这样可以迫使攻击者不断改变他们的攻击方法,并且增加攻击者绕过下一代安全产品的难度。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/141342.html<

(0)
运维的头像运维
上一篇2025-03-04 08:55
下一篇 2025-03-04 08:56

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注