[Day10] Cloud Spanner (2021 鐵人賽 – Cloud)

Spanner 🔧,跟 Cloud SQL 一樣,是一種 RDBMS (Relational Database Management System),它同時包含了關聯式資料庫與非關聯式資料庫的優點,支援 SQL 的語法,然後很貴。 Spanner 最大的優點是它可以達成 Horizontal Scalable 的資料結構,它可以處理 PB 等級的資料,而且有極高的可靠性(SLA 高達 99.999%),適合使用於金融與庫存等應用上。 Spanner 是 Google 開發的酷酷資料酷系統,他們也為此發了紙 Spanner: Google’s Globally-Distributed Database,但我是沒有很想看啦QQ。 Cloud Spanner Architecture Cloud Spanner 會同時將資料放在多個 Zone 中,這些 Zone 可以跨 Region,使用者可以自己設定,想要將資料放在哪個 Region,透過這種概念達到極高的可用性。 多個 Region 間的資料,會透過 Google 的光纜進行同步,並且透過原子鐘來校對時間,確保其原子性。 Spanner 與 RDBMS / N-RDBMS 比較 圖片來源:Google Cloud

2021-09-25 · 1 分鐘 · steven

[Day9] Cloud SQL (2021 鐵人賽 – Cloud)

昨天介紹完了儲存各種檔案可以使用的 Cloud Storage,今天要來介紹另外一個很常見的儲存服務:SQL。相信有架過網站的人都知道 SQL 的重要性, SQL 屬於一種 RDBMS (Relational Database Management System),關聯性資料庫系統,相較於非 RDBMS 的資料庫系統,我們通常會稱為 NoSQL。 在通常的情況下,如果我們需要架設一個 SQL 的 Server , 可能會先準備一台伺服器,安裝完作業系統後,再使用 Docker;或直接安裝 SQL 的資料庫程式,建立一個資料庫的伺服器。 如果透過了 Cloud SQL,我們可以將這一系列的事情全部交給 Google,僅需要一鍵開啟一台 Cloud SQL 的機器即可。 Cloud SQL 目前支援 MySQL 、 PostgreSQL 與 Microsoft SQL Server 的資料庫服務。 Cloud SQL 還有以下幾種優點: Automatic update如果各大 SQL 服務出現了重大的漏洞與更新,Google 可以自動化的將服務更新。Automatic replication- Cloud SQL 支援自動複製,可以直接複製一台當前的 SQL 機器,提供備份或測試等多種使用情境。Managed backups- Cloud SQL 可以負責自動化的管理備份,每個 instance 最多可以管理 7 個備份。Scaling- 可以讓擴展機器,將目前的機器硬體規格升級成更高級 需要重新開機 SQL 性能 透過 Cloud SQL 選擇的 instance 會對 SQL 的效能進行最佳化,最高可以使用: ...

2021-09-24 · 1 分鐘 · steven

[Day8] Storage (2021 鐵人賽 – Cloud)

介紹完了虛擬機器與網路後,接下來要跟各位介紹的是關於雲端的儲存方案。Google Cloud 有許多雲端儲存的服務可以供大家選擇,例如 Cloud Storage 、 Cloud SQL 、 Cloud Spanner 、 Cloud Datastore 與 Cloud Bigtable。今天會與各位介紹最直觀,最直覺的 Cloud Storage。 簡介 Cloud Storage 主要可以用來儲存各種 Binary 的檔案,例如圖片檔、壓縮檔等。根據新聞報導,包含了蘋果、抖音等各大公司,背後都有使用到 Google Cloud 的 Storage 服務,蘋果更是使用到了 8 Exabytes 之多。如果沒有意外的話,Google Drive 背後就是運行 Cloud Storage 的服務。 Cloud Storage 預設會將所有資料進行加密,並使用 HTTPS / TLS 進行傳輸。可以取得 HTTPS 的直接連結,作為圖床使用。 Cloud Storage 不能算是一種檔案系統,它是透過 Bucket 的方式儲存不可變(immutable) 的檔案;不過也有第三方的工具 Cloud Storage FUSE 可以將 Cloud Storage 掛載成虛擬的網路硬碟。 Class Cloud Storage 分成了 4 種不同的 Class , 分別是 Multi-regional 、 Regional 、 Nearline 與 Coldline,他們的價格與使用情境有許多的不同。 ...

2021-09-23 · 1 分鐘 · steven

[Day7]Virtual Networks (2021 鐵人賽 – Cloud)

