[译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件

2023-10-27

这是作者新开的一个专栏,主要翻译国外知名的安全厂商APT报告文章,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助。前文分享了钓鱼邮件网址混淆URL逃避检测,这篇文章将介绍APT组织Fin7 / Carbanak的Tirion恶意软件,包括OpBlueRaven行动。

在这里插入图片描述

  • 原文标题:OpBlueRaven: Unveiling Fin7/Carbanak - Part I : Tirion
  • 原文链接:https://threatintel.blog/OPBlueRaven-Part1/
  • 作者时间:YUSUF ARSLAN POLAT 2020-07-31
  • 文章来源:threatintel.blog、PRODAFT SARL、INVICTUS


一.Fin7简介

FIN7组织的攻击目标是金融机构(尤其美国金融公司),以钓鱼邮件为主要攻击渠道。常见攻击手法包括:

  • 使用精密的鱼叉式网络钓鱼邮箱,来说服目标对象下载附件,然后透过附件让其公司网络遭到恶意软件的感染
  • 擅长使用非PE文件进行攻击,在攻击过程中很少有PE文件落地
  • 主要的攻击载荷都是基于js脚本和powershell脚本进行,这在一定程度上躲避安全软件的查杀
  • 在FIN7所使用的恶意软件中,最常见的是Carbanak恶意软件的特制版本,已在对银行的多次攻击中使用过

常规攻击流程如下图所示,攻击者以钓鱼邮件为进入渠道,在恶意文档中嵌入vbs脚本,vbs脚本运行后解密后门程序写入注册表中,同时将调用后门程序的脚本以ads隐藏在磁盘文件中。在后门运行后,使用DNS TXT做为C&C通信方式。

在这里插入图片描述

在邮件附件文档中,使用了恶意宏代码,不同钓鱼文档的界面大体如下,值的一提的是使用汉堡图片做为诱饵文档时的攻击目标是一家国外的食品公司。遭到FIN7入侵的公司包括Chipotle、Chilli’s和Arby’s等知名品牌,该组织被认为已入侵数千个业务据点,并且已窃取数百万个信用卡号码。

在这里插入图片描述

随着技术深入,该组织部署了新的战术(类似于BadUSB)。Securityaffairs网站发现FIN7通过美国邮政服务(USPS)给目标企业的人力资源、信息技术或执行管理部门的员工邮寄包裹,包含USB设备、礼品卡等。当员工将USB设备插入计算机时,会注入命令以下载并执行以GRIFFON跟踪的JavaScript后门。

在这里插入图片描述

这样的包裹被发送给多家企业,包括零售业、餐饮、酒店。武器化的USB设备模仿用户击键特征,启动PowerShell命令从远程服务器检索恶意软件。专家们观察到恶意代码联络域名与IP地址位于俄罗斯。

该USB设备使用Arduino微控制器ATMEGA32U4,并编程模拟USB键盘。由于PC默认情况下信任键盘USB设备,一旦插入,键盘模拟器就会自动插入恶意命令。然后Powershell脚本运行第三阶段JavaScript,收集系统信息并删除其他恶意软件。根据FBI的警告,一旦收集到目标的信息,FIN7组织就开始横向移动以获取管理权限。在收集到的信息发送到C&C服务器之后。主JS代码会进入一个无限循环,在每个循环迭代中睡眠2分钟,然后从命令和控件获取一个新命令。

在这里插入图片描述

总之,一旦USB控制器芯片被重新编程用于其他用途(如模拟USB键盘),这些设备就可以被用来发动攻击,并在用户不知情的情况下感染他们的计算机。再加上这些设备非常便宜,任何人都可以随时使用,这也意味着攻击者更深入地利用这些技术和设备只是时间问题。

参考资料:



二.关于Fin7和Carbanak

本文旨在为读者提供有关PRODAFT(瑞士)&INVICTUS(欧洲)威胁情报(PTI)团队针对不同威胁参与者的最新操作的详细信息,并发现与臭名昭著的Fin7 APT组织相关。在文章中,所有信息都源自威胁参与者的一次OPSEC故障,我们将尝试逐步扩展主题,在不断发现的基础上扩大范围。

在2020年5月至7月之间,PRODAFT威胁情报团队的四名成员进行了BlueRaven行动。案例研究源于发现一组看似不重要的轻微OpSec故障。当然,后来发现这些威胁因素与臭名昭著的Fin7 / Carbanak威胁因素有关联。

PTI的OP(PTI’s OP)源于攻击者一方的OPSEC故障。与先前发现和发布的数据不同,使此OP如此与众不同的是,我们设法发现了大量有关攻击者工具集的未发布信息,这些信息揭示了攻击者的TTP。

Carbanak Group / Fin7于2014年首次被发现,是世界上最著名的APT组之一,并且是最早曝光的APT组之一。该组织被认为在全球范围内造成超过9亿美元的损失。我们的OP结果发现了有关这些威胁参与者的以下关键信息:

  • 获得Fin7中某些攻击者的真实身份
  • 有关Fin7的工具和攻击方法的详细证据已经被发现
  • Fin7和REvil勒索软件组(将在后面的阶段中详细介绍)之间的关系已经被发现

撰写此报告旨在提高认识并协助网络安全专家进行分析。当然,PRODAFT的一些发现已被删除。因此,授权机构可以与PRODAFT或INVICTUS联系以进行进一步的披露。

每篇文章都将讨论操作的特定方面,不仅仅包括攻击方法、组织和攻击者的身份。我们的团队还设法窃听攻击者之间的各种对话,这些对话中的大多数也将在整个系列中发布。



三.Carbanak后门

Carbanak Backdoor是我们小组获得的第一批发现之一。当前版本的Carbanak后门程序(该团队中最知名的工具,即Carbanak组的名字)是引起我们团队关注的第一个工具。 根据PE文件标题在2019年11月编译的“3.7.5”版本是后门命令和控制服务器最新检测到的版本。下面的屏幕快照提供了“3.7.5”版Carbanak后门管理面板的屏幕截图。

在这里插入图片描述

我们将获得的最新版本与2017年Virustotal中的“命令管理器”版本进行了比较,并对此工具进行了评估。下图反映了上述两个版本反编译获得的源代码之间的差异。图中仅列出了两个版本之间的源代码,左列属于2017年上传到Virustotal的文件,右列属于我们团队获得的“3.7.5”版本。蓝线表示不同的文件,而绿线表示新文件。

通过对命令和控制服务器软件的检查,可以看出,GUI界面对插件进行了基本更改,以创建更详细的错误日志,并添加了新的语言编码。

在这里插入图片描述

确定了2019年编译的6个版本的恶意软件“命令管理器”工具。下图给出了检测到的版本的时间戳。

在这里插入图片描述

在旧版本的Bot.dll中,它是在受害设备上运行的恶意软件的组件,在反汇编中检测到981个函数,而在同一软件的新版本中检测到706个函数。使用Diaphora二进制比较工具,有607个函数获得最佳匹配分数,而有43个函数获得部分匹配。此外,与Virustotal中的旧版本相比,新的bot文件的文件大小小于50kb。在检查新的bot文件时,可以看到,旧版本中除基本函数以外的函数都是作为插件实现的。这些新插件可以执行诸如按键记录、过程监视之类的操作,并且可以通过反射加载方法无文件执行。 结果,恶意软件的文件大小减小了,从而为鉴识基于签名的安全软件解决方案留下了更少的痕迹。

  • hd.plug
  • hd64.plug
  • hvnc.plug
  • hvnc64.plug
  • keylog.dll
  • keylog64.dll
  • procmon.dll
  • procmon64.dll
  • rdpwrap.dll
  • switcher.dll
  • switcher64.dll
  • vnc.plug
  • vnc64.plug

在本小节中,将检查先前发现的文件中“not”的一些插件。由于这些是工具包中前所未有的函数,因此,我们认为以下内容对于进一步分析该组织的TTP至关重要。



1.键盘记录插件

“keylog.dll”插件使用RegisterRawInputDevices API捕获用户击键。为了确定在哪个上下文中使用了击键,前台进程的“可执行文件路径(Executable File Path)”、“ Windows文本(Windows Text)”和时间戳(Timestamp)信息将与击键一起记录下来。

在这里插入图片描述

键盘记录插件使用Windows GDI + API将收集的数据转换为Bitmap,并将其写入用户%TEMP%目录,名为“ SA45E91.tmp”的文件夹中。下图显示了恶意软件用来存储数据的函数。

在这里插入图片描述

下图给出了所获得日志示例的屏幕截图。

在这里插入图片描述



2.过程监控器插件

该插件可以跟踪在目标系统中运行的进程,并用于获取有关所需进程的开始和终止时间的信息。下图给出了收集有关正在运行进程的信息的函数屏幕快照。

在这里插入图片描述



四.Tirion Loader(Carbanak后门的未来)

Fin7组织的新加载程序工具是名为Tirion的恶意软件,该软件被认为是替代Carbanak后门程序而开发的。它包含许多功能,用于信息收集、代码执行、侦察和横向移动。与上一节中检查过的最新版本的Carbanak后门程序一样,该恶意软件执行的许多功能已作为独立的插件开发,使用反射性加载方法将它们加载到目标系统中并以无文件方式执行。公开数据显示,Carbanak后门的开发目前已停止,并且同一团队正在Tirion Loader上进行开发和测试。攻击者之间的通信日志表明,此新工具旨在替代Carbanak后门。

在这里插入图片描述

Tirion恶意软件的功能如下:

  • 信息收集(Information Gathering)
  • 截屏(Taking Screenshot)
  • 列出运行进程(List Running Processes)
  • 命令/代码执行(Command / Code execution)
  • 进程迁移(Process Migration)
  • Mimikatz执行(Mimikatz Execution)
  • 密码获取(Password Grabbing)
  • 激活目录及网络侦听(Active Directory and Network Recon)

检测到的最新Tirion Loader版本属于“2020年6月28日23:24:03”编译的版本“1.6.4”。下图显示了攻击者可以在机器人设备上执行的操作。“1.0”版本是最早检测到的版本,被认为是最早使用的版本,已在“2020年3月5日20:29:53”上进行了编译。

在这里插入图片描述

攻击者编写的“readme.txt”文件中清楚地说明了恶意软件的基本组件。

在这里插入图片描述

相关翻译如下,该系统包含3个组件:

  • 服务器(Server)
  • 客户端(Client)
  • 加载器(Loader)

这些组件的相关性如下,加载器定期连接到服务器,客户端通过永久连接连接到服务器。加载器执行来自服务器的命令并向服务器发送响应。通过客户端,用户通过服务器向加载器发出命令;接收到来自加载器的响应后,服务器将其传输到cl。


1.文件结构

恶意软件的文件组织如下:

在这里插入图片描述

在这里插入图片描述


2.Readme.txt

“readme.txt”文件中某些重要项目的英文翻译说明如下,该文件指示从恶意软件的第一版本到“1.6.3”版本的更改,并包含构建说明。(省略俄语原文)

在这里插入图片描述


3.Loader组件

该恶意软件的这一组件将在受害系统上运行,大小约为9kb,并从服务器运行命令。当攻击者想要在受害者的设备上运行某个功能时,包含该功能的相关插件文件会以反射方式加载到受害者的设备上,并以无文件方式执行。

服务器和加载器之间的网络流量使用在构建阶段确定的密钥进行加密。下图包含相关的加密算法。

在这里插入图片描述


4.PswInfoGrabber

它是一个DLL文件,负责从目标系统中窃取和报告敏感信息,尤其是浏览器和邮件密码。确定攻击者也独立于Tirion Loader使用了此工具。在下图中,包含由恶意软件收集的日志的屏幕截图。

在这里插入图片描述



五.OpBlueRaven | 第一部分结尾

在这些系列的第一版中,我们希望通过将PTI发现的最新Carbanak工具包与可公开访问的较旧版本进行比较,以介绍我们的分析报告。

在下一篇文章中,我们还将通过提供攻击者之间实际对话的参考来更深入地研究攻击者的TTP。除此之外,我们还将提供直接从威胁参与者的计算机获取的屏幕截图。

在这里插入图片描述

最后希望这篇文章对您有所帮助,中秋节和国庆节快乐。某人照顾好自己喔!

前文分享:

2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、逆向分析、APT分析报告、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

在这里插入图片描述

(By:Eastmount 2020-10-04 星期天 晚上12点写于武汉 http://blog.csdn.net/eastmount/ )


附录:YARA签名

import "pe"
rule apt_Fin7_Tirion_plugins
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Tirion Loader's plugins. It is used by Fin7 group. Need manual verification"
        version = "1.0"
        date = "2020-07-22"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "fdc0ec0cc895f5b0440d942c0ab60eedeb6e6dca64a93cecb6f1685c0a7b99ae"
        
    strings:
        $a1 = "ReflectiveLoader" ascii
        $a2 = "plg.dll" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000 and (pe.exports("?ReflectiveLoader@@YA_KPEAX@Z") or
            pe.exports("?ReflectiveLoader@@YGKPAX@Z"))
}

rule apt_Fin7_Tirion_PswInfoGrabber
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Tirion Loader's PswInfoGrabber plugin. It is used by Fin7 group."
        version = "1.0"
        date = "2020-07-22"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "e7d89d1f23c2c31e2cd188042436ce6d83dac571a5f30e76cbbcdfaf51e30ad9"
   
    strings:
        $a1 = "IE/Edge Grabber Begin" fullword ascii
        $a2 = "Mail Grabber Begin" fullword ascii
        $a3 = "PswInfoGrabber" ascii
        $a4 = "Chrome Login Profile: '"
        $a5 = "[LOGIN]:[HOST]:"
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 150KB
}

