欢迎进入Allbet Gaming官网。Allbet Gaming官网开放Allbet Gaming登录网址、Allbet Gaming开户、Allbet Gaming代理开户、Allbet Gaming电脑客户端、Allbet Gaming手机版下载等业务。

首页科技正文

filecoin挖矿(www.ipfs8.vip):若何以最小的价值恢复遭受入侵的流动目录

admin2021-09-23145资讯

在本文中,我们将为读者详细先容流动目录林的入侵恢复(compromise recovery)历程。虽然我已经写了一段时间的博客,并阅读了大量关于流动目录的资料,但有一个主题一直未曾涉足,那就是,当流动目录遭受攻击者入侵后,该若何恢复?

现实上,关于恢复流动目录林(Active Directory forest)的文章或博客并不多见。当我们在互联网上搜索时,最终会找到可能就是来自微软的那篇文章。然而,由于这篇文章缺乏深入的例子,以是,纵然治理员(IMO)阅读之后,若是遇到被入侵的情形,也不知道需要接纳哪些需要的步骤才气削减进一步的损害。

这篇文章的目的是注释若何在受到自动攻击的情形下恢复流动目录,并将损坏降到最低。需要说明的是,这不是流动目录的平安评估,也不会涉及与流动目录有关的攻击手艺。这篇文章的目的是确保我们的Tier-0资源获得珍爱,以免受到进一步损坏。

我之以是要撰写这篇文章,是由于勒索软件攻击已经出现泛滥之势。整个网络都面临被恶意加密的风险,甚至有时支付赎金也无济于事。同时,我并不总是信托治理职员会起劲研究当前的流动目录设置。

目的读者

这篇文章目的受众如下所示:

· 这样的组织:他们的整个网络刚刚被恶意加密并决议支付赎金,现在正在寻找流动目录的解救和加固战略,以重新确立信托。

· 这样的组织:正在寻找被攻击者入侵后的入侵恢复设计的组织。

· 事宜响应职员

· Windows和AD治理员

备份域控制器

域控制器是一个响应身份验证请求并对盘算机网络用户的身份举行验证的服务器。它需要保留流动目录数据库,其中存储了所有的用户和盘算机的身份信息。这类服务器是义务要害型服务器,应优先举行珍爱。

我们建议在每个域中至少备份一个可写的域控制器,这样你就有差其余备份可以选择。在这篇文章中,我们将使用Azure中的Recovery Service Vault。不外,使用哪种解决方案并不主要,您可以凭证自己的情形举行选择。

Recovery Service Vault是一个治理实体,可用于存储随着时间的推移而确立的恢复点,并提供一个界面来执行备份相关的操作,其中包罗按需备份、执行恢复以及确立备份战略。

当我们要备份内陆DC时,我们必须在域控制器上安装Microsoft Azure Recovery Services(MARS)署理。一旦完成安装,我们就可以注册机械并最先举行系统状态备份了。

我们还可以获得我们执行的每项操作(如确立备份或恢复备份)的状态概述。

在我们完成域控制器的备份之后,可以运行以下脚原本检查AD的备份日期。

剧本

, Source: https://adamtheautomator.com/backup-domain-controller/
$domainControllers | foreach {
    $backups = repadmin.exe /showbackup $_
   
    ,, Capture the output ofrepadmin
    $output = @{ 'DomainController' = $_ }
   
    ,, Start collectingproperties for output
    for ($i = 0; $i -lt $backups.Count; $i++) { ,, Begin looking atrepadmin output
        if ($backups[$i] -match '^(CN|DC)') { ,, If the line has apartition.
            ,, Assign the partition name and the date/time to the output hashtable
            ,, and send $output with the DomainController, Partition and DateTime
            $output.Partition = $backups[$i]
            $output.DateTime = [regex]::Match($backups[$i +2],'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})').Groups[1].Value
            [pscustomobject]$output
        }
    }
}

运行效果

在运行效果中,我们可以看到最后一次备份的日期。

入侵局限

我们的Tier-0资产是首先要珍爱的最主要的工具,由于攻击者很可能是奔着能够提供域治理或一致权限的身份或系统去的。

在本节中,我们的义务是查找所有的Tier-0帐户和属于Tier-0的服务器。

Tier-0的界说:

Tier-0是具有最高级别权限的、能够对流动目录林有直接或间接治理控制权限的治理账户、用户组、域控制器以及系统。