今天來介紹虛擬網路的部分,既然我們都有各種的虛擬機器、虛擬服務,那想當然,這些服務就是透過虛擬網路進行連線。虛擬網路如同現實網路一樣,也有許多需要在意與設定的地方,例如 IP 、 Routing 或防火牆等。 VPC 虛擬私人網路 (VPC, Virtual Private Cloud) , 就如同現實生活中的 LAN , 可以將虛擬網路彼此的進行連接或隔離。 一個 Project 預設可以有 5 個虛擬網路,這些網路除了自己使用之外,也可以跟其他的 Project 互相共享。這些虛擬網路中的 IP 沒有嚴格的限制範圍;我們也可以設定自己在歐洲與亞洲的機器於同一個區網內。我們也可以藉由 Cloud VPN 等方式將自己地端的設備接入雲端,Cloud VPN 相關技術將於之後的文章再跟大家介紹。 VPC 在 Google Cloud 中有三種模式,分別是 Default 、 Auto 與 Custom Default Mode 在每一個 Project 中都會預設一個 Default Mode 的網路,他們在每一個 Region (可跨 Zone) 中都是一個 Subnet,所以,它有預設的防火牆 Rule。事實上, Default Mode 的 VPC 網路,就是透過接下來要介紹的 Auto Mode 生出來的。 Auto Mode Auto Mode 如同 Default Mode,它會自動生成,每一個 Region 中會有一個 Subnet,而每一個 Subnet 預設的 IP Range 使用了 /20 的子網路遮罩,最高可以擴充為 /16。 ...

2021-09-22 · 1 分鐘 · steven

[Day6]Virtual Machines (2021 鐵人賽 – Cloud)

今天要來介紹的是雲端的虛擬機器 (VM),屬於雲端 IaaS 最具有代表的一項產品。相信有許多讀者應該都有在自己電腦上使用虛擬機的經驗吧?例如 Virtual Box 或 VMWare 等程式,虛擬機在實用上有非常多的優點。 虛擬機的優點 虛擬機最大的優點就是可以與實體機器隔離,做任何的事情都不會影響到原始的機器。除此之外,在假設 Host 電腦的效能與容量足夠的前提下,我們也可以隨時地變更虛擬機的硬碟大小、CPU大小、硬碟容量等。我們也可以直接針對整台虛擬機的映像(image)檔案進行快照(snapshot),作為即時的備份使用。 如果我們有很多台的虛擬機,也可以建立虛擬的網路將他們互相連起來;有關雲端的虛擬網路 (VPC),我們會留到明天再跟各位進行介紹。 上述這些虛擬機的優點,無論是地端與雲端的設備都可以運用的到,而雲端的機器由於是交由服務商進行管理,所以對於正常使用者來說,我們可以視為 host 的機器將近是無限大,想要開多少都沒有問題! vCPU 與 Throughput 一個 vCPU 等同於一個硬體的超值行續 (Hyper-Theread),以目前的 GCP 規定,一台的 VM 最多可以開 96 個 vCPU 。 一個 vCPU 的 網路吞吐量 (throughput) 為 2Gbps。到目前為止,若使用一台大於等於 16顆 vCPU 的裝置,其網路的 throughput 最高為 32Gbps。如果開啟特殊的虛擬機,例如使用到高級 GPU 的 V4 或是 V100 ,則可以到 100 Gbps。 Storage 虛擬硬碟方面,在 GCP 上面也有幾種選擇,分別是 Standard 、 SSD 與 Local SSD。不同的硬碟選擇,想當然的,就是他們的性能與價格有所差距,大家可以依照自己的需求選擇最適合的硬碟解決方案,而這三種硬碟分別的差距如下: Standard可以理解成普通的電腦機械式硬碟 透過網路連接上 VM 它們的容量可以視需求彈性的增加(只能增加不能減少) 最大值在每台 VM 上可以有 257 個 TB 最便宜SSD- 相對於 Standard ,可以有更高的 IOPS 透過網路連接上 VM 也可以在線的增加容量(只能增加不能減少) 最大值在每台 VM 上可以有 257 個 TB 價格其次Local SSD- 比起 SSD 有更高的吞吐量,且低延遲 直接硬體的連接在 VM 上 關閉、刪除 VM 後,資料就會被刪除 通常拿來作為 swap 使用 單顆 Local SSD 最大容量為 375GB 一台 VM 最多可以連結 8 顆 Local SSD VM Access 通常我們訪問雲端的 VM 都是藉由網路的方式,在大多數情況下, Linux 的作業系統我們會使用預設為 22 Port 的 SSH,而 Windows 作業系統則會使用預設為 3389 Port 的遠端桌面連線 (RDP)。 ...