rule apt_Fin7_Tirion_loader
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Tirion Loader's loader component. It is used by Fin7 group."
        version = "1.0"
        date = "2020-07-22"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "e7d89d1f23c2c31e2cd188042436ce6d83dac571a5f30e76cbbcdfaf51e30ad9"
   
    strings:
        $a1 = "HOST_PORTS" fullword ascii
        $a2 = "KEY_PASSWORD" fullword ascii
        $a3 = "HOSTS_CONNECT" ascii
        $a4 = "SystemFunction036"
        $a5 = "ReflectiveLoader"
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15KB
}

rule apt_Fin7_Carbanak_keylogplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's keylogger plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "db486e0cb94cf2bbe38173b7ce0eb02731ad9a435a04899a03d57b06cecddc4d"
   
    strings:
        $a1 = "SA45E91.tmp" fullword ascii
        $a2 = "%02d.%02d.%04d %02d:%02d" fullword ascii
        $a3 = "Event time:" fullword ascii
        $a4 = "MY_CLASS" fullword ascii
        $a5 = "RegisterRawInputDevices" fullword ascii 

    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000
}

rule apt_Fin7_Carbanak_procmonplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's process monitoring plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "3bf8610241a808e85e6ebaac2bb92ba4ae92c3ec1a6e56e21937efec71ea5425"
   
    strings:
        $a1 = "[%02d.%02d.%04d %02d:%02d:%02d]" fullword ascii
        $a2 = "%s open %s" fullword ascii
        $a3 = "added monitoring %s" fullword ascii
        $a4 = "pm.dll" fullword ascii
        $a5 = "CreateToolhelp32Snapshot" fullword ascii  

    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 10000
}