Tier-0账户

只要某个账户至少属于一个受珍爱的用户组,那么,它就是Tier-0账户,例如:

· 域治理员

· 企业治理员

· 模式治理员

· 治理员

· 账户操作员

· 备份操作员

· 服务器操作员

· 打印操作员

· 为无约束委派设置的帐户

· 在Tier-0上作为服务运行的服务账户

要查找属于某个受珍爱组的所有成员,可以使用下面的下令:

([adsisearcher]'(&(objectClass=user)(adminCount=1))').FindAll()

运行效果

在输出的效果中,我们可以看到有多名用户至少属于一个受珍爱的用户组。

为无约束委派设置的帐户

现在,请运行下面的下令:

([adsisearcher]'(&(objectCategory=user)(userAccountControl:1.2.840.113556.1.4.803:=524288))').FindAll()

运行效果

在输出的运行效果中,我们可以看到一个账户被设置用于无约束委派。


Tier-0工具

我们可以在敏感的AD工具上委派权限,如DNC工具、MicrosoftDNS容器、AdminSDHolder容器以及与Tier-0系统相关的GPO。下面,我们列出所有具有GenericAll或以下一致权限的ACE:

· GenericAll

· GenericWrite

· WriteOwner

· WriteDacl

· ExtendedRight

· DS-Replicate-Get-Changes-All (DNC)

下面是具有这种权限的ACE的例子:

· 在域工具上具有DS-Replicate-Get-Changes和DS-Replicate-Get-Changes-All权限的MSOL_[前缀]。

· 在域工具上具有WriteDacl权限的Exchange Windows Permissions成员。

· 在MicrosoftDNS容器上具有GenericAll权限的DnsAdmins成员。

所有在上述AD工具上有敏感权限的ACE都被以为是域治理员或等同于域治理员。

枚举DNC工具上的ACL

请运行下面的下令:

$ADSI=[ADSI]"LDAP://DC=fabrikam,DC=com"
$ADSI.p *** ase.get_ObjectSecurity().getAccessRules($true, $true,[system.security.principal.NtAccount])

运行效果

在运行效果中,我们可以看到委派给Domain Naming Context工具的所有ACE。

枚举AdminSDHolder容器上的ACL

为此,请运行下面的下令:

$ADSI=[ADSI]"LDAP://CN=AdminSDHolder,CN=System,DC=fabrikam,DC=com"
$ADSI.p *** ase.get_ObjectSecurity().getAccessRules($true, $true,[system.security.principal.NtAccount])

运行效果

 在运行效果中,我们可以看到所有拥有AdminSDHolder容器权限的ACE。这个容器只能由DA或具有一致权限的成员举行修改。

枚举MicrosoftDNS容器上的ACL

为此,请运行下面的下令:

$ADSI=[ADSI]"LDAP://CN=MicrosoftDNS,CN=System,DC=fabrikam,DC=com"
$ADSI.p *** ase.get_ObjectSecurity().getAccessRules($true, $true,[system.security.principal.NtAccount])

运行效果

在运行效果中,我们可以看到所有对MicrosoftDNS容用具有权限的ACE。


DnsAdmins的成员

为此,请运行下面的下令:

([adsisearcher]'(memberOf=cn=DnsAdmins,CN=Users,dc=fabrikam,dc=com)').FindAll()

运行效果

在运行效果中,我们可以看到DnsAdmins中有3个成员。只管这个组不是一个受珍爱的组,然则,它仍然具有升级到DA的路径,以是,这个组的所有成员在功效上都是域治理员。


Tier-0服务器

对流动目录林具有直接或间接治理控制权的服务器被以为是Tier-0服务器,但我喜欢把为云资源提供升级路径的服务器算作Tier-0服务器。

列出所有域控制器

为此,请运行下面的下令:

([adsisearcher]'(&(objectCategory=computer)(primaryGroupID=516))').FindAll()

运行效果

在运行效果中,我们可以看到网络中所有的域控制器。

设置为无约束委派授权的服务器(不包罗DC)

所有被设置为无约束委派授权的服务器都提供了升级到DA或一致权限的路径,以是需要从Tier-0级对其举行治理。

为此,请运行下面的下令:

([adsisearcher]'(&(objectCategory=computer)(!(primaryGroupID=516)(userAccountControl:1.2.840.113556.1.4.803:=524288)))').FindAll()