2021-09-21 · 2 分鐘 · steven

[Day5] Project,IAM (2021 鐵人賽 – Cloud)

今天要來介紹的是,剛進入雲端一定會面對到的部分:Project以及 IAM。我覺得這個相關的主題會是雲端裡面數一數二無聊的 QQ,但以一個完整的雲端架構而言,這卻是非常非常重要的部分。特別是 IAM 這個主題,單純這個主題,事實上身為一個雲端管理者、架構師,就可以上一整個月的課程了。 Project 任何的 GCP 服務,都會屬於一個 Google Cloud Console 的 Project,無論是管理 API 、 管理計費方式、增加其他的協作者等都是基於 Project 為單位,而一個 Project 底下則可以有許多的資源 (Resources)。 一個 Project 可以包含非常多的使用者,且每個 Project 都是一個獨立的單位,獨立的隔間,他們會分開的計費。 每一個 Project 會有三個相關的識別屬性 Project ID可以自己定義,它必須是 Global Unique 的 設定完後就不可更改Project Name- 可以自己定義,不需要 Unique 設定完後仍然可以再次修改Project Number- 不可自行定義,由 GCP 自動產出 不可自行更改 Project 階層式管理 GCP 也可以透過階層式的進行管理,以一個公司為例,通常會使用組織節點 (Organization Node),而一個公司底下可能會有不同的部門,這個時候就可以透過資料夾 (Folders) 進行管理,而每一個部門底下也可能會有多個 Project;每個 Project 底下則又可以有多個 Resources,範例如下圖所示。 圖片來源:Google Cloud Creating and managing Folders 不同的資料夾間,可以設定不同的 IAM 權限管理政策,通常來看,整個公司架構的樹狀圖中,位居越高位的管理權限越大,而越下面的權限越低。 IAM Identity and Access Management (IAM),身分以及訪問權限管理,是雲端管理之中,最最重要的一件事情。如果一個 IAM 的階層管理做得越完善,越齊全,就越不可能會遇到一些看起來很荒謬的事情。 ...

2021-09-20 · 2 分鐘 · steven

[Day4] Google Cloud (2021 鐵人賽 – Cloud)

今天的內容會跟各位介紹 Google Cloud 相關的基礎知識,希望不會不小心的講成像業配文QQ,先聲明,我沒有拿到 Google 給我的任何 $$ QQ。 GCP 提供了多種類型的服務 GCP 的服務,從低層級到高層級,包含了 IaaS 、 Hybrid 、 PaaS 、 Serverless logic 與 Automated elastic resources。越低層級的內容,使用者可以控制的參數就越多,設定也比較複雜;越高層級的服務須要設定的參數就越少,可以快速且方便的使用,不過相對應的,彈性與客制化程度就比較低。特別是機器學習的部分,Google 提供了許多方便的 API 供大家使用,這些 API 甚至可以讓不會寫程式的人快速的接入各種方便的應用。 以下為 GCP 常見的服務列表 運算資源Compute Engine Kubernetes Engine App Engine Cloud Functions ……儲存資源- Bigtable Cloud Storage Cloud SQL Cloud Spanner Cloud Datastore ……大數據- BigQuery Pub/Sub Dataflow Dataproc Datalab ……機器學習- Natural Language API Vision API Machine Learning Speech API Translate API …… Google Network 根據資料顯示, Google 目前在全世界的網路下,成載了世界的 40% 的流量,是世界上最大的網路商。它的海底光纜的總長度更超過了 10 萬公里,投資了數十億美元建至,確保了 Google 各種服務的穩定性。 ...

2021-09-19 · 1 分鐘 · steven

[Day5] Process (2021 鐵人賽 – PT)

