pentestdb 架構詳解

2021-02-20 信安之路

RTIS(信安之路) CTF 戰隊招聘

CTF 的五個方向:web、misc、pwn、reverse、crypto

需要五個組長、若干組員,有比賽經驗的優先、在信安之路投過稿的優先、在別的平臺分享過 writeup 的優先

五個組長可以直接加入 作者團隊 以及 小密圈

想申請可以寫一個簡單的簡歷,發送到 1293348082@qq.com,簡歷的篩選均由作者團隊審核,擇優錄取,並進行考核

考核方式:找專人與你一對一聊天面試

工欲善其事,必先利其器。

在滲透測試領域有琳琅滿目的工具、神器,它們可以大大簡化滲透測試的工作量。但很多時候僅僅使用別人的工具是不夠的,我們需要自己去編寫一些腳本、插件來完成定製的內容,而這樣的工作會很大程度提升滲透測試的效率。筆者認為沒有最好的工具,如果有則一定是自己根據自己需要開發的工具。

本文結合 pentestdb 這個項目介紹一些安全工具設計實現方面的思路,項目地址如下:

https://github.com/alpha1e0/pentestdb

pentestdb 使用 python 語言實現,而 python 這門程式語言非常適合編寫此類工具,不僅語法簡單、入門容易,而且有大量的非常優秀的庫可以幫助我們很快解決問題。

pentestdb 最早的時候只是一個「數據集合」,用於存放一些在滲透測試中常用的信息,比如 webshell 、弱口令字典、url 爆破字典等,後來發現如果基於這些信息編寫一些工具則可以一定程度上提高滲透測試的效率,於是有了 pentestdb 當前這個項目。

pentestdb 項目的設計原則:

1、一切圍繞「數據」。因此的各種字典文件、特徵文件、插件、exploit 是最核心的內容。

2、易用、易擴展。可以通過修改字典文件、特徵文件、插件來擴展能力。

3、各個子模塊可以相互協調工作。例如一個模塊生成的結果可以作為輸入給其他模塊使用。

4、便攜。無需要安裝,可在任何 python2.x 環境執行。

在本文中會介紹 pentestdb 的服務識別、google hacking、域名爆破、編解碼等內容,希望這些內容對於需要實現工具的人有所啟發。

1 服務識別

在 web 滲透測試中,當確定目標站點地址後首先要做的事情就是了解這些 web 站點的相關信息:

1、web 站點所在主機的作業系統是什麼

2、使用的程式語言是什麼

3、後端的資料庫是什麼

4、使用的 web 伺服器、容器是什麼

5、使用哪些開源 CMS 或開源組件

我們會通過發送一些 http 請求通過觀察、推測從而獲得以上信息。而在探測過程中有如下幾種信息是關鍵的:

1、http 返回中的 header 信息。例如 Server: nginx 表示後端使用的是 nginx 伺服器

2、返回html中的信息。例如很多開源CMS會有一個 Powered by xxxx 的欄位

3、特殊 url 路徑。每種 CMS 都會有一些特殊 url 路徑,通過訪問這些路徑可以確定是否是相關的 CMS

4、robots 文件信息。

例如,我們向目標 web 伺服器發送一個 GET 請求,收到了如下信息:

那麼我們可以通過返回的 http headers 中的 Server 欄位推斷出,被測試的 web 站點是搭建在 windows 作業系統上,並且伺服器是 IIS8.5,而且進一步我們可以猜測 web 後端可能會使用 ASP/ASP.net/C# 來構建應用。

將這些維度的信息總結、提煉、格式化就形成了 web 的指紋資料庫。pentestdb 中的指紋「資料庫」使用 yaml 格式來編寫,可以參考 app_fingerprint.yaml 這個文件。這裡簡單舉例

以上是 PHPWind 的指紋信息定義,其中:

1、cats 表示該指紋信息的分類,pentestdb 中的其他類別有 OS/Sever/Language/Middleware

2、implies 表示推測的信息,例如 PHPWind 顯然可以推斷出後端使用了 PHP 作為程式語言

3、matches 是真正的指紋定義。這裡有 html/requests/robots 三種方式,html 是正則的定義,用於通過正則表達式在返回的 HTML 中匹配模式; requests 是特殊 URL 的匹配定義, robots 是匹配 robots.txt 文件的模式;另外還有 headers 定義這裡沒有看到,同樣也是使用正則匹配 http headers 中的欄位

