Professional Documents
Culture Documents
NOTEC2
NOTEC2
1. Trinh sát
Kẻ tấn công sẽ cố gắng thu thập thông tin mà chúng có thể sử dụng để hoạch định
các hoạt động trong tương lai.
Sau đây là các kiểu kiểu tấn công trinh sát có thể xảy ra trong môi trường Azure
1.1. Port Mapping
Kẻ tấn công có thể xem các cổng đang mở trên máy ảo bằng cách xem Network Security
Group trong giao diện Virtual Network
Hình 1. 2: Xem địa chỉ IP thông quan giao diện Virtual Network
Mỗi VM thường có hai địa chỉ IP, một địa chỉ IP nội bộ (Private IP) và Public IP.
Việc lấy các IP này trực tiếp từ Azure rất có lợi cho kẻ tấn công vì chúng cho phép kẻ
tấn công có thể quét tất cả các cổng để biết được cổng nào đang bị đóng và cổng nào
đang được sử dụng, từ đó có thể khai thác nhiều thông tin hơn từ cổng đang mở.
Hình 1. 5: Thu thập thông tin về vai trò của người dùng
Thu thập thông tin vai trò trong ứng dụng: Kẻ tấn công có thể có được thông tin về vai
trò và nhiệm vụ của các thành viên trong ứng dụng thông qua Azure Active Directory
Hình 1. 6: Thu thập thông tin về vai trò của các thành viên trong ứng dụng
Thu thập thông tin về vai trò trong Azure Resources: Kẻ tấn công có thể có được
thông tin về vai trò trong một Azure Resource cụ thể, Resource Group, hoặc
Subscription.
Hình 1. 7: Thu thập thông tin về vai trò trong Azure Resources
1.7. Thu thập resource data
Kẻ tấn công có thể có được thông tin và dữ liệu trong một nguồn tài nguyên đã bị xâm nhập.
Một trong những tài nguyên quan trọng mà hacker có thể dễ dàng thu thập thông tin đó là các
máy ảo.
Hình 1. 10: Đoạn code để giải mã dữ liệu bằng cách sử dụng Microsoft API
Để kẻ tấn công thực hiện thành công cuộc tấn công này, cần có hai điều kiện: Plugin VM
Access phải được sử dụng để đặt lại mật khẩu của người dùng. Và một phương pháp để đọc
tệp chứng chỉ bằng quyền root / quản trị viên.
2.1.2. Pass the Hash
Các công cụ để lấy mật khẩu hoặc hàm băm của mật khẩu từ nhiều vị trí khác nhau trong hệ
điều hành đã có sẵn trong nhiều năm. Một trong số đó có thể kể đến Mimikatz của Benjamin
Delpy – một công cụ cho phép đánh cắp mật khẩu trực tiếp từ bộ nhớ của hệ thống.
Khi sử dụng Mimikatz, trước tiên kẻ tấn công cần có quyền truy cập quản trị vào hệ thống.
Điều này không hề khó khăn, kẻ tấn công có thể sử dụng phương pháp social engineer để
đánh lừa quản trị viên để cài đặt và chạy công cụ Mimikatz bằng việc leo thang đặc quyền
trên hệ thống. Để có thể lấy được thông tin đăng nhập, Mimikatz cần quyền debug, nó sử
dụng đặc quyền này để có thể đọc bộ nhớ trong LSASS. Để cấp cho nó quyền truy cập này,
hãy nhập privilege::d ebug, như được hiển thị ở đây:
Hình 1. 11: Đánh cắp mật khẩu bằng Mimikatz
Như đã thấy trong đầu ra, Mimikatz đã có thể tìm thấy các hàm băm NTLM và SHA1 cho
mật khẩu của TargetUser. Nó cũng có thể tìm thấy bản rõ, không băm của mật khẩu trong cả
phần mở rộng tspkg và wdigest có trong LSASS.
Việc truy xuất mật khẩu của công cụ Mimikatz cũng phải dựa vào hệ điều hành mà người
dùng đang sử dụng và cách cấu hình của hệ thống đích.
2.1.3. Password spraying
Để đối phó với các chính sách khóa tài khoản, việc xóa mật khẩu -password spraying đã trở
thành một kỹ thuật phổ biến được những kẻ tấn công sử dụng. Trong khi cách tấn công brute-
force 1 hình thức hack vét cạn truyền thống thử nhiều mật khẩu khác nhau chỉ với một số ít
tài khoản, password spraying chỉ thử một số mật khẩu phổ biến đối với nhiều tài khoản khác
nhau: điều này xác định tất cả các tài khoản có cùng mật khẩu yếu.
2.1.4. Phishing
Một cách để thu thập mật khẩu là lừa đảo - hay chính xác hơn là lừa đảo qua mạng.
Khi lừa đảo, kẻ tấn công gửi email cho nhiều người dùng để cố gắng lừa họ thực hiện một số
hành động, chẳng hạn như tiết lộ tên người dùng và mật khẩu của họ bằng cách thuyết phục
họ truy cập một trang web độc hại hoặc khiến họ cài đặt phần mềm độc hại. Ví dụ: kẻ tấn
công gửi email có thể trông giống như nó đến từ bộ phận nhân sự và chỉ được gửi đến hàng
chục người với yêu cầu cập nhật thông tin liên hệ của họ.
JSON là một nơi có khả năng lưu trữ thông tin đăng nhập. Vì các nhà phát triển thường cần
sử dụng các tài khoản khác nhau khi truy cập tài nguyên ARM (có thể cho mục đích tự động
hóa hoặc thử nghiệm), Azure cung cấp lệnh ARM PowerShell cmdlet để lưu thông tin đăng
nhập Azure dưới dạng hồ sơ: Save-AzureRmProfile. Các cấu hình này chỉ là các tệp JSON và
nhà phát triển có thể chọn lưu trữ chúng ở bất cứ đâu họ muốn. Bên trong các tệp JSON này
là một mã token, để sử dụng nó, chỉ cần chạy lệnh Select-AzureRmProfile và chỉ định tệp
JSON bằng tham số -Path.
Kẻ tấn công sẽ có thể xác định vị trí các cấu hình này bằng cách thực hiện tìm kiếm một thuật
ngữ như TokenCache, là biến trong tệp lưu trữ thông tin xác thực. Nếu có quá nhiều kết quả
trả về trên hệ thống của người dùng, hãy thử Tenant, PublishSettingsFileUrl và
ManagementPortalUrl.
2.1.6. Đánh cắp chứng chỉ quản lý
Service Principals là tương đương với các tài khoản dịch vụ có trụ sở tại Azure được tìm
thấy trong hầu hết các lĩnh vực của các công ty. Giống như trong môi trường cơ sở, các tài
khoản này được sử dụng khi dịch vụ cần chạy thường xuyên, đó là độc lập với tài khoản quản
trị viên cụ thể trong Azure. Azure cung cấp hai tùy chọn xác thực cho các tài khoản này: mật
khẩu và chứng chỉ.
Azure sử dụng chứng chỉ X.509 không đối xứng, có nghĩa là mỗi chứng chỉ có một khóa
riêng và công khai. Điều quan trọng là phải có được phần khóa riêng của chứng chỉ, vì đây là
thành phần cần thiết để xác thực. Một số nơi mà kẻ tấn công có thể tìm thấy chứng chỉ như:
File Publish Settings
Certificate store
File configuration
File Cloud Service Package
2.1.7. Một số phương pháp khác
Một số phương pháp khác mà hacker có thể sử dụng để đánh cắp thông tin đăng nhập của
người dùng như:
Đánh cắp cookie của người dùng
Sử dụng Smartcards của người dùng: Hiện nay, một số tổ chức sử dụng SmartCards
(thẻ vật lý có chip mật mã được nhúng) để xác thực người dùng của họ. Do đó, nếu
các thẻ thông minh đang được sử dụng, thì việc đánh cắp nó một là một cách có thể để
bỏ qua 2FA . Có hai cách để có được Smartcards của người dùng. Đầu tiên là giành
quyền kiểm soát một hệ thống nơi SmartCard hiện đang được lưu trữ và sử dụng nó từ
đó, và thứ hai là đánh cắp thẻ của người dùng.
Đánh cắp điện thoại hoặc số điện thoại.
Đánh lừa người dùng khiến họ tắt cơ chế xác thực hai bước.
2.2. Các dạng tấn công vào mật khẩu
Khi lấy thành công hàm băm mật khẩu từ máy ảo Linux hoặc Windows, kẻ tấn công sẽ cần
khôi phục các giá trị bản rõ của chúng để sử dụng chúng. Hàm băm có nghĩa là một hướng,
có nghĩa là sẽ không thể xác định bản rõ của mật khẩu chỉ từ một bản băm. Có một số cách
khả thi để lấy mật khẩu từ các bản băm, bao gồm tấn công từ điển, tấn công brute-force,
hybrid attacks và rainbow table attacks.
2.2.1. Dictionary Attacks
Trong một cuộc tấn công từ điển, kẻ tấn công biên soạn một danh sách các từ hoặc cụm từ
phổ biến và sau đó băm từng mục trong danh sách với cùng một thuật toán băm mà hệ thống
mật khẩu của máy chủ mục tiêu sử dụng. Sau đó, kẻ tấn công so sánh mã băm của mỗi từ
trong từ điển với danh sách băm mật khẩu và hiển thị các kết quả phù hợp.
Tấn công từ điển là là một phương pháp tấn công rất hiệu quả nếu có danh sách mật khẩu mà
tổ chức thường sử dụng. Thường có thể tìm thấy những từ điển tấn công này trực tuyến sau
khi hacker xâm nhập một trang web phổ biến và phát hành mật khẩu bị đánh cắp. Nguồn
https://github.com/danielmiessler/SecLists/.
2.2.2. Brute-Force Attacks
Khi sử dụng phương pháp Brute-Force Attacks, kẻ tấn công tạo ra mọi tổ hợp mật khẩu có
thể có của các chữ cái, số và ký tự đặc biệt, sau đó băm mật khẩu đó cho đến khi tìm thấy kết
quả khớp. Phương pháp này rất tốn thời gian và thường không thực tế đối với các mật khẩu
có độ dài hơn 8 ký tự, nhưng nó có thể tìm thấy một mật khẩu ngắn mà kẻ tấn công sẽ không
tìm thấy trong từ điển điển hình, chẳng hạn như f8i!R+.
2.2.3. Hybrid Attacks
Các cuộc tấn công Hybrid thường kết hợp từ điển và tấn công brute-force để cố gắng khôi
phục các mật khẩu phức tạp một cách nhanh chóng. Trong phương pháp này, kẻ tấn công kết
hợp một từ điển cơ bản với một chuỗi ký tự, kiểm tra kết quả đối với hàm băm và sau đó
chuyển sang từ tiếp theo.
Ví dụ: một mật khẩu như hippopotamus200 có thể sẽ không hiển thị trong bất kỳ danh sách
từ điển nào và việc vét cạn một mật khẩu 15 ký tự sẽ mất một khoảng thời gian dài.
Tuy nhiên, một cuộc tấn công hỗn hợp sử dụng một từ tiếng Anh theo sau là một đến ba số
có thể sẽ tìm thấy mật khẩu này trong vài giờ hoặc vài ngày.
Hạn chế lớn nhất của một cuộc tấn công Hybrid là cần một số ý tưởng về định dạng của mật
khẩu trông như thế nào. Ví dụ: mô hình “một từ cộng với một đến bốn ký tự”.
2.2.4. Rainbow Table Attacks
Một cuộc tấn công bảng cầu vồng giống một cuộc tấn công brute-force. Việc lưu trữ mọi
hàm băm có thể có cho một mật khẩu có độ dài nhất định sẽ đòi hỏi một lượng lớn dung
lượng. Để tránh vấn đề này, các nhà thiết kế bảng cầu vồng thực hiện một hoạt động mật mã
phức tạp (được gọi là reduction function) để các chuỗi băm lại với nhau và chỉ lưu trữ phần
đầu và phần cuối của mỗi chuỗi.
Để kẻ tấn công sử dụng bảng cầu vồng, một chương trình sẽ lấy hàm băm mục tiêu và bắt
đầu sử dụng bảng chuyển hàm băm đã thu được thông qua reduction function và xem kết quả
có khớp với phần nào của bất kỳ chuỗi nào không. Chu trình được thực hiện lại cho đến khi
xác định đúng chuỗi.
Mặc dù sử dụng rainbow tables có thể nhanh hơn đáng kể so với các cuộc tấn công khác
được đề cập trong phần này, nhưng chúng có ba nhược điểm lớn. Đầu tiên, kẻ tấn công phải
tính toán trước chúng, vì vậy chúng đòi hỏi phải lập kế hoạch và chuẩn bị nhiều hơn các
phương pháp khác. Thứ hai, bảng cầu vồng chỉ phù hợp với một định dạng băm, chẳng hạn
như MD5. Điều này có nghĩa là kẻ tấn công sẽ cần các rainbow tables khác nhau cho từng
loại băm. Thứ ba, chúng không hiệu quả đối với các bản băm có chứa salt.
2.3. Ứng dụng độc hại
Một trong những kỹ thuật được các các kẻ tấn công sử dụng để giành quyền kiểm soát Azure
Active Directory (AAD) của nạn nhân là 1 ADD Backdoor thông qua Identity Federation.
Kỹ thuật AAD backdooring là một kỹ thuật có xu hướng được sử dụng sau khi kẻ tấn công
đã có quyền truy cập vào một tài khoản với các đặc quyền quản trị viên toàn cầu. Có nhiều
cách để kẻ tấn công có thể có được đặc quyền của Quản trị viên toàn cầu trong AAD - một
trong những kỹ thuật đó là thực hiện leo thang đặc quyền trên các dịch vụ với chủ sở hữu có
đặc quyền của Quản trị viên toàn cầu.
Phương pháp để hacker có thể thực hiện cuộc tấn công này là:
Bước 1: Đặt chuỗi ImmutableID cho người dùng mà kẻ tấm công muốn mạo
danh
Để cuộc tấn công này hoạt động, người dùng kẻ tấn công đang mạo danh cần phải có bộ
ImmutableID. Trước tiên, hacker đã chạy lệnh kiểm tra để xem liệu có bất kỳ ImmuttableID
nào hiện có được đặt trong tenants hay không:
Hình 1. 12: Kiểm tra để xem liệu có bất kỳ ImmuttableID nào hiện có được đặt trong tenants
hay không
Tài khoản hacker muốn nhắm mục tiêu là tài khoản quản trị viên toàn cầu - vì vậy bằng cách
sử dụng MSOnline, đặt ImmuttableID cho tài khoản đó là 'happyegg'.
Hình 1. 13: đặt ImmuttableID cho tài khoản quản trị viên toàn cầu là 'happyegg'
Bước 2: Tạo một domain độc hại
Kẻ tấn công cần tạo một miền độc hại mà họ có thể sử dụng làm backdoor. Tiếp theo hacker
sẽ thêm miền vào tenants của mình thông qua cổng thông tin AAD. Kẻ tấn công có thể làm
điều này bằng cách nhấp vào ‘Custom domain name’ và thêm tên miền tùy chỉnh của họ vào
đó. Kẻ tấn công sẽ cần đảm bảo rằng miền độc hại đã tạo có cùng trường TXT với trường do
Microsoft phát hành.
Bằng cách sử dụng tính năng 'RunCommand' trên Máy ảo, kẻ tấn công có thể vượt qua:
Bằng cách sử dụng tính năng 'RunCommand' trên virtual machine scale set (Vmss), kẻ tấn
công có thể thực thi lệnh trên một phiên bản hoặc các phiên bản của máy ảo dưới dạng:
Ví dụ: Một kẻ tấn công đang nhắm mục tiêu đến một máy ảo trên mạng Azure nội bộ. Hắn
không thể truy cập vào Azure VNet, nhưng lại tìm thấy mật khẩu của một tài khoản trong
Azure AD. Nếu tài khoản người dùng bị xâm phạm có quyền truy cập để sửa đổi cơ sở hạ
tầng trong Azure, họ có thể bỏ qua các kiểm soát bảo mật cấp máy chủ và mạng. Kẻ tấn công
có thể chỉ cần cập nhật máy ảo để có thể truy cập hoặc trực tiếp thực thi mã trên đó. Kịch bản
này được hiển thị bên dưới:
Hình 1. 27: Kịch bản tấn công Azure VM
Kịch bản này còn phụ thuộc vào việc kẻ tấn công đánh cắp tài khoản trong AAD có đặc
quyền thực thi lệnh trên máy ảo trong cơ sở hạ tầng Azure hay không. Nếu tài khoản bị xâm
nhập không có quyền quản trị, thì mục tiêu của kẻ tấn công là leo thang đặc quyền giúp hắn
có được quyền cao hơn.
Tiếp theo, chúng ta sẽ tập trung vào chủ đề leo thang đặc quyền trong cơ sở hạ tầng Azure
với tài khoản Azure AD đã bị xâm trước nhập đó.
Azure AD không phải là một phần của Azure cũng không phải là một phần của Office 365.
Azure AD là một thực thể riêng biệt xử lý việc quản lý và xác thực người dùng, đồng thời
tích hợp chặt chẽ với các dịch vụ khác của Microsoft.
Chúng ta sẽ trình bày ngắn gọn một số phần có liên quan đến kỹ thuật leo thang đặc quyền
như:
Azure AD Roles
Vai trò Azure AD cho phép người dùng hoặc Service Principal thực hiện các hành động
không giới hạn, đối với:
Azure RBAC roles (kiểm soát truy cập dựa trên vai trò) chi phối quyền truy cập vào cơ sở hạ
tầng được triển khai trong Azure. Ví dụ: để triển khai một máy ảo, người dùng phải được chỉ
định một RBAC role bao gồm quyền để triển khai một máy ảo, chẳng hạn như chủ sở hữu
hoặc Contributer.
Trong Azure AD, người dùng có thể được thêm vào các nhóm hợp lý để giúp quản lý người
dùng và quản lý truy cập. Điều này có nghĩa là bất kỳ người dùng nào được thêm vào một
nhóm sau đó sẽ kế thừa các vai trò được chỉ định cho nhóm đó.
Hình 1. 35: Kẻ tấn công đã thành công xâm nhập vào testDynamicGroup với vai trò
Contributor
Bây giờ kẻ tấn công có quyền truy cập vào testDynamicGroup, nó chỉ định vai trò
Contributor VM thông qua tư cách thành viên dynamic group.
Kết luận:
1. Kẻ tấn công bắt đầu với một tài khoản có quyền Global Reader trong Azure AD
2. Hắn tìm thấy một Dynamic group với vai trò được chỉ định là Contributor VM và
thành viên được thêm vào nhóm tự động dựa trên chuỗi “bluefish” có trong UPN
3. Kẻ tấn công mời một tài khoản Gmail của client có chứa ‘bluefish’ trong địa chỉ mail -
cdburkardbluefish@gmail.com
4. Tài khoản khách kích hoạt trong dynamic group sau khi chấp nhận yêu cầu
tham gia và kế thừa vai trò Contributor VM trong Azure RBAC
Trong ví dụ này, cho thấy các dynamic group dựa trên UPN có thể bị lạm dụng như thế nào
khi sử dụng tài khoản khách. Tuy nhiên, có nhiều thuộc tính khác để xác định thành viên
dynamic group và các kẻ tấn công khác nhau có thể lạm dụng từng thuộc tính. Sau đây là
những con đường tấn công tiềm năng khác để sửa đổi các thuộc tính của người dùng trên các
nhóm động:
AD Connect Sync - Kẻ tấn công có thể sửa đổi các thuộc tính của người dùng trong hệ
thống on-premise và Azure AD Connect sẽ đồng bộ hóa các thuộc tính đó với đám
mây
Quyền truy cập vào các tài khoản quản trị khác trong Azure AD - Một số vai trò quản
trị Azure AD sẽ cho phép kẻ tấn công sửa đổi các thuộc tính của người dùng
khác. Điều nàyyêu cầu tài khoản quản trị bị xâm nhập từ trước
Tạo tài khoản Azure AD Automation/Custom, với các thuộc tính do người dùng xác
định
4.1. Leo thang đặc quyền trong Azure AD thông qua Service Principals
Kết luận: Kẻ tấn công có thể phát động cuộc tấn công leo thang đặc quyền trong Azure
Resources hoặc Azure Active Directory, có thể kể đến một vài cuộc tấn công đã được phát
hiện trong Azure như là: Privileged Identity Management Role, Elevated Access Toggle,
Local Resource Hijack, Principal Impersonation, Azure AD Application. Hầu hết các cuộc
tấn công này đều bắt người từ một tài khoản có đặc quyền thấp, kẻ tấn công đã lợi dụng
những lỗ hổng, những lỗi cấu hình của hệ thống để tìm cách leo thang đặc quyền và chiếm
quyền quản trị nhằm kiểm soát hệ thống phục vụ cho lợi ích của kẻ tấn công.
5. Duy trì quyền truy cập
6. Truy cập thông tin xác thực
7. Xâm nhập