一個滲透測試的流程,可以簡略的分成兩大階段,資訊蒐集與漏洞利用。而資訊蒐集階段則又可以分為偵查與掃描;而漏洞利用則又可以分為普通的漏洞利用與提權,這邊來與各位介紹一下這幾個階段分別具體需要實作的事情有哪些。 偵查 當我們獲取了一個目標,剛開始,我們會需要嘗試著蒐集各種與目標相關的公開情報。以公司來說,我們可以透過各種的搜尋引擎獲取機構的部分資料,例如人士、Email、電話等。很多時候這些資料對於後續的攻擊流程會有很大的幫助。 接下來我們可以試圖了解我們攻擊目標相關的資料,例如使用的作業系統版本,伺服器版本等,假設是一個指定網段的資料蒐集,除了自行的動手掃描之外,我們也可以藉由許多開放資料的平台,例如 Shodan 、 ZoomEye 等。 通常在做偵查的階段,我們也會同時的進行掃描的動作,偵查與掃描主要是為了可以讓我們更進一步的了解我們的目標,確立可以攻擊的弱點等。 掃描 在進行了一系列的偵查之後,我們就可以開始嘗試著對攻擊的目標進行資訊的掃描。通常面對一台伺服器,我們的起手式會是對端口(Port) 進行掃描,目的是觀察伺服器有開了哪一些的服務,在這邊,通常我會使用的工具是 nmap 與 rustscan 等。 如果是網頁伺服器,通常可以對網頁的目錄進行掃描,這邊常見的工具有 dirsearch 、 dirb 、 gobuster 等;部分掃描路徑的工具,也具有掃描 Sub-domain 的功能,例如 gobuster 與 ffuf 等,我們也可以觀察瀏覽器中的 header 等資訊,或是透過 Wappalyzer 工具進行分析。 偵查與掃描通常不會一次就全部的完成,例如我們掃描到了某個 Port 號,開啟了一個網頁伺服器,則可能會再透過人工方式對於這個網頁伺服器進行一些偵查的工作;而偵查完畢後,則可能更換下一個 Port 號開啟的服務進行進一步的偵查與掃描。 尋找漏洞 待我們在偵查與掃描獲得了各種的資訊,就可以試著尋找網路上對於該版本的作業系統、伺服器軟體是否有公開的弱點 (CVE),如果有相關弱點的話,是否有可以進行漏洞利用(Exploti)的腳本,在這邊,通常我會直接在 Google 上搜尋 {服務版本} Exploit,除此之外,也可以透過 exploit-db 、 searchsploit 以及 Github 等方式查找相關的利用方式。 很多時候,我們查找到了某些的漏洞,卻不一定可以馬上地進行使用。舉例來說,我們發現了某個 CMS 在相應版本中的漏洞,而它的使用條件是需要先進行登入,在這種條件下,我們可以先暫存著相關的資訊,以備不時之需,並試圖尋找與開發其他漏洞。 漏洞利用 尋找完相關的 Exploit 腳本後,我們就可以試著執行這些腳本,達到漏洞利用的效果。很多時候,我們也可能需要串接多個不同的漏洞,才能達到遠端命令執行 (RCE)。 當然在大多數情況下,我們不一定有辦法尋找到相對應版本的漏洞進行利用,這種時候就需要透過人工對各個目標進行測試。這種情境下就會比較類似 CTF 的思路,以網頁為例,通常就會以 OWASP Top 10 上常出現的漏洞開始下手進行測試。而 Binary 的 Protocol 則有可能會需要使用到 CTF 中, pwn 的相關技術,進行 Binary Exploitation 利用 Buffer Overflow 等。 ...

2021-09-19 · 1 分鐘 · steven

[Day4] Tools And Environment (2021 鐵人賽 – PT)