运行效果

在运行效果中,我们可以看到为无约束委派设置了3台服务器。

下面是Tier-0服务器的示例:

· 域控制器

· 无约束委派服务器

· Azure AD毗邻

· ADFS

· PKI(证书揭晓机构)

· 备份服务器(如Veeam)

Tier-0服务器上的内陆治理员

在确定了所有Tier-0服务器之后,我们应该查看这些服务器上的内陆治理员,由于Tier-0服务器上的内陆治理员也是间接DA或具有一致权限的角色。

查找远程服务器上的所有内陆治理员(需要具有服务器的治理员权限)

为此,可运行以下下令:

$LocalGroup =[ADSI]"WinNT://Server/Administrators"
$UserNames = @($LocalGroup.p *** ase.Invoke("Members"))
$UserNames | foreach {$_.GetType().InvokeMember("Name",'GetProperty', $null, $_, $null)}

运行效果

在运行效果中,我们可以看到用户和Domain Admins组是Tier-0服务器上内陆Administrators组的一部门。


总结

我们已经在本节中找出了所有Tier-0资产,由于我们必须首先珍爱这些资产免受任何进一步的损害。此外,这对于我们完成下一步操作也是很有辅助的,届时,我们将对AD举行有针对性的加固处置。为此,需要确保纪录下所有具有Tier-0权限的帐户和服务器。同时,也不要遗忘具有Tier-0权限的内陆治理员

解救措施与加固措施

在本节中,我们将举行有针对性的AD加固处置,以珍爱我们的Tier-0身份和系统。这里的目的是削减Tier-0身份凭证的使用面,并确保我们的AD林重新确立起信托关系,为此,需要重设密码、确立新账户、推出GPO等。

通过组战略拒绝Tier-0身份登录更低级其余系统

当在我们确定了所有的Tier-0账户和用户组之后,需要确保这些账户不能登录到更低级其余受信托系统。

第一个建议是确保该组织有一个适当的OU结构。否则,这个设计会很难完成。第二件事是,我们现在可以确立一个新的组战略,并设置所有的设置,详细如下所示:

,

USDT线下交易

U交所(www.payusdt.vip),全球頂尖的USDT場外擔保交易平臺。

,

设置GPO后,我们需要将其链接到包罗Tier-1服务器和通例客户端事情站的OU上。这样一来,我们的DA或等效帐户就不会再在较低的级别上露出其凭证了,由于我们已经阻止他们在这些系统上登录。

为Tier-0身份重新确立新账户

在上一节中,我们已经确定了所有的Tier-0账户。现在,我们必须为每个Tier-0身份重新确立一个新的账户,由于要确定这些账户是否已经被攻破是很有难度的事情。

其中,属于Tier-0的服务账户可能是一个挑战,由于一旦我们这样做,系统就会泛起中止,以是要由组织来决议下一步,并评估风险。

一旦我们为所有的Tier-0身份重新确立了新账户,我们就可以执行其他义务,例如将其添加到他们所属的AD组,等等。

重置原来的Tier-0账户的密码

将所有原来的Tier-0账户都转移到一个OU中,并重新设置该OU中的所有这些账户的密码。

这个历程中,服务账户可能是一个很大的挑战,以是,这一步要凭证组织的现真相形而定。之后,我们要实验找到服务账户,在那里也许能够重置密码。

剧本

, Replace the OU path with the correct one
$OU = [ADSI]"LDAP://OU=OU 1,DC=fabrikam,DC=com"
$Child = $OU.Get_Children()
ForEach ($User In $Child)
{
If ($User.Class -eq "user")
{
$User.Invoke("SetPassword", "MyTerriblePassw0rdWillNeverBeUsedAnymore!")
$User.SetInfo()
}
}

禁用所有原Tier-0账户

我们现在要禁用所有原来的Tier-0账户:现实上,我们上面已经将其移动到一个OU里,而且已经为所有的Tier-0治理员确立了新的账户,以是,现在完全可以弃用原来的所有Tier-0账户了。

剧本