rule apt_Fin7_Carbanak_hdplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's hidden desktop plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "39b545c7cd26258a9e45923053a5a64c9461470c3d7bfce3be1c776b287e8a95"
   
    strings:
        $a1 = "hd%s%s" fullword ascii
        $a2 = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" fullword ascii
        $a3 = "StartHDServer" fullword ascii
        $a4 = "SetThreadDesktop" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000
}

rule apt_Fin7_Carbanak_hvncplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's hvnc plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "40ce820df679b59476f5d277350dca43e3b3f8cac7ec47ad638371aaa646c315"
   
    strings:
        $a1 = "VncStartServer" fullword ascii
        $a2 = "VncStopServer" fullword ascii
        $a3 = "RFB 003.008" fullword ascii
        $a4 = "-nomerge -noframemerging" fullword ascii
        $a5 = "--no-sandbox --allow-no-sandbox-job --disable-3d-apis --disable-gpu --disable-d3d11" fullword wide
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 300000
}

rule apt_Fin7_Carbanak_vncplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's vnc plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "ecf3679f659c5a1393b4a8b7d7cca615c33c21ab525952f8417c2a828697116a"
   
    strings:
        $a1 = "VncStartServer" fullword ascii
        $a2 = "VncStopServer" fullword ascii
        $a3 = "ReflectiveLoader" fullword ascii
        $a4 = "IDR_VNC_DLL" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 400000
}

