hacking SecureCRT Script Interfaces

本文围绕破解SecureCRT脚本接口展开,先阐述了SecureCRT是支持脚本的终端软件,目标是暴露其接口。接着介绍了原理,包括程序使用IActiveScript接口导出函数的机制。然后说明实现步骤,如获取和使用接口。最后提及此方法有版本限制,未来可探索新方法。

hacking SecureCRT Script Interfaces

    Yes you can say this is a crack paper but I perfer call it "hack" because in my opinion "crack" means rip the target,find something you want.However "hack" means look around the target,use some method and have fun.Of cause here crack is a method of hack:)
    The target is SecureCRT form VanDyke Software,version 4.0.7.I spent a week work on it.The mothed described below IS NOT intend for diffrent versions.
    OK,here comes the detail.

I. THOERY
    1.The target
       SecureCRT is a popular terminal software which can be used to connect to serial port or remote servers with telnet,SSH etc easily and powerful.And as a feature it  supports VBScript and JScript programs for advance users.But VanDyke didn't provided a API set for developers using asm/c/c++.Now our target is to expose the interface with some works,then we can get some advantage more then the weak script provides.Just for fun:)
     2.deep view
       First of all we should have some knowledge about how SecureCRT provide script interface instead of  api interface.Refer to MSDN and there's many ways can make a program support script.Then fire up IDA PRO and decomplie the exe file comes some interesting strings:
      .data:004E2748 aScriptingErr_2 db 'Scripting error',0Dh,0Ah ; DATA XREF: sub_42BC80+7C8
      .data:004E2748                 db 'AddNamedItem failed: 0x%x',0
       Find "AddNamedItem" in msdn,now we know the program uses IActiveScript interface to export functions to scripts.Below are mechanism of the communication(see figure1.gif):

       1)When load a script form SecureCRT's "Script" menu, the program starts a thread and check the first two lines of the script to make sure if it is a SecureCRT script.Commonly it is :
 #$language = "VBScript"
 #$interface = "1.0"
       2)Then SecureCRT starts the script engine and get IActiveScript interface from the engine.
       3)Now SecureCRT expose a instanced IActiveScript object named "crt" to the engine use  IActiveScript::AddNamedItem.Note the IActiveScript might already exist even no script loaded.
       4)Then script engine starts to parse and execute the script.

II.IMPLEMENT
     1.Get the interface
       If you compare a SecureCRT Script (for example a vbs file) and a common VB script,you will find that the  diffrent.Not only the first two lines not recognised in common VB scripts,but also the object "crt".
     When we use a object in VB script,the first step is to create a object:
     set exl = Excel.xls     'get a excel worksheet object

     But in SecureCRT script,no object created and a object named "crt" appears as if it is a built-in VB Script object.
     This is because a common VB script is running on a globe enviroment but SecureCRT scripts runs under a specific enviroment where really exists a pre-defined object "crt".And this is our target:)
     The works left is cracking details.I think with a decomplier and debugger it 's a easy case.
     2.Use the Interface
       finally we goes here:) To use the Interface,we should go into SecureCRT's process space called "injuction". The source code attached says all works and blow are some notes.
     1)Because the patch dll will modify the code squence(called SMC),the code section of securecrt.exe must be modified to READ|WIRTE|EXECUTE.Or you will meet a Window Execption(tm).And because dll codes should be called at least once,add function exported by the injuction dll to securecrt.exe's import section.
     2)The securecrt.c and securecrt.h in source code are generated by MIDL the IDL complier provided by Microsoft.IDL file comes from typelib resource warped in SecureCRT.exe Because of The IDL provides dual interface,so we can leave from the mud of IDispatch interfaces (from a SDK point).
     3)Function patch should be static because the code jump must addressed to a vaild address.
     4)The operation codes(GetInterface() function here) is called inside a target function,beware of stack frame.(I spent one whole day on the mass)
     5)the script engine loads after SecureCRT found a vaild script,of cause you can get the interface directly,but it's not the purpose of this papper.

     The code get the securecrt version and set to caption .
III.BEYOND
     Because of used fixed address to patch,so can't be used for all versions.In future,I think we can get the interface use a different method such as script debug interface(http://msdn.microsoft.com/msdnmag/issues/1200/active/toc.asp?frame=true) or even in-porc server techs.I think no modificition would be applied to target.
     Of cause you can rip the code as your own terminal function,but not suggested.
     If you go further the way and do something concinnity,please send me a mail,thanks:)
   
IV.Tools
     IDA PRO
     Numega Softice
     Numega BoundsChecker
     PE Editor
     MS COM/OLE Viewer (shipped with MS SDK)
     MS VC 6
V.Reference
     MASM 32 V8 COM Package docs

                                                                                 Have Fun

    

 


                                                      

内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值