今天來介紹一下滲透測試常用的環境與工具,正所謂工欲善其事,必先利其器。準備好自己熟悉、習慣的作業系統與程式環境,對於後續的各種事情都可以事半功倍。 虛擬機 通常,對於滲透測試相關的設備與環境,我們都會使用虛擬機(Virtual Machines),目前常見的軟體有 VirtualBox 、 VMWare 、 Parallel Desktop 與 Qemu 等。大家可以挑選自己習慣的環境,除了使用習慣上,基本上以初學者來講,虛擬化環境沒有太大的差別,如果各位仍沒有任何偏好的化,我會建議大家從 VirtualBox 開始。如果需要使用 VMWare 的話,也請務必採用付費的 Workstation 或 Fusion 版本,才能方便使用完整版的功能,例如 Snapshot 作業系統 作業系統方面,通常我會建議至少同時需要準備一個 Linux 的作業系統,以及一個 Windows 的作業系統,這樣比較能快速的應付各種的需求與測試。作業系統的版本與偏好,則也是看大家的習慣而定。 以 Linux 作業系統為例,許多人都會推薦使用 Kali Linux 與 Parrot OS,但其實我個人反而比較喜歡乾淨的 Ubuntu 作業系統, Kali,Parrot Linux 最大的特色與優點是,他集成了非常多常見的紅藍隊工具,可以讓使用者快速的上手,免去了各種安裝的麻煩;相對之下,Kali Linux 的缺點則是,它太像一個軍火庫了,裡面的工具過多,也常常得使新手產生混亂。而對於某些需要指定特殊版本的程式,在 Kali 上也有可能會出現一些小問題,但本次鐵人賽主要使用的 Linux 環境,我預計仍會採用 Kali Linux,因為可以省去許多安裝環境的麻煩。 而 Windows 環境就比較自由一點了,通常建議可以使用 Windows 10 的 Pro 版本以上,或是 Windows Server 的各種發行板,主要 Windows 的作業系統是用來處理一些,面對到 Windows Server 的靶機,我們可以在自己的 Windows 作業系統上做各種的實驗與演練,待測試完成後,再將指令與程式攻擊至靶機,以本次鐵人賽而言,預計都會以 Linux 的作業系統為主,如果想要手把手跟著做的朋友們,不需要急著安裝也沒有關係! 程式 很多人都在詢問,想要當一駭客到底要學會什麼程式語言,要學會哪些工具。我覺得,如果要成為一位厲害的資安技術人員,不太可能單靠學會幾樣的工具與程式語言就能應付所有的環境。關於程式方面,這邊大概列一些最最基本的軟體,主要提供給非使用 Kali Linux 作業系統的使用者,以利後續的其他工具安裝。 ...

2021-09-19 · 1 分鐘 · steven

[Day3] Cloud Architectures (2021 鐵人賽 - Cloud)

講到雲端相關的議題,一定會看到的就是 IaaS 、 PaaS 與 SaaS。這幾個名詞可以算是雲端的三種層次,雖然我覺得,很多時候某些雲端服務不一定可以明確的區分他屬於哪一種層次,不過,其實也沒有太重要XD。既然大家都這麼的愛用,那我們就還是來了解一下他們分別的意義吧! IaaS (Infrastructure as a Service) IaaS,基礎設施即服務,可以算是以雲端的角度而言,與地端的機器最相近的服務。如果用過 vCenter 等裝置的話應該可以想像,它就是可以在雲端開啟虛擬機器。就算沒有接觸過任何的虛擬機器也沒關係,我們可以想像成,就是在雲端幫我們準備了一台我們定義好規格的電腦。 使用 IaaS ,我們等同於可以直接的管理,控制整台電腦的所有功能,舉凡硬碟存取,網路存取,也可以完整的訪問 CPU 以及 Memory ,提供了最大的可控制性。但俗話說的好,能力越大,責任越重,在 IaaS 的環境底下,使用者虛擬主機上遇到的所有軟體相關問題,雲端的服務商也都不需要負責,雲端服務商只負責,並保證機器是可以被正常的運行的。 PaaS (Platform as a Service) PaaS,平台即服務,相較於 IaaS ,我們不需要在意機器這麼底層的東西。較底層的基礎設施、作業系統與程式相關,都由雲端的廠商進行處理,使用者甚至不需要處理任何的軟體更新等問題。 假如說,我們的需求是需要架設一個 MySQL 的 Server。如果以地端的機器,或是以 IaaS 為角度來看的話,我們通常會先需要準備一台電腦,安裝一個 Linux 的作業系統,這個時候,會需要考量要使用到 Ubuntu 、Debian、 CentOS 等;等待安裝好了作業系統,接下來要安裝 MySQL 的 Server,這個時候又要考量說,我們的服務是否需要放在 Docker 的 Container 中,或是 MySQL 需要安裝多少的版本。 上述的這些問題,如果我們使用了 PaaS 中的資料庫相關服務,滑鼠點兩下,選擇開啟一台 Cloud SQL,等待幾分鐘的時間,雲端的廠商就全自動地幫我們處理好這樣的需求了! SaaS (Software as a Service) SaaS,軟體即服務,這相信是大家目前都已經有接觸的一種雲端服務。基本上我們可以直接把這邊的 Software 視為一種產品。舉例來說 Google Drive 就算是一種 SaaS 的產品。我們可以開心的使用 Google Drive ,大家從來都不會在意或想過說:Google Drive 背後跑的是怎麼樣的作業系統,是 Linux 嗎? Google Drive 背後有沒有使用到 Hadoop 的 HDFS 之類的技術? 作為一個使用者來看,我們完全不需要在意以上所說的這些事情!只需要專注地使用我們的服務就好! ...

2021-09-18 · 1 分鐘 · steven