$ObjFilter = "(&(objectCategory=person)(objectCategory=User))"
    $objSearch = New-Object System.DirectoryServices.DirectorySearcher
    $objSearch.PageSize = 15000
    $objSearch.Filter = $ObjFilter
 , Replace the OU path with the correct one
    $objSearch.SearchRoot = "LDAP://OU=OU 0,DC=fabrikam,DC=com"
    $AllObj = $objSearch.FindAll()
    foreach ($Obj in $AllObj)
           {
            $objItemS = $Obj.Properties
            $UserN = $objItemS.name
            $UserDN = $objItemS.distinguishedname
            $user = [ADSI] "LDAP://$userDN"
            $user.p *** ase.invokeSet('AccountDisabled', $true)
            Write-host -NoNewLine "Account $UserN has been disabled...."
            $user.setinfo()
            Write-host "Done!"
            }

运行效果

在运行效果中,我们可以发现,现在已经禁用了所有原来的Tier-0账户。

强制所有用户在下一次登录时修改密码

一件主要的事情是强迫所有用户在下次登录时更改密码,若是攻击者窃取了NTDS.DIT文件,这将使所有NT哈希值失效。

剧本

$PLSValue = 0
$ObjFilter = "(&(objectCategory=person)(objectCategory=User))"
    $objSearch = New-Object System.DirectoryServices.DirectorySearcher
    $objSearch.PageSize = 15000
    $objSearch.Filter = $ObjFilter
    $AllObj = $objSearch.FindAll()
    foreach ($Obj in $AllObj)
           {
            $objItemS = $Obj.Properties
            $UserN = $objItemS.name
            $UserDN = $objItemS.distinguishedname
            $user = [ADSI] "LDAP://$userDN"
            $user.p *** ase.invokeSet("pwdLastSet",$PLSValue)
            Write-host -NoNewLine "Account $UserN needs to change password at next logon...."
            $user.setinfo()
            Write-host "Done!"
            }

运行效果

如您所见,这里强制每个账户在下一次交互式登录时改变他们的密码。

重置KRBTGT账户的密码两次

KRBTGT账户的密码需要在每个域中重置两次。

为此,请运行下面的下令:

, Reset password of KRBTGT
$adsi = [adsi]"LDAP://CN=krbtgt,CN=Users,DC=fabrikam,DC=com"
$adsi.Invoke("SetPassword", "MyNewPassw0rd!")
$adsi.setinfo()

然后,守候24小时后再举行第二次重置。

*24小时之后*

请运行以下下令:

, Reset password of KRBTGT
$adsi = [adsi]"LDAP://CN=krbtgt,CN=Users,DC=fabrikam,DC=com"
$adsi.Invoke("SetPassword", "MyNewPassw0rd!")
$adsi.setinfo()

现在,我们需要验证KRBTGT的密码是否已轮换。

为此,请运行下面的下令:

$user = [adsi]"LDAP://CN=krbtgt,CN=Users,DC=fabrikam,DC=com"
[PSCustomObject] @{
username = $user.name.Value
pwdLastSet = [datetime]::FromFileTime($user.ConvertLargeIntegerToInt64($user.pwdLastSet.
value))
}

运行效果

在运行效果中,我们可以看到KRBTGT密码的轮换日期。

重置Azure AD Seamless SSO Account的密码

在每个域中对AzureADSSOACC$帐户的密码举行轮换。为此,需要具有Global Admin权限。

登录Azure AD Connect服务器(Tier-0),由于需要从AAD Connect服务器上执行该义务。不外,下面的PowerShell模块可以帮我们完成这一义务。

Import-Module “C:\Program Files\Microsoft Azure Active Directory Connect\AzureADSSO.psd1”
 
New-AzureADSSOAuthenticationContext , Sign in with a Global Admin account
 
Update-AzureADSSOForest
 
$Cred = Get-Credential
 
Update-AzureADSSOForest -OnPremCredentials $Cred

为了举行验证,我们可以运行以下下令:

$user = [adsi]"LDAP://CN=AzureADSSOACC,CN=Computers,DC=fabrikam,DC=com"
[PSCustomObject] @{
username = $user.name.Value
pwdLastSet = [datetime]::FromFileTime($user.ConvertLargeIntegerToInt64($user.pwdLastSet.
value))
}

运行效果

在这里,我们可以看到AzureADSSOACC账户的轮换日期。

将ADFS令牌署名证书轮换两次

ADFS令牌署名证书需要轮换两次。微软已经在相关博客中先容了所有的步骤,以是这里只是复制和粘贴一下就行了。

 

1.  通过检查确保AutoCertificateRollover被设置为True。

