Một số giao thức phổ biến trong môi trường enterprise
DNS (Domain name resolution)
Định nghĩa
- DNS, hay còn được biết đến là hệ thống phân giải tên miền. DNS được coi là sổ danh bạ của một mạng lưới. Đây là nơi lưu trữ những domain và ip tương ứng, cung cấp những địa chỉ ip khi được hỏi về domain. Đây cũng là nơi lưu thông tin về cấu hình mail của một tên miền như DKIM, SPF, vân vân.
- Cổng thường dùng: 53/all (DNS), 853/all (DNS over TLS - DoT), 443/tcp (DNS over HTTPS - DoH)
Các loại bản ghi DNS
- CNAME: là alias của một tên miền. Cho phép bạn tao một subdomain mới và trỏ tới một A hoặc AAAA record khác và đặt TTL.
- A: là bản ghi được sử dụng phổ biến để trỏ tến một IP cụ thể. Đay là một bản ghi DNS đơn giản nhất.
- MX: là bản ghi liên quan tới các dịch vụ email. MX cho phép bạn biết địa chỉ của Email server và ai quản lý chúng.
- TXT: Đây là record chứa các thông tin liên quan tới định dạng văn bản. TXT thường được dùng để setup DKIM, là một chức năng kiểm tra và quản lý xem có thật sự người dùng trong hệ thống gửi mail đến cho bạn hay là một mail phising.
- SRV: là bản ghi dùng để xác định xem dịch vụ nào nằm ở cổng nào. SRV thường được dùng khi mà dịch vụ đó không nằm ở cổng mặc định vì bất kỳ lý do nào đó.
- NS: Xác định Nameserver cho từng domain.
Các loại DNS server
- Root name server: Đây là máy chủ tên miền chứa các thông tin, để tìm kiếm các máy chủ tên miền lưu trữ (authority) cho các tên miền thuộc mức cao nhất (top-level-domain).
- Local Name Servers: Server này chứa thông tin, để tìm kiếm máy chủ tên miền lưu trữ cho các tên miền thấp hơn. Nó thường được duy trì bởi các doanh nghiệp, các nhà cung cấp dịch vụ Internet (ISPs).
Cơ chế hoạt động.
Giả sử, bạn truy cập vào trang web pandakewt.net lần đầu tiên. Hệ thống sẽ truy cập cache của máy tính trước, hệ thống cache của máy tính báo rằng không có tên miền này trong sổ ghi của hệ thống. Tiếp đó, hệ thống truyển tiếp thông tin này qua Local Name Server (ở đây thường là ISP của bạn). Giả sử ISP của bạn cũng trả về kết quả là không tìm thấy tên miền. Local Name Server sẽ chuyển tiếp request của bạn đến Root Name Server. Lúc đó root sẽ trả kết quả về local, local cache request và truyển tiếp thông tin về máy tính bạn. Giả sử bạn có truy cập thêm một lần nào nữa vào tên miền. Lúc đó máy bạn đã cache nên nó sẽ trả về đúng ip mà không cần request đến local hoặc root.
Một số cách tấn công đến DNS
- DNS Leak: Trong cài đặt mặc định, máy của chúng ta thường sẽ đặt dns của ISP là dns chính. Dựa vào một số giao thức như WebRTC, v.v. kẻ tấn công có thể biết được là chúng ta sử dụng ISP nào, từ đó phán đoán được vị trí tương đối của chúng ta, kiến VPN không còn tác dụng nữa.
- DNS Tunneling: Kiểu tấn công này tin tặc thường là người đứng ở giữa MITM. Dựa vào lý do DNS không được mã hóa. Tin tắc có thể dễ dàng đứng ở giữa và thay đổi gói tin DNS (Intercept), từ đó dẫn người dùng đến trang web mà tin tặc mong muốn. Kiểu tấn công này có thể dễ dàng ngăn chặn bằng cách sử dụng DNSSEC, DNS over TLS (DoT) là DNS over HTTPS (DoH).
- DNS Spoofing: Thay vì tin tặc đứng ở giữa làm trung gian giữa hai máy client và DNS server, tin tặc lúc này giả làm một DNS Root name server, đánh lừa DNS server và dẫn người dùng đến trang web mà tin tặc kiểm soát.
- Và một số kiểu tấn công DoS/DDoS khác (NXDOMAIN, DNS Flood, DNS Amplification).
LDAP (Lightweight Directory Access Protocol)
Định nghĩa
- Là một giao thức truy cập cơ sở dữ liệu phân tán, dùng để quản lý và truy xuất thông tin trong mạng máy tính.
- LDAP thường được sử dụng để quản lý thông tin người dùng, thiết bị và tài nguyên mạng. Sở dĩ mang tên Lightweight Directory bởi vì các thông tin này được LDAP lưu trữ theo mô hình thư mục và tổ chức bằng cấu trúc cây dữ liệu.
- Hỗ trợ được nhiều phương thức truy cập dữ liệu khác nhau, bao gồm cả TCP/IP, X.500 và HTTP.
- Trong doanh nghiệp lớp, LDAP được sử dụng như một giải pháp quản lý, truy xuất dữ liệu và tài nguyên. Ngoài ra LDAP còn thường được sử dụng để làm IAM, hỗ trợ quản lý xác thực người dùng bao gồm Kerberos hoặc SSO.
- Cổng thường dùng: 389/tcp (LDAP), 636/tcp (LDAPS), 3269 (LDAP in AD), 3269 (LDAPS in AD)
Hoạt động của LDAP
Một hay nhiều LDAP server sẽ chứa các thông tin về cây thư mục (Directory Infomation Tree -DIT). LDAP client sẽ kết nối đến server và gửi request, server sẽ phản hồi lại bằng chính nó hoặc trỏ tới LDAP server khác để client lấy được thông tin. Thứ tự khi kết nối theo từng bước dưới đây:
- Connect (Kết nối với LDAP): Client sẽ mở kết nối tới LDAP server.
- Bind (kiểu kết nối – ẩn danh hoặc đăng nhập): Client gửi đii các thông tin xác thực.
- Search (Tìm kiếm): Client gửi đi yêu cầu tìm kiếm.
- Interpert search (xử lý tìm kiếm): Server thực hiện việc xử lý tìm kiếm.
- Result (kết quả): Máy chủ phản hồi lại kết quả với Client.
- Unbind: Client gửi đi yêu cầu đóng kết nối với server.
- Close connection (đóng kết nối): Đóng kết nối từ server.
Mô hình hoạt động của LDAP
LDAP được chia thành 4 mô hình như sau:
- LDAP information: Xác định cấu trúc và đặc điểm của các thông tin trong thư mục.
- LDAP Naming: Xác định cách tham chiếu và tổ chức của thông tin.
- LDAP Functional: Định nghĩa cách mà các bạn truy cập và cập nhật thông tin trong thư mục của bạn.
- LDAP Security: Định nghĩa ra cách thông tin trong thư mục của bạn được bảo vệ để tránh các truy cập không được cho phép.
Cách xác thực, ủy quyền và kiểm soát truy cập