rule apt_Fin7_Carbanak_rdpplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's rdp plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "0d3f1696aae8472145400d6858b1c44ba7532362be5850dae2edbd4a40f36aa5"
   
    strings:
        $a1 = "sdbinst.exe" fullword ascii
        $a2 = "-q -n \"UAC\"" fullword ascii
        $a3 = "-q -u \"%s\"" fullword ascii
        $a4 = "test.txt" fullword ascii
        $a5 = "install" fullword ascii
        $a6 = "uninstall" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 400000
}

rule apt_Fin7_Carbanak_switcherplugin  
{
    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's switcher plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "d470da028679ca8038b062f9f629d89a994c79d1afc4862104611bb36326d0c8"
        
    strings:
        $a1 = "iiGI1E05.tmp" fullword ascii
        $a2 = "oCh4246.tmp" fullword ascii
        $a3 = "inf_start" fullword ascii
        $a4 = "Shell_TrayWnd" fullword ascii
        $a5 = "ReadDirectoryChangesW" fullword ascii
        $a6 = "CreateToolhelp32Snapshot" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件 的相关文章

  • 笔记本式计算机处理器,最新的笔记本计算机处理器(CPU)性能排名

    笔记本电脑最重要的硬件是CPU 中央处理器 它的质量直接关系到计算机的性能 CPU不好 其他硬件也很好 计算机性能也不好 因此 购买笔记本电脑时 务必要考虑CPU性能 以下编辑器分享了笔记本计算机的CPU性能排名 让我们看一下 笔记本CPU
  • UPC——放牛奶的冰箱(二分法)

    题目描述 冬冬在古子城购买了一台冰箱 冰箱内部可以表示为高度为h 深度为1 宽度为2的矩阵 最初冰箱底部只有一个架子 但冬冬可以在任何一个格子顶部放隔板 隔板的宽为2 不占用任何空间 将冰箱内部分隔成上 下两部分 冬冬有n瓶牛奶要按顺序放入
  • java 关于Map的key可不可以是自定义对象的学习

    JAVA 关于Map的key可不可以是自定义对象的学习 虽说经常用map 但是我用它的时候 key都是用String或者Integer类型 我相信大多数人都会是这样用的 哈哈 今天偶然想到 可不可以用自己定义的对象作为map的key呢 因为
  • Python入门练习判断题

    1 1 1 1 高级语言程序要被机器执行 只有用解释器来解释执行 1分 答案 错误 1 2 1 2 不可以在同一台计算机上安装多个不同的Python解释器版本 1分 答案 错误 1 3 1 3 Python是一种跨平台 开源 免费的动态编程
  • 自控重温1

    自控第一章 1 基本概念 1 自动控制 2 自动控制相关历史 2 自控 要素 1 系统描述 这里主要是讲解对于同一个线性系统的不同描述方式 而不是教你如何对系统进行建模 2 控制方法 如何施加外作用实现控制 控制信号 偏差 控制器 3 被控
  • 深圳二手房房价分析及预测

    分析目标 通过处理后的房价数据 筛选对房价有显著影响的特征变量 确定特征变量 建立深圳房价预测模型并对假设情景进行模拟 数据预处理 import pandas as pd import os file path D Python数据分析与挖
  • 外排序 归并排序 超级详细 拜托点赞

    外排序 就是比如说你在文件中你有很大的数组 你无法一起加载到内存中 只能一部分一部分的加载带内存中 然后对它进行排序 他的思想就是 我先分为几份 然后对每一份先排序 排完序后我再进行归并排序 具体步骤程序都标注明白了 请看程序注释就可以 拿
  • 字符串查找增强:findstr

    在文件中寻找字符串 FINDSTR B E L R S I X V N M O F file C string G file D dir list A color attributes OFF LINE strings drive path
  • cnn中的超参数参数设置_了解更快的r cnn配置参数

    cnn中的超参数参数设置 When I first started creating the Faster R CNN model using TensorFlow Object Detection API I couldn t find
  • jq移除某个元素样式

    执行 示例 select removeCss color select removeCss color border width function fn removeCss function options var type typeof
  • 关于git-u、--set-upstream和--set-upstream-to参数的理解

    1 git branch 既可以使用 set upstream又可以使用 set upstream to 但是前者已经被弃用 用法 git branch set upstream to origin mybranch1 mybranch1
  • 设计模式之责任链模式(Chain)

    设计模式之责任链模式 Chain 本篇为 https github com iluwatar java design patterns tree master chain 阅读笔记 意图 避免请求发送者与接收者耦合在一起 让多个对象都有可能
  • 【Cocos谁学谁会】定制属于自己的脚本模板

    版权申明 本文原创首发于以下网站 您可以自由转载 但必须加入完整的版权声明 博客园 https www cnblogs com MogooStudio csdn博客 https blog csdn net nmjkl001 知乎 https
  • 【C# in Unity】取绝对值;position变换注意点;协程注意点

    1 C 中取绝对值 Math Abs value C 中取绝对值的函数 weixin 30715523的博客 CSDN博客 2 position变换注意点 不可以这样写 content transform position x x 正确写法

随机推荐

  • Android Studio中会自动添加@org.jetbrains.annotations.Nullable 的解决办法

    在Activity中重写onCreate等方法时 输入完onCreate后直接回车导入 会自动引入如下代码 Override protected void onCreate Nullable org jetbrains annotation
  • Python蓝桥杯 基础练习 A+B问题

    A B map int input split print A B input 从键盘输入数字 split 未带参数时 将字符串以空格进行分割 map function iterator 对可迭代对象iterator进行迭代使用functi
  • Ubuntu下查看CUDA和CUDNN版本的方法

    cuda 版本 cat usr local cuda version txt cudnn 版本 cat usr local cuda include cudnn h grep CUDNN MAJOR A 2 这个结果就表示我的CUDA版本为
  • task3:西瓜书第四章(1)

    本次是阅读西瓜书第四章 以下为笔者是在阅读第四章决策树时一些之前不曾关注地方的补充 1 实际决策树学习算法是基于启发式算法 如贪婪算法 寻求在每个节点上的局部最优决策 这样的算法思想决定了在执行过程中不能保证返回全局最优决策树 例如ID3算
  • 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*

    介绍 本文将指导您安装英特尔 硬件加速执行管理器 英特尔 HAXM 这是一款可以使用英特尔 虚拟化技术 VT 加快 Android 开发速度的硬件辅助虚拟化引擎 管理程序 前提条件 英特尔 HAXM 要求首先安装 Android SDK 版
  • 几行代码搞定Android底部导航栏

    底部导航栏的实现也不难 就是下边是几个Tab切换 上边一般是一个FrameLayout 然后FrameLayout中切换fragment 网上有不少关于Android底部导航栏的文章 不过好像都只是关于下边Tab切的 没有实现Tab与fra
  • Hexo搭建博客教程-基于Butterfly主题

    title Hexo搭建博客教程 tags Hexo 博客教程 categories Hexo keywords Hexo 博客教程 description Hexo搭建博客 以及主题butterfly中一些常规配置 cover https
  • sqlite3交叉编译

    1 交叉编译sqllite3可以先从官网下载最新最新的源码进行编译 sqlite3下载sqlite3有两种版本的源代码 sqlite amalgamation 3420000 zip这种是将所有的操作放到sqlite3中进行使用的 虽然官方
  • synchronized 的原理

    文章目录 前言 通过一系列的问题 了解synchronized 总结 前言 synchronized 是一个关键字 在多线程中 为了同步代码块 或者同步方法就会使用到 在面试的过程中 也是非常常见的 所以很有必要掌握 通过一系列的问题 了解
  • 题5:字符串的压缩

    题目 利用字符重复出现的次数 编写一个方法 实现基本的字符串压缩功能 比如 字符串 aabcccccaaa 经压缩会变成 a2b1c5a3 若压缩后的字符串没有变短 则返回原先的字符串 给定一个string iniString为待压缩的串
  • Pymol入门教程--基础

    Pymol入门教程 基础 软件界面介绍 内置demo介绍 打开PyMOL 点击1 1菜单窗口的Wizard菜单 然后点击Demo gt Representations然后在2 3对象窗口和2 4模式窗口之间会出现各种示例 Represent
  • Docker-Compose的安装

    一 什么是Docker Compose Compose项目来源于之前的fig项目 使用python语言编写 与docker swarm配合度很高 Compose 是 Docker 容器进行编排的工具 定义和运行多容器的应用 可以一条命令启动
  • IDEA插件安装以及一些不错的插件的推荐

    IDEA有自己庞大的插件支持 来丰富生态 现在一个好用点的工具如果没有点插件都不好意思 当然了 微信除外 因为人家会告你 一 插件的安装 IDEA的插件安装和别的IDE工具 比如eclipse或者vscode的位置都差不多 还是具体说一下
  • TensorFlow二元-多类-多标签分类示例

    探索不同类型的分类模型 使用 TensorFlow 构建二元 多类和多标签分类器 二元分类 简述 逻辑回归 二元交叉熵 二元分类架构 案例 逻辑回归预测获胜团队 多类分类 简述 Softmax 函数 分类交叉熵 多类分类架构 案例 预测航天
  • Jenkins CI、CD入门操作

    基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 准备测试项目 准备一个简单的Spring boot 项目 Jenkins新建任务 Jenkins关联Gitlab自动拉取最新
  • 如果一个人真的懂你

    一辈子 遇见一个真正读懂你的人 真的很难 人的一生中会遇到几十甚至上百万个人 其中能和你打招呼 称得上是朋友的人就更少 而在这么多人当中 却很有可能连一个真正懂你的人都没有 有些人 就算相识再久 也无法成为知己 有些人 即使你说了千句 他都
  • 基于错误信息的SQL盲注

    何谓盲注 在SQL注入基础一文中介绍了SQL注入的基本原理 可以轻易注入的原因是知道SQL拼接代码是怎么写的 很多情况下 很难甚至无法知道对方的SQL拼接语句是怎么写的 这里情况下需要做尝试 分析代码是采用何种拼接结构 然后再写个万能注入公
  • python docx 表格样式的设置修改表格列宽

    我的需求是设置表格的列宽和高度 之前的代码使用网上找的方法 table cell y x width Cm 4 无论怎么修改都是无效的 最后正确的代码是 col table columns 1 col width Inches 5
  • 修改mt4服务器地址,修改mt4服务器地址

    修改mt4服务器地址 内容精选 换一换 云平台支持修改主网卡的私有IP地址 具体操作请参见本节内容 如需修改扩展网卡的私有IP地址 请删除网卡 并挂载新网卡 云服务器已关机 如果网卡绑定了虚拟IP或者DNAT规则 需要先解绑 如果网卡上有I
  • [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件

    这是作者新开的一个专栏 主要翻译国外知名的安全厂商APT报告文章 了解它们的安全技术 学习它们溯源APT组织的方法 希望对您有所帮助 前文分享了钓鱼邮件网址混淆URL逃避检测 这篇文章将介绍APT组织Fin7 Carbanak的Tirion