Get-AdfsProperties | FL AutoCert*, Certificate*

否则,可以用这个下令来完成设置:

Set-ADFSProperties -AutoCertificateRollover $true

2. 毗邻到Microsoft Online Service。

Connect-MsolService

3. 纪录内部和云令牌署名证书指纹和过时日期。

Get-MsolFederationProperty -DomainName

 

4. 使用-Urgent选项替换主令牌署名证书,以便让ADFS立刻替换主证书(primary certificate),而非使其成为副证书(Secondary certificate)。

Update-AdfsCertificate -CertificateType Token-Signing -Urgent

5. 在与Azure云同步之前,在不使用-Urgent选项的情形下,确立一个副令牌署名证书,以启用两个预置型(on-premise)令牌署名证书。

Update-AdfsCertificate -CertificateType Token-Signing

 6. 使用预置型的主证书和副证书在线更新云环境,以立刻删除云宣布的令牌署名证书;否则的话,原来的令牌署名证书仍然能够用于身份验证。

Update-MsolFederatedDomain -DomainName

 

7. 检查是否乐成完成了上述步骤并删除了上述步骤3中显示的证书。

Get-MsolFederationProperty -DomainName

轮换所有的域信托密码

1.  使用下面的下令语法,通过NetDom工具来重置信托密码。例如,假设流动目录林中有两个域——母域和子域,而且我们是在母域中已恢复的DC上运行此下令,则使用以下下令语法:

netdom trust parent domain name /domain:child domain name /resetOneSide /passwordT:password /userO:administrator /passwordO:*

2. 当我们在子域中运行这个下令时,请使用以下下令语法:

netdom trust child domain name /domain:parent domain name /resetOneSide /passwordT:password /userO:administrator /passwordO:*

重置所有域控制器的机械账户

所有域控制器的机械账户都需要举行重置,否则攻击者可能会继续持有相关的接见权限。

相关示例

在这个例子中,我们将重置一个名为“AMS-DC2”的域控制器的机械账户。当涉及到域控制器时,我们不能使用Reset-ComputerMachinePassword cmdlet,由于这会损坏DC的同步。相反,我们需要在每一个域控制器上完成重置义务,但遗憾的是,我现在还没有找到自动化的方式,由于我可不想损坏您的域控制器!

详细步骤

1. 在内陆或通过RDP登录到需要修改密码的域控制器上

2.  确保自己在本机和AD中的盘算机工具上具有治理权限(如DA或一致权限)。

3.  若是想重置Windows域控制器的密码,则必须住手Kerberos密钥分发中央服务,并将其启动类型设置为Manual。

4.  以治理员身份打开CMD,并运行以下下令。

6. 若是一切顺遂的话,将看到如下所示的内容:


7. 再次启动密钥分发服务,并将启动类型设为Automatic。

8. 验证域控制器的密码是否已更新:

$user = [adsi]"LDAP://CN=AMS-DC2,OU=Domain Controllers,DC=fabrikam,DC=com"
[PSCustomObject] @{
username = $user.name.Value
pwdLastSet = [datetime]::FromFileTime($user.ConvertLargeIntegerToInt64($user.pwdLastSet.
value))
}

运行效果

在运行效果中,我们可以看到DC的机械账户已经更新。请确保对所有的域控制器都举行同样的处置。是的,这是一个手动义务。

 

· /s:是用来设置机械账户密码的域控制器的名称。它是运行KDC的服务器。

· /ud:是用于跟/s参数指定的域举行毗邻的用户账户。它必须是domain/User花样。若是这个参数被省略,则使用当前的用户账户。

· /pd:*示意为/ud参数指定的用户账户指定的密码。其中,这里的星号(*)用来示意密码。例如,内陆域控制器盘算机是Server1,对等的Windows域控制器是Server2。若是你在Server1上运行Netdom.exe,并使用以下参数,密码将在内陆更改,并同时写入Server2。而且,通过复制可以把这个转变流传到其他域控制器上。

重置AAD同步账户的密码

大多数组织都是通过Azure AD Connect在夹杂状态下运行。这样的话,就需要一个在Domain Root上具有以下权限的(服务)账户来完成密码哈希值的同步。 

这个账户的密码需要修改,由于攻击者可能通过抓取AAD同步账户的NT哈希值来维持权限。在重置这个账户的密码时,请使用一个足够庞大的密码。