另外, pentestdb 中其實還有一個 CMS 識別的小模塊,其原理和這裡的 requests 匹配類似,通過特殊 URL 來匹配,只是規則稍微複雜一些,可參考 cms_fingerprint.yaml 這個文件。

當然可以利用的指紋特徵不僅僅有這些,例如不同 web 伺服器返回的 headers 中各個欄位的順序是不同的,通過這些順序也可以猜測到目標的信息。關於這方面的內容可參考 OWASP OTG-INFO-002

https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002)

不過在多數場合下以上的數據都是夠用的。

在定義了指紋之後,就可以編寫業務邏輯,只需要一個 http 客戶端 requests,然後用 if-esle 實現邏輯代碼即可。具體實現可參考 service.py 這個文件。

前文中提到了, pentestdb 最初是一個滲透測試的數據、資源集合,這裡也可以看到,這些 yaml 配置文件本身也是很好的記錄知識、經驗的方法,在研究了某些 CMS 之後完全可以將研究的結果隨手添加到 yaml 配置中,這樣既記錄了知識,又完善了自動化工具。

對 web 指紋識別感興趣的也可以參考 wappalyzer 這個項目,項目地址:

https://www.wappalyzer.com

該項目提供了一個瀏覽器插件,在訪問網站的時候可以直接顯示網站的一些組成信息,非常方便,pentestdb 的指紋格式設計就是參考了該項目。

2 google hacking

google hacking 是一種常見的前期信息收集工具,可以完成子域名收集、敏感文件收集等,當然 google hacking 本身也是一種在網際網路上尋找測試對象的好方法。

pentestdb 引入了專門的模塊做 google hacking ,語法和 google hacking 的常用語法完全一樣,關於 google hacking 語法方面的資料網際網路上有很多,可參考 GHDB

https://www.exploit-db.com/google-hacking-database/

本文不再詳細介紹。

在 pentestdb 中引入 google hacking 是因為在很多自動化工具中,我們需要直接獲取到一個 URL 列表,例如 pentestdb 的 exploit、url 爆破模塊都可以直接輸入一個 URL 列表進行批量的測試,而是用瀏覽器是無法實現這些的。

google hacking 模塊實現了 bing/google/baidu 三個 SearchEngine ,同時作為一個基礎模塊(要為子域名爆破服務)提供了 Query 類作為入口方便調用,相關實現可參考 searchengine.py 。

在 google hacking 的實現中最麻煩的地方在於,目前的搜尋引擎都有 機器人識別程序 ,使用腳本進行批量搜索的時候如果不做一些處理,很容易被機器人識別程序發現,並進行「阻斷」。

筆者並沒有深入研究過幾個搜尋引擎的機器人識別程序, pentestdb 中使用的 bypass 機器人方法是基於常用的機器人識別算法開發的,實際使用效果不錯。機器人識別程序一般通過以下幾個特徵判別是否是機器人

1、user-agent。爬蟲、框架都有「專屬」的 user-agent 和瀏覽器明顯不同,例如 python requests 框架的 user-agent 為  python-requests

2、通過同一源的訪問頻率。如果同一個源地址頻繁的訪問,則會認為是機器人。注意這裡的源,包含源 IP:port/session 等信息。

搜尋引擎在發現機器人後,常見的處理方式是發送「挑戰頁面」,而不是直接斷開連接,挑戰頁面需要人輸入驗證碼從而最終判定是否為機器人程序。

因此,bypass 機器人識別的關鍵在於: 讓搜尋引擎覺得工具的的搜索請求來自於不同的、合法的客戶端。

在 pentestdb 中使用三種方式來 bypass 機器人識別。

1、修改 user-agent 。 pentestdb 會讀取常見瀏覽器的 user-agent ,然後隨機挑選一個來使用

2、隨機延時。 pentestdb 在兩個相鄰 http 請求之間會隨機延時 1 到 3 秒時間。

3、添加隨機的 X-Forward-For 頭部。 搜尋引擎可能會通過 X-Forward-For 來獲取「真實的」源IP位址,不過該欄位是否有意義尚待考證,因為目前至少在國內作為家庭用戶一般都是通過 NAT 到運營商網絡,所以很多人的源 IP 是一致的,搜尋引擎在機器人識別的時候不大可能僅僅通過源 IP 來進行判斷。