- Client có quyền truy cập vào tất cả các quyền tạo một phiên mới liên kết với máy chủ LDAP.
- Client gửi yêu cầu truy vấn.
- LDAP xử lý truy vấn và cung cấp dữ liệu phản hồi.
- Client nhận phảnn hồi, hủy phiên và xử lý dữ liệu.
Một số kiểu tấn công
- Sniff clear text cred: Với bất kỳ kiểu liên kết nào, nếu một phần mềm không được bảo mật bằng SSL/TLS hoặc bất kì kiểu mã hóa nào thì attacker đều có thể thực hiện MITM và LDAP không phải là một ngoại lệ. Ngoài ra, khi sử dụng SSL/TLS, nếu không cấu hình cẩn thận, attacker hoàn toàn có thể sử dụng Donwgrade attack, ép người dùng sử dụng một liên kết không bảo mật, hoặc một chứng chỉ giả, từ đố xem thông tin của người dùng.
- LDAP Injection: Gần giống như SQL injection, nếu phần mềm chúng ta không sanitize một cách kĩ càng, kẻ tấn công hoàn toàn có thể tạo một LDAP statements, bybass login, hoặc thậm chí là dump cả LDAP database, đánh cắp dữ liệu người dùng. Xem thêm
- Anonymous Access: Dựa vào những client thứ 3, hoặc những phần mềm quản lý LDAP như LAM có quyền đọc ghi ldap,
attacker có thể khai thác lỗ hổng của phần mêm đó, từ đó chiếm quyền điều khiển phần mềm và lấy được tất cả các dữ
liệu của một LDAP.
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=)" "" + - Valid Credentials
Nếu bạn có thông tin xác thực hợp lệ để đăng nhập vào máy chủ LDAP, bạn có thể xuất tất cả thông tin về Quản trị viên
miền bằng cách sử dụng:
ldapdomaindump <IP> [-r <IP>] -u '<domain>\<username>' -p '<password>' [--authtype SIMPLE] --no-json --no-grep [-o /path/dir]
RDP (Remote Desktop PRotocol)
Định nghĩa
- Là một giao thức được thiết kế bởi Microsoft cho phép người dùng điều khiển GUI thông qua kết nối mạng.
- Để tạo một kết nối RDP, RDP client được khởi tạo bởi người dùng và hệ thống bị điểu khiển cần có phần mềm RDP server.
- Cổng thường dùng: 3389/tcp (RDP), 443/tcp (RDPGW)
Cách hoạt động của RDP
- RDP truyền dữ liệu của chuột, bàn phím, màn hình và những dữ liệu cần thiết thông qua TCP/IP. RDP cũng được trang bị một lớp mã hóa riêng, giúp các kết nối đi qua mạng được an toàn hơn.
Một số kiểu tấn công
- Bruteforce: Vì RDP có thể đăng nhập bằng mật khẩu nên attacker có thể sử dụng phương pháp bruteforce để tấn công, tuy nhiên RDP cũng có khả năng phòng thủ bằng cách timeout attacker. Nhưng việc timeout đó cũng có thể gây ra tác dụng phụ là ngăn chặn người dùng có thể truy cập được máy tính đó.
- Session stealing: Với quyền truy cập SYSTEM, kẻ tấn công hoàn toàn có thể mở một RDP session kể cả khi không biết mật khẩu của Owner.
- Sticky-keys & Utilman: Chiếm quyền điều khiển bằng stickykey hoặc ultilman, kẻ tấn công hoàn toàn có thể mở một cmd hoặc powershell với quyền admin tại bất kỳ một RDP session nào.
- MITM: Kết hợp với DNS Spoofing hay DNS Tunneling, attacker có thể trỏ máy tính đến một máy bị kiểm soát, sau khi người dùng đăng nhập attacker hoàn toàn có thể lấy cred đó để đăng nhập vào máy.
- BlueKeep (CVE-2019-0708): Với một request đã qua chỉnh sửa, attaker hoàn toàn có thể chạy bất kì code nào trên máy tính người dùng. https://nvd.nist.gov/vuln/detail/CVE-2019-0708
- RDP Process Injection: Đúng với tên gọi của nó, khi một người dùng có quyền admin kết nối vào máy tính, ta hoàn toàn có thể inject code vào process của người đang RDP, từ đó leo quyền kiểm soát.
SMB (Server Message Block)
Định nghĩa
- Tiền thân của SMB là Network Basic Input Output System (NetBIOS/NetBT). NetBIOS là một protocol cho phép người dùng truyền dữ liệu thông qua mạng lưới. NBT sử dụng một dải mã dài đến 16 ký tự, thường là tên của một máy tính để phân biện địa chỉ máy tính này với máy tính khác. NBT session thường được tạo ra bởi hai phần mềm, một client và thiết lập một lệnh "call" đến một phần mềm server ở máy khác sử dụng qua cổng 139.
- Ngoài cổng mặc định là 445, SMB còn có thể giao tiếp thông qua cổng 139 (NBT over IP)
- Là một giao thức được thiết kế để truy cập file, tệp tài liệu và các resource khác qua mạng như máy in hoặc router.
- Thường được dùng bởi các hệ thống chạy hệ điều hành Windows. SMB đảm bảo việc tương thích ngược cho các phiên bản cũ, cho phép những hệ điều hành mới của Microsoft's có thể tương tác trực tiếp với phiên bản cũ mà không cần chỉnh sửa cài đặt gì. Ngoài ra, dự án mã nguồn mở Samba còn cho phép chạy SMB trên những hệ điều hành *Unix.
- Các shares, đại diện cho các phần tùy ý của local file system được cung cấp bởi SMB server mà client có thể nhìn thấy
được nhưng lại độc lập với cấu trúc thực tế của máy chủ. Ngoài ra SMB còn sử dụng Access Control Lists (ACL) để xác
định quyền truy cập, cho phép gán quyền kiểm soát chi tiết lên từng user một như
execute, read, full access. Những quyền đó có thể gán cho từng đối tượng người dùng hoặc một nhóm, dựa vào những shares và độc lập với những quyền cục bộ được đặt trên server. - Cổng thường dùng: 139/tcp (NetBIOS over IP), 445/tcp (SMB over IP)
Cách thức hoạt động của SMB
SMB được biết đến là một dạng request-response protocol. Cách hoạt động của chúng như sau:
- Client gửi SMB request đến server để tạo một sesion.
- Server nhận request và trả về SMB response về client.
- Client nhận response, tạo kết nối hai chiều.
- Client có thể tương tác với server để yêu cầu truy cập đến một tài nguyên được chia sẻ hoặc làm một hành động bất kỳ.
SMB authentication:
- NTLLM: giao thức cũ sử dụng cơ chế challenge - response, dễ tấn công và kém an toàn
- Kerberos là giao thức an toàn hơn, sử dụng mã hóa đối xứng và Key Distribution Center (KDC), được khuyến nghị cho các giao tiếp SMB trong môi trường Active Directory.
- SMB2 và SMB3 mang lại nhiều cải tiến bảo mật, như xác minh tính toàn vẹn gói dữ liệu và thỏa thuận phiên bản an toàn. Việc sử dụng các phương pháp xác thực hiện đại là cần thiết để bảo vệ an toàn dữ liệu.
Chức năng
- Hỗ trợ unicode.
- Hỗ trợ auto discovery, tự động tìm kiếm máy chủ khác.
- Hỗ trở in qua mạng.
- Cho phép phân quyền các shares riêng biệt.
- Xử lý những thuộc tính mở rộng của file.
- Hộ trợ mutex lock, khóa tài nguyên đang truy cập
Một số kiểu tấn công
- Bruteforce
- SMB replay attack: Cuộc tấn công này sử dụng Responder toolkit để capture SMB authentication sessions trên mạng nội bộ và chuyển tiếp chúng đến máy mục tiêu. Nếu phiên xác thực thành công, nó sẽ tự động đưa bạn vào system shell.
- SMB-Trap: Thư viện Windows URLMon.dll sẽ tự động xác thực với máy chủ khi một trang cố gắng truy cập một số kết
nối thông qua SMB, ví dụ: img src="\\10.10.10.10\path\image.jpg". Điều này xảy ra với các hàm:
- URLDownloadToFile
- URLDownloadToCache
- URLOpenStream
- URLOpenBlockingStream

- NTLM Theft: Giống với SMB Trapping, việc cài các tệp độc hại vào hệ thống mục tiêu (via SMB) có thể thực hiện một nỗ lực xác thực SMB bất hợp pháp, cho phép chặn băm NetNTLMv2 bằng một công cụ như Responder. Sau đó, giá trị băm có thể bị bẻ khóa ngoại tuyến hoặc được sử dụng trong một SMB relay attack.
Theo dõi tấn công theo thời gian thực cho thấy SMB là một trong những vectơ tấn công chính cho các nỗ lực xâm nhập, ví dụ như cuộc tấn công Sony Pictures năm 2014 và cuộc tấn công ransomware WannaCry năm 2017. Vào năm 2020, hai lỗ hổng SMB có mức độ nghiêm trọng cao đã được tiết lộ và được đặt tên là SMBGhost ( CVE-2020-0796 ) và SMBleed ( CVE-2020-1206 ), khi được kết nối với nhau có thể cung cấp đặc quyền RCE (Remote Code Execution) cho kẻ tấn công.