Trong nhiều hệ thống doanh nghiệp, Microsoft SQL Server không chỉ là nơi lưu trữ dữ liệu mà còn là một điểm trung tâm quyền lực: kết nối với Active Directory, SCCM, ứng dụng nội bộ, dịch vụ backend và đôi khi chạy với quyền rất cao trên hệ thống. Chính vì vậy, SQL Server thường trở thành mục tiêu hấp dẫn trong các cuộc tấn công nội bộ (internal attack) và pentest.
SQLRecon là một công cụ được xây dựng để khai thác chính điều đó — tập trung vào reconnaissance (thu thập thông tin) và post-exploitation đối với Microsoft SQL Server.
1. SQLRecon là gì?
SQLRecon là một công cụ dòng lệnh (CLI) mã nguồn mở, viết bằng C#/.NET, được thiết kế để:
- Thu thập thông tin chi tiết về SQL Server
- Khai thác sai cấu hình và quyền hạn
- Thực thi hành động post-exploitation thông qua SQL
- Tương tác sâu với SCCM / MECM databases
Repository chính thức:
👉 https://github.com/skahwah/SQLRecon
Công cụ này không chỉ dành cho attacker mà còn rất hữu ích cho defender để hiểu rõ:
“Nếu kẻ tấn công chiếm được quyền SQL thì họ có thể làm được gì?”
2. Triết lý thiết kế của SQLRecon
Khác với các tool SQL injection truyền thống, SQLRecon giả định rằng:
🔑 Người dùng đã có khả năng kết nối vào SQL Server
(ví dụ: domain credentials, SQL account, token nội bộ…)
(ví dụ: domain credentials, SQL account, token nội bộ…)
Từ đó, SQLRecon tập trung vào:
- Enumeration có chiều sâu
- Impersonation & privilege abuse
- Lateral movement thông qua SQL
- Living-off-the-land (dùng tính năng sẵn có của SQL Server)
3. Các phương thức xác thực (Authentication)
SQLRecon hỗ trợ nhiều cách kết nối SQL Server, phù hợp với môi trường enterprise: 🔹 WinToken
- Sử dụng token Windows hiện tại
- Rất hữu ích khi đã foothold trên domain machine
- Dùng domain username/password
- Phổ biến trong pentest nội bộ
- Username/password SQL truyền thống
- Hỗ trợ Azure SQL & môi trường hybrid
👉 Điều này giúp SQLRecon hoạt động tốt từ on-prem → hybrid → cloud.
4. Kiến trúc module của SQLRecon
SQLRecon được xây dựng theo dạng module-based, mỗi module thực hiện một nhóm chức năng cụ thể.
5. Enumeration – Thu thập thông tin chi tiết
Đây là giai đoạn đầu tiên và cực kỳ quan trọng. 📌 Thông tin SQL Server
- Phiên bản SQL
- Edition (Express / Standard / Enterprise)
- Service account đang chạy SQL
- Quyền hiện tại của user
➡️ Giúp attacker đánh giá:
- Có khả năng privilege escalation hay không
- SQL chạy dưới account nào (LocalSystem, domain user…)
📌 User & Permission Enumeration
- Liệt kê SQL logins
- Windows users & groups
- Server roles (sysadmin, db_owner…)
👉 Một SQL login không phải sysadmin vẫn có thể impersonate user khác — đây là điểm rất hay bị bỏ sót.
📌 Database Enumeration
- Danh sách databases
- Tables, columns
- Truy xuất dữ liệu (rows)
➡️ Defender có thể dùng SQLRecon để audit dữ liệu nhạy cảm đang bị expose.
6. Impersonation & Linked Server – Leo thang quyền
🔹 SQL Impersonation
SQL Server cho phép user:
EXECUTE AS LOGIN = 'other_user'
SQLRecon tự động:
- Liệt kê user có thể impersonate
- Chạy module dưới context user khác
⚠️ Một user yếu có thể leo thang lên sysadmin nếu cấu hình sai.
🔹 Linked Server Abuse
Linked Server là con đường lateral movement cực mạnh:
- Kết nối SQL → SQL khác
- Chạy query từ server A sang B
- Thậm chí quay ngược lại AD
SQLRecon hỗ trợ:
- Enum linked servers
- Thực thi module trên linked server
- Chain nhiều server
7. Post-Exploitation – Khi SQL trở thành hệ điều hành
Đây là phần “đáng sợ” nhất của SQLRecon.
🔥 xp_cmdshell
Nếu SQL có quyền sysadmin:
- Bật xp_cmdshell
- Chạy lệnh hệ thống
Ví dụ:
- Tạo reverse shell
- Dump credential
- Add user
🔥 OLE Automation
Dùng COM objects để:
- Tạo file
- Gọi PowerShell
- Tương tác hệ thống
➡️ Thường khó detect hơn xp_cmdshell.
🔥 SQL Agent Jobs
- Tạo job chạy với quyền SQL Server Agent
- Lên lịch payload
- Persistence nhẹ nhàng
🔥 CLR Assembly
- Load .NET assembly vào SQL
- Thực thi code C#
- Bypass nhiều hạn chế truyền thống
SQLRecon hỗ trợ quản lý CLR cực kỳ tiện lợi.
8. SQLRecon & SCCM – Vũ khí hạng nặng
Một điểm rất khác biệt của SQLRecon là hỗ trợ sâu SCCM / MECM.
Các module có thể:
- Enum SCCM sites
- Truy xuất credential mã hóa
- Khôi phục task sequences
- Thêm quyền admin SCCM
⚠️ Nếu attacker chiếm được SCCM SQL DB, gần như toàn bộ domain có thể bị kiểm soát.
9. Ví dụ workflow thực tế
Một kịch bản pentest nội bộ điển hình:
- Có domain credential
- Kết nối SQL bằng WinDomain
- Enum users → phát hiện impersonation
- Leo thang sysadmin
- Bật xp_cmdshell
- Thực thi PowerShell payload
- Pivot sang SCCM → kiểm soát domain
SQLRecon giúp toàn bộ chuỗi này nằm trong một tool duy nhất.
10. Defender học được gì từ SQLRecon?
SQLRecon không chỉ dành cho attacker. Defender có thể dùng nó để:
- Audit SQL permission
- Phát hiện impersonation nguy hiểm
- Kiểm tra linked server trust
- Đánh giá rủi ro SCCM
👉 Hiểu tool = hiểu cách attacker suy nghĩ.
11. Kết luận
SQLRecon là một trong những công cụ toàn diện nhất cho Microsoft SQL Server trong lĩnh vực offensive security. Nó không chỉ giúp enumerate SQL mà còn biến SQL thành bàn đạp để kiểm soát hạ tầng nếu cấu hình sai.
Nếu bạn:
- Pentester
- Red teamer
- Blue team / SOC
- Hoặc admin muốn harden hệ thống
➡️ SQLRecon là một tool đáng để nghiên cứu kỹ.