4、去掉 cookie 頭。在 pentestdb 提交查詢的時候是不攜帶 cookie 的,這樣搜尋引擎無法通過同一個 cookie 來判斷是否來自相同的客戶端。

3 子域名爆破

當 web 滲透測試的對象是一個較大規模的對象的時候,一般正面突破的可能性比較小,例如一個公司,它的官網一定是防護最嚴格的地方,這時候我們要考慮旁註,公司一般有一些子域名的網站,不會經常用,從而防護較弱,例如公司一般都有論壇、考試之類的子域名網站,往往更具有價值。因此在 web 滲透測試前期工作中識別出子域名是非常重要的。

在 web 滲透測試中,常見的子域名獲取方式有:

1、通過域傳送漏洞。如果目標存在域傳送漏洞,則可以一勞永逸的獲取所有子域名。

2、通過 google hacking。

3、通過字典爆破。

4、通過 C 段,然後通過IP位址反查。不過支持 IP 地址反查的 DNS 比較少。

pentestdb 實現了前三種方式。

DNS 域傳送

DNS 服務在部署的時候,為了穩定性,一般會採用主備的模式,而備伺服器同步主伺服器的信息通過 AXLR 協議,在有的情況下,由於運維人員的錯誤配置會允許任何源(比如我們自己的電腦)通過 AXLR 訪問 DNS 伺服器,這就是「域傳送漏洞」的原理,一般在手工探測的時候我們會使用:

host -t ns domain; 查詢ns記錄獲取DNS Server,然後:host -l domain server,

dig NS domain; 查詢ns記錄獲取DNS Server,然後:dig axlr domain @server,

在 python 當然有 DNS 相關的庫, pentestdb 中使用 dnspython 這個庫實現 DNS AXLR 查詢,可參考 dnsparse.py 文件。

google hacking

子域名查詢的另外一種常用的方式就是 google hacking 一般我們通過下面的語法進行查詢

site:xxx.com -site:www.xxx.com

pentestdb 中會調用 google hacking 模塊進行處理,並返回子域名列表

域名字典爆破

pentestdb 的 dns 目錄下收集整理了一些常用的子域名字典文件,工具會基於這些字典文件進行爆破。這裡需要注意的是,不要忘了頂級域名的爆破,因為有的網站會有多個頂級域名。例如

xxx.com ==> xxx.cc xxx.xin xxx.info

4 編解碼

編解碼是非常考驗安全人員基本功的的知識,在滲透測試中有廣泛的應用,尤其是在 bypass 各種安全機制、安全產品中編解碼都起到了重要作用。

web 滲透測試中我們經常使用 firefox+hackbar 或者 burpsuite 來完成編解碼,但筆者使用的過程中還是會遇到一些不盡人意的地方,所以自己開發了編解碼的工具。

pentestdb 中涉及編解碼的有 encode/decode/code 三個子命令,前兩者類似有 hackbar,後者用來對文件進行編解碼。

為了便於理解,本文將編解碼分為「非 ASCII 編解碼」和「特殊編解碼」。

非 ASCII 編解碼

由於 ASCII 只能表示非常有限的字符集,因此對於「非英文」字符無法表示,比如中文,因此有

1、中文專用編碼。例如,簡體中文的 GB2312/GBK ( GBK 是 GB2312 的擴展集,是目前最常用的,中文 windows 的默認編碼),繁體中文的 BIG5

2、Unicode 系列編碼。和 GBK 不同的是 Unicode 系列的編碼是全球通用的,包含絕大多數語言,常見的有 UTF8/UTF16/UTF32/UTF7

這裡需要區分 Unicode 和 UTFxx。 Unicode 只是一個碼錶,為了便於理解可以將其看作和計算機無關的數學映射,一個自然數對應一個字符,而為了將這個映射實現到計算機中就需要一個「轉換格式」,這個就是 UTF(Unicode Transformation Format) 。

最初的 Unicode 碼錶長度是小於 65536 的,因此最直觀的一種轉換方式就是使用 2 個字節表示,這種編碼就是 UTF16。因此有時候 Unicode 和 UTFxx 會有一些概念混淆,例如 windows 記事本中的 Unicode 格式其實是 UTF16 格式。

在 python 中實現非 ASCII 編解碼是非常簡單的事情, python 的標準庫裡面實現了全世界幾乎所有的編解碼方式,使用方式非常簡單