为此,可以运行下面的下令:

, Replace the OU path with the correct path where your AAD Sync account is stored
$adsi = [adsi]"LDAP://CN=SVC_ADSync,OU=Service accounts,DC=fabrikam,DC=com"
$adsi.Invoke("SetPassword", "MyIncredibleComplexPassw0rdThatYouCantCrackBro")
$adsi.setinfo()

现在,我们需要验证密码是否已经重置。为此,可以运行下面的下令:

$user = [adsi]"LDAP://CN=SVC_ADSync,OU=Service accounts,DC=fabrikam,DC=com"
[PSCustomObject] @{
username = $user.name.Value
pwdLastSet = [datetime]::FromFileTime($user.ConvertLargeIntegerToInt64($user.pwdLastSet.
value))
}

运行效果

在此我们可以看到,密码确实已经修悔改了。

在所有事情站和成员服务器上随机设置内陆治理密码

内陆治理员密码解决方案(LAPS)是一个密码治理程序,可以用来自动轮换每个自力事情站或服务器上的内置治理员(RID-500)账户。虽然这种方式并不完善,但它简直是可行的,而且也是免费的。若是组织尚未上马能够随机设置每个系统上的内陆治理员密码的解决方案的话,不妨试一下LAPS。

注重:不要在域控制器上部署LAPS。

1. 将GPO链接到所有事情站和成员服务器的OU

2. LAPS软件包的储存位置 

3. 举行设置

4. 验证LAPS安装是否乐成

Get-AdmPwdPassword -ComputerName "Client"

部署EDR解决方案

部署EDR解决方案以获得对所有端点的可见性是异常主要的一项措施。在本例中,我们将使用Defender for Endpoint。在此阶段,我们将在所有事情站、成员服务器和域控制器上部署MDE。

第一步是下载安装套件,并通过类似于组战略的方式举行部署。所有的步骤都已经详细地纪录在这里了

第二步是吸收可能触发的所有警报。一旦攻击者最先频仍流动,我们就可能捕捉到他们的流动踪迹,并发现这些流动发生在哪台机械上。

若是我们在一台机械上面发现了攻击流动的踪迹,就必须把机械从网络上断开,其中包罗断开机械的域毗邻和取消VPN证书。

小结

流动目录是大多数组织的身份基础设施,以是,我们需要花大气力来珍爱其平安。同时,我们已经最先步入云时代,但由于大多数组织都是在一个夹杂场景下运作的,以是我们也不能只关注云中的所有新器械。

我们一定要珍爱好自己在企业内部的身份信息,只管阻止在所有较低信托度的系统上露身世份凭证。这就是为什么攻击者能够轻松实现横向移动的主要缘故原由,由于高权限的凭证无处不在。

最后,但并非最不主要的是:一定要做好事宜响应和灾难恢复设计。对于所有的组织和任何潜在的IR团队来说,这都是异常主要的一件事情。

参考资料

· Advice for incident responders on recovery from systemic identity compromises: https://www.microsoft.com/security/blog/2020/12/21/advice-for-incident-responders-on-recovery-from-systemic-identity-compromises/

· Active Directory Forest Recovery Prerequisites: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/ad-forest-recovery-prerequisties

· Script to reset the KRBTGT password: https://github.com/microsoft/New-KrbtgtKeys.ps1/blob/master/New-KrbtgtKeys.ps1

· Microsoft LAPS: https://www.microsoft.com/en-us/download/details.aspx?id=46899

· Evaluate Microsoft Defender for Endpoint: https://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/evaluate-mde?view=o365-worldwide

· Use Netdom.exe to reset machine account passwords of a Windows Server domain controller: https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/use-netdom-reset-domain-controller-password

本文翻译自:https://m365internals.com/2021/04/27/practical-compromise-recovery-guidance-for-active-directory/

Filecoin招商

Filecoin招商官网(www.ipfs8.vip)是FiLecoin致力服务于使用FiLecoin存储和检索数据的官方权威平台。IPFS官网实时更新FiLecoin(FIL)行情、当前FiLecoin(FIL)矿池、FiLecoin(FIL)收益数据、各类FiLecoin(FIL)矿机出售信息。并开放FiLecoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。

网友评论

5条评论
  • 2021-08-03 00:05:32

    USDT跑分网www.usdt8.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

    你们感觉咋样

最新评论