一、前言:
 回家办事,家中老式电脑显着老旧,平日不在家,父母就用电脑斗斗地主,看看电影,每次回来都会给他们拆开主机清清灰,打开系统清清垃圾、打打补丁。
 发现竟然变成了XP系统?转念一想,应该是电脑坏了去了电脑店重装了系统....而且给装的XP。顺手下个电脑清理,还扫出了病毒?来吧,拿起U盘拷贝下来,仍到虚拟机,然后写一篇态度不严谨的文章吧。ps:虽然这篇文章不是来分析这个样本的

Borland Delphi样本与病毒概念思考

二、静态分析:
①PEiD来探探,发现么壳么加密......,如下所示:
Borland Delphi样本与病毒概念思考
                      图片一:查壳
②拉入火绒里面让他跑一跑,看一看样本行为,如下所示:
Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
                      图片二:行为分析
 ③观察后,既没有镜像劫持(自启动行为),有没有与服务器链接cc行为,只是删除了本身文件,没有对注册表或者系统进行修改读写,误判了?
 逆向的时候看过一些BorlandDelphi的程序,病毒是没有交互的(隐蔽性)是没有所谓的窗口,一定会隐藏关键字符串与数据,所以不可以用算法分析的方式去解析。那么意味分析Borland Delphi入口点,说真的以前真没从入口点分析过(MFC的病毒经常入口点分析- -),拉入IDA如下所示:

Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
                      图片三:流程图
④如上图所示,整个程序存活周期,他们对于整个程序起着什么样的作用呢?如下所示:

FunctionName Use
InitExe .rsrc中读取资源drm,调用StartExe来InitRoutineTable读取所有函数(FunctionTable),执行Routine。
CreateForm 创建Form,初始化Delphi的主要函数,第二个参数edx指向TCustomForm虚函数表指针,构造程序的_cls_Forms_TCustomForm主form
Run 一般都是AddExitProc把form析构添加到退出函数执行流程,下面就是HandleMessage消息循环。
Halt0 当dwReasin为0时候调用ExitProcess结束

⑤对上述函数有了认知,我们就知道这些库函数作用及是否我们需要,我们就可以很快找到消息循环,并且找到了一些有意思的函数,如下所示:
Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
                      图片四:消息回调
⑥根据样本行为好像没有那么复杂的操作,我们需要借助神奇Dark工具来辅助分析,如下所示:
Borland Delphi样本与病毒概念思考
                      图片五:Dark分析
⑦有价值的东西还真是不少,在FormCreate中发现了一些有价值的代码,如下所示:
Borland Delphi样本与病毒概念思考
                      图片六:FormCreate
 ⑧代码说的明明白白,当前样本运行系统是windows7,所以说会进入到函数sub_466C24(),先来看看函数中的代码,如下所示:
Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
                      图片七:版本匹配
⑨看到这里,你应该明白行为分析中的行为,在代码层面的逻辑及实现目的。这是一款支持低版本系统如xp,windows2000等的病毒......,至于定时器下断,没有被执行,我们拉入微步云,线上分析看一看,如下所示:
Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
                      图片八:线上分析
⑩与我们的分析是结果基本是一样的,那么到底是不是病毒还是被误杀呢?我们再来分析一下如果是xp系统会如何运行(如果你想动态调试,其实不用部署xp环境,可以通过修改关键跳,实现定向函数执行),静态分析如下:
Borland Delphi样本与病毒概念思考
                      图片九:第三方部署
 ⑪这样看来判定危害级别的话是构建不成病毒,那么回调函数中为什么有HOOK等模块呢?很简单这个应该是第三方工具安装XP系过程中一些预热或环境部署,当然拉入XP中运行后发现了生成了快捷链接与注册表操作,我们来看一下:
Borland Delphi样本与病毒概念思考
Borland Delphi样本与病毒概念思考
                      图片十:XP环境下测试
⑫上述都是什么?A0000002.ini这个文件就是GHOST部署,网吧、学校教室每次重启都会被还原系统,那时候好像就是用这种文件配置的,而那些快捷方式指向文件mplayer2.exe是Windows Media Player相关程序,用于打开、播放和管理媒体文件,且线上扫描全部安全通过。
⑬综合各因素,他不是一个病毒,只是有一些敏感操作被误杀成了病毒,我们来看一下线上扫描结果,也就是最开始有删除自身A0000001.exe程序,如下所示:
Borland Delphi样本与病毒概念思考
                      图片十一:各大厂商启发式查杀

关于病毒概念个人一些思考:
启发式只是一个概念性的话题,包括智能机器引擎,算法深度扫描启发等等,用来预防未知或者新变种病毒种类,有效的识别那么还未被发现的威胁。
更简单来说如何识别下载文件或者运行是有恶意行为,这个文件被执行起来如何判定他所作所为是安全的。各大厂商八仙过海各显神通,通过PE结构,文件大小,MD5、SHA1/256,扫描汇编、识别恶意字符串、识别敏感API等等,把一些已知的病毒家族、变种特征保存在数据库,这就是所谓的特征码,几个特征码可以辨别一个病毒家族,同样也可以归纳一类病毒家族特征。
 那么也许是后来发现越来越多的家族病毒、勒索、挖矿出现防不甚防,即使有了启发式,通过多项检查,符合其中的一项或者多项把你判定成病毒,强壳直接带壳查杀.....,所以加密混淆是现代病毒基本功,如何隐蔽不被杀毒发现更是一门艺术。
 系统相对是灵活的,所以病毒也相对是灵活的,这是因为杀毒软件防御能力越强,单凭一门语言或者手段是没办法将病毒通过漏洞或者挂马等植入到系统并成功执行,所以最近几年APT概念越来越活跃、Xbash这种恶意软件也是越来越成熟,病毒(恶意行为)从原始pc一路过关斩将,杀到了移动网络、嵌入式、物联网、人工智能等,这也许就是的本质,人性。
 也曾自己写过一些云查杀,其实就是上述说的启发式,读取文件扫描一些特征码来判定是否有恶意行为,那么稍作混淆或加密,如果你没有完善的逻辑或更多的特征去识别,意味着他将过掉你的防线。病毒可以拿杀毒软件进行测试,过掉杀毒软件,而杀毒软件不能拿未知的病毒进行特征码测试查杀,其实安全公司一直都处于被动,也就是防御状态,兵来将挡,而没办法主动出击,因为你跟不知道你出击的对象,下一次将会是一个全新的变种出现在你面前。
 时间久了,当然要改进,所以要追踪病毒的来源、目的等,通过cc交互或者通讯,去琢磨目的及那么背后的东西,通过ip、网站、邮箱、电话等去溯源分析,找到源头,不至于太被动,也要慢慢的尝试主动出击,有点像反调试与反反调试,有可能更为复杂。大多数安全公司有在做这块的工作,掌握一线情报才能主动权。

身为一个安全研究人员,当然现在职位划分的越来越清晰。样本分析,漏洞挖掘,竞品分析等等,其实本质都是人与人对抗,智慧与智慧对抗,保持一颗谦虚学习的心,踏实务实才能在这条路上走的更长远。
Borland Delphi样本与病毒概念思考