在 Twitter 上看到
在 Twitter 上看到
原文連結
大致上是說在 2014 聖誕夜
有個據信由 Bitcoin Baron 發起的
針對 the City of Columbia, Missouri 的網站
進行的 DDoS 攻擊中
發現大量的 1434/UDP
封包
此類封包的平均大小大約為 441 bytes (含 header)
封包內容長得像這樣
ServerName;WIN3H1QPRPTOAS;InstanceName;MSSQLSERVER;
IsClustered;No;Version;9.00.5000.00;tcp;1433;np;
\\WIN3H1QPRPTOAS\pipe\sql\query;;
經由作者追查後發現
是 MS SQL Server Resolution Service 所使用的
稱為 MC-SQLR 的 Protocol
存在於 MS SQL Server 2000 及其以後的版本中
client 只要送 1 bytes 的 data 就會讓 Server 回傳此封包
範例的 python3 sciprt 蠻簡單的
import socket
HOST_IP = "192.168.1.1"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.connect((HOST_IP, 1434))
qry = bytes.fromhex('02')
sock.send(qry)
ans = sock.recv(5120)
print(ans)
將封包扣除 header 的大小後
大約是 220 bytes 左右
所以放大了 220 倍左右
(此為作者後來修正,原先沒扣掉封包 Header 的平均大小約為 440 bytes)
攻擊者透過 botnet 並將 source ip 偽造成 victim ip
向網路上運行此服務的 Public MS SQL Server 發送此種封包
導致這些 Server 成為 Amplifier
間接對 victim 造成 DDoS 攻擊
而將此 Resolution Service 關閉會影響一些正常的服務
所以作者建議不要將有運行此 Service 的 MS SQL Server
放在 Public Network
The behavior exploited in this reflection attack is a key component of the functioning of MS SQL Server 2000 and later.
Disabling this service is likely not to be an option.
It may be possible to limit the address space to which a server will respond to CLNT_BCAST_EX messages.
Most of all, though, owners of SQL Servers should question whether their servers should really be exposed to the internet in the first place.
有趣的是
作者提到在 MC-SQLR protocol documentation 中
有個關於安全的段落 5.1 Security Considerations for Implementers
寫著
"No security considerations are associated with the SQL Server Resolution Protocol"
他建議 M$ 該修改這部分了XD
Share
Donation
如果覺得這篇文章對你有幫助, 除了留言讓我知道外, 或許也可以考慮請我喝杯咖啡, 不論金額多寡我都會非常感激且能鼓勵我繼續寫出對你有幫助的文章。
If this blog post happens to be helpful to you, besides of leaving a reply, you may consider buy me a cup of coffee to support me. It would help me write more articles helpful to you in the future and I would really appreciate it.
Related Posts
- HITCON CTF 2015 Quals Write-up
- 新增幾項設定來防範 Clickjacking Frame Attack
- ITC Hw2
- Y2017W32
- MySQL client 預設允許 MySQL Server 讀取本地端的檔案