"some string".decode("utf8") # 將字符串( str 類型)按照 utf8 格式進行解碼,返回 unicode 類型字符串

u"一些字符串".encode("gbk")   # 將字符串( unicode 類型)按照 gbk 格式進行編碼,返回 str 類型字符串

注意這裡的 unicode 是 python 內部的一種 Unicode 的數據格式,並非上文的 Unicode 碼錶。

有時候,我們可能不知道某個字符串的編碼格式,需要對編碼格式進行猜解,此時可以使用 chardet 這個 python 庫。

chardet.detect("some string")  ==> {'confidence': 1.0, 'encoding': 'ascii'}

chardet.detect(u"中華人民共和國".encode("gbk")) ==> {'confidence': 0.99, 'encoding': 'GB2312'}

chardet 只能獲取到一個概率結果,一般在文本較長的時候才能獲取較準確的結果

特殊編解碼

我們常見的」特殊編解碼「有 url 編碼、html 編碼、base64、php-chr、8 進位、16 進位等等。

這些編碼經常和」非 ascii 編解碼「混合在一起,例如URL中包含中文的情況,在 firefox 中會先進行 UTF8 編碼,然後再使用 URL 編碼。

pentestdb 中支持同時制定兩種編碼方式來進行編解碼,而這個是很多其他工具不具備的。

5 其他模塊

pentestdb 還有社會化密碼生成模塊、exploit 模塊、C 段掃描模塊在此做簡單介紹。

社會化密碼生成模塊

滲透測試的時候我們經常需要去做密碼猜解,在猜解的時候獲取的信息越多越好,這些信息包括但不限於如下:

人名 暱稱 英文名 愛人名稱 手機號 QQ號 公司名稱 域名

根據這些信息使用一定的模式來生成弱口令字典,猜解正確率會高很多。而這其中最關鍵的就是 模式 ,例如 XXX520、zhangsan@1111 是將人名加上一些前後綴的修飾。pentestdb 中使用了簡單的模式來根據這些信息生成密碼字典。

pentestdb 中定義了一些常用的前後綴,例如:

1、常用密碼關鍵數字

_numList = ['123456', '123123', ...]

2、常用前綴列表

_prefixList = ['a','qq','yy','aa','abc', ...]

3、常用密碼

_commonPasswd = ['123456', 'a123456', ...]

4、和 partner 混合的常用前綴列表

partnerPrefixList = ['520','5201314','1314','iloveu', ...]

5、和 domian,company 組合的前綴列表

domainPrefixList = ['admin','root','manager', ...]

然後將這些列表和獲取的社工信息組合在一起,組合的方式為加前綴、後綴,加分隔符,於是就生成了一份密碼文件列表。

exploit 模塊

pentestdb 中內置了一個小微的 exploit 框架,其接口參考了知道創宇的 pocsuite

https://github.com/knownsec/Pocsuite

可以基於此框架編寫一些 exploit,此框架主要的構成如下:

exploit(包含關於漏洞描述信息) <===> exploit 資料庫 <===> exploit 控制器

每個 exploit 都必須填寫一些「元信息」,例如:

而這些 元信息 都會存入 sqlite 資料庫,在使用的時候 exploit 控制器 可以通過這些 元信息 來過從而濾獲得想要的 exploit。這樣設計可以提高靈活性,例如現在要對某個 discuz 做測試,可以通過 appName:discuz 找到所有 discuz 的漏洞然後批量驗證目標站點是否有這些漏洞。

exploit 模塊是一個小微框架,鬆散結構的,其核心還是提供了方便的過濾方法及組織、格式化 exploit 編寫,因此 exploit 並沒有提供 payload 生成、多種類型客戶端。這也符合 pentestdb 的設計初衷,重點在於組織、歸檔資源信息。

C 段掃描

pentestdb 的C段掃描模塊實現得很簡單,因為筆者精力有限,只是簡單得調用了 Nmap 做掃描。

對於C段掃描任務,python 中有一個框架 scapy

https://github.com/secdev/scapy

非常適合做此類任務,此框架將常見的網絡協議封裝成一個個使用起來非常簡單直觀的類,並且使用中綴語法來構建不同的協議對象,使得協議層面的操作變得非常簡單,可以方便得實現很多功能,包括 Nmap/arping/tcpdump/netcat 等等。例如,可以用以下兩行代碼來進行 ping 操作:

p = IP(dst="1.1.1.1")/ICMP()

r = sr1(p)

如果想實現比較複雜的掃描工具,則可以使用 scapy 來實現

6 總結

通過 pentestdb 的介紹可以看到,實現一個安全工具並不是很困難的事情,尤其是使用 python 這樣的包含大量第三方庫的高級語言,在了解目標需求後可以很快得實現一個定製化的小工具。

這些根據需求定製的安全工具往往也是對安全人員自己來說最「好用」的工具,筆者自己開發的這些工具都在自己的業餘和公司工作中發揮了重要的作用,並且提供了非常有價值的代碼積累。

相關焦點

  • PentestPackage-滲透測試常用腳本打包
    項目首頁:https://github.com/leonteale/pentestpackage項目簡介:在滲透測試的過程中我們經常會需要查找或者處理,收集一些信息PentestPackage 就是一個將這些常用的操作需要用的腳本做了一個收集分別如下
  • 選庫命令(db/patent)與 (db/all) 的區別
    為了方便大家一次檢索出所有除去非專利文獻和專利翻譯文本的專利文獻,我們特別為大家提供一個資料庫選庫命令(db/patent),幫助大家在檢索時減少繁瑣的選庫流程。大家知道在patentics中選庫欄位為db/,在db/後面添加各資料庫代碼即選擇在某種資料庫中進行數據檢索。例如db/cn表示選擇在中國庫(包括中國發明實用庫(發明申請與實用新型)、中國發明授權庫和中國外觀庫)中進行檢索。
  • 雲計算核心技術Docker教程:rm/rmi命令詳解
    例如,強制刪除容器 db01、db02,命令如下:$ docker rm -f db01 db02移除容器 nginx01 對容器 db01 的連接,連接名 db:$ docker rm -l db刪除容器 nginx01, 並刪除容器掛載的數據卷:$ docker rm -v nginx01刪除所有已經停止的容器
  • Android架構學習資料
    MVP,感覺使用Retrofit+RxJava+MVP開發還是非常方便的~由於沒有本地資料庫,在某些界面我去掉了M層,只留了VP,感覺也沒什麼不妥~話說,你用什麼架構呢?其他的一些文章、Demo、App:文章淺談Andorid開發中的MVP模式  MVP IN ANDROID, PART 1MVP IN ANDROID, PART 2MVP IN ANDROID, PART 3    Android MVP 模式 簡單易懂的介紹方式android-guidelinesAndroid MVP 詳解
  • 聯想筆記本在XP系統中如何取消圖片文件夾下的Thumb.db文件
    聯想筆記本在XP系統中如何取消圖片文件夾下的Thumb.db文件  聯想筆記本在XP系統中取消圖片文件夾下的Thumb.db文件的方法如下:  打開我的電腦>>工具>>文件夾選項>>將「不緩存縮略圖」勾上。  備註:適用於所有預裝XP系統的機型。
  • 華為:AI-Native分布式資料庫GaussDB——2020年6月開源
    GaussDB採用MPP(Massive Parallel Processing)架構,支持行存儲與列存儲,提供PB(Petabyte,2的50次方字節)級別數據量的處理能力。可以為超大規模數據管理提供高性價比的通用計算平臺,也可用於支撐各類數據倉庫系統、BI(Business Intelligence)系統和決策支持系統,為上層應用的決策分析提供服務。
  • Docker應用之CockroachDB數據存儲:開發和部署容器的力量
    在這篇文章中,我將介紹一些我們正在使用的更先進和實用的架構,以及它們如何使我們的工作更簡單。特別的是,你不需要安裝任何程序就可以學習到如何部署Cockroach,並且在任何系統中部署可靠的、最小化的容器。
  • 一文讀懂2021年Linux架構!超詳細!
    首次公開BAT等網際網路公司、系統架構,腳本代碼、架構設計、構建思路、排錯指南,直觀呈現於「Linux全套7本書」「從編寫這本書到問世總共耗時6年時間精心打磨,這是國內IT行業書籍很少有的創作經歷,但這也從源頭保證了書籍內容的高品質和無窮的創意,相信當您拿到書籍的那一刻,便能體會到我們的努力。讓您學習的每節課都能有收穫,對得起您付出的時間、精力和購書款。牛!
  • 關於dbμV、dbm 、dbw
    在有線電視技術中我們常常遇到幾個信號參數的量值,這幾個量值是對數單位---分貝(db)。用分貝表示是為了便於表達、敘述和運算(變乘除為加減)。
  • PKI基礎架構詳解及證書申請過程
    PKI基礎架構詳解及證書申請過程0  前言PKI是信息系統安全中重要的理論基礎知識,設備之間相互信任依賴數字證書的交換
  • 一文詳解MySQL權限
    https://www.cnblogs.com/Csir/p/7889953.htmlMySQL權限級別全局性的管理權限,作用於整個MySQL實例級別資料庫級別的權限,作用於某個指定的資料庫上或者所有的資料庫上資料庫對象級別的權限,作用於指定的資料庫對象上(表、視圖等)或 者所有的資料庫對象上權限存儲在mysql庫的user, db
  • Android官方架構組件:Lifecycle詳解&原理分析
    Paging:分頁庫的設計美學Android官方架構組件Navigation:大巧不工的Fragment管理框架Android官方架構組件Lifecycle:生命周期組件詳解&原理分析概述在過去的谷歌IO大會上,Google官方向我們推出了 Android Architecture Components,其中談到Android組件處理生命周期的問題,
  • 紐西蘭學歷架構詳解
    紐西蘭採用與國內不同的學歷架構,所以無論你現在是就讀於中學還是大學,確認你的學習項目是否受到紐西蘭學歷架構(nzqf,new zealand qualification framework)的認證對今後在紐西蘭的學習至關重要。
  • 【DB寶6】啥是2019 OCP?
    • 微信公眾號:DB寶,作者:小麥苗• 作者博客地址:http://blog.itpub.net/26736162/• 作者微信:db_bao• 作者QQ:646634621,QQ群:230161599
  • 華為自研達文西架構詳解
    達文西架構詳解,它這樣造就麒麟990 5G的AI革新文章開頭我們提到,5G將驅動AI在未來獲得廣闊的發展趨勢,除了智慧型手機,萬物互聯,萬物智能,無疑是未來的一個重要趨勢。正是基於對這種未來的預測,華為才會推出致力於多平臺多場景協同的統一AI架構——達文西架構。那麼達文西架構具體是怎樣的呢?達文西架構是立足於AI運算晶片的,所以首先我們要從AI運算的性質說起。眾所周知,AI的發展離不開三要素:算法、算力、大數據。海量的數據經過強大的算法才能形成巨大的算力。
  • 高性能Mysql主從架構的複製原理及配置詳解
    如下:使用mysqldump來得到一個數據快照可分為以下幾步:mysql> FLUSH TABLES WITH READ LOCK;<2>在另一個連接用mysqldump創建一個你想進行複製的資料庫的轉儲:shell> mysqldump --all-databases --lock-all-tables >dbdump.db<3>
  • 為什麼分貝以前縮寫為「db」現在就用「dB」表示呢?
    打開APP 為什麼分貝以前縮寫為「db」現在就用「dB」表示呢? 發表於 2019-07-18 14:43:21 分貝早期縮寫為「db」,但現在常用「dB」表示。 分貝在電子系統中的應用很常見,包括射頻、音頻以及現在經常提到的信號完整性。
  • 詳解React Flux架構工作方式
    摘要:Flux是Facebook內部用來構建React應用的一套架構,該架構的最大特點是其倡導的單向數據流方案
  • 網際網路支付系統整體架構詳解
    支付產品在支付系統參考架構圖中之位置,請看下圖所示:支付系統架構整體設計每個公司根據其業務和公司發展的不同階段,所設計的支付系統也會有所不同。我們先看看網際網路公司的一些典型的支付系統架構。支付寶我們先看看業內最強的支付寶系統。架構圖如下:
  • 架構師成長計劃|如何利用雲原生構建一個企業級高可用架構?
    如何利用雲原生實現企業級高可用架構呢?如果你正在思考、探究,亦或被雲原生的落地問題所困擾,那麼,這場技術課程一定不能錯過!!AWS 首席開發者布道師費良宏帶你探索雲原生的更多可能本期英特爾與 Science 聯袂推出的「架構師成長計劃」系列課程的主題,是由 AWS 首席開發者布道師費良宏帶來的——《雲原生架構設計和高可用架構》。