You are on page 1of 30

NOTE: phần xám là phần cho vào note trên pp hoặc bỏ.

II, Tìm hiểu về lỗ hổng trong môi trường Microsoft Azure

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. 1: Port Mapping


1.2. IP Discovery
Kẻ tấn công có thể xem địa chỉ IP trên các tài nguyên bằng cách xem 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ở.

1.3. Public Accessible Resource


Một tài nguyên trong Azure có thể truy nhập được từ public internet thông qua
Network Interface và Virtual Machine
1.4. Thu thập thông tin người dùng
Kẻ tấn công có thể lấy thông tin về người dùng thông quan Azure Active Directory.
Những thông tin đó có thể bao gồm địa chỉ email, họ tên của người dùng, thông tin
công việc, địa chỉ và vai trò được chỉ định cho người dùng. Theo mặc định, tất cả
người dùng đều có thể đọc vai trò của người dùng khác và tư cách thành viên nhóm
trong AAD.
Hình 1. 3: Thu thập thông tin người dung
1.5. Thu thập thông tin của ứng dụng
Kẻ tấn công có thể thu thập thông tin về ứng dụng trong Azure Active Directory.

Hình 1. 4: Client secrets


1.6. Thu thập thông tin về vai trò của người dùng
Kẻ tấn công có thể lấy thông tin về vai trò của người dùng trong Azure Active Directory hoặc
trong Azure Resource Manager. Có ba kiểu thu thập như:
 Thu thập thông tin về vai trò của người dùng: Kẻ tấn công có thể lấy thông tin về một
vai trò của người dùng trong Azure Active Directory

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. 8: Dữ liệu về máy ảo Window 10


1.8. Thu thập dữ liệu của nạn nhân
Kẻ tấn công có thể truy cập dữ liệu cá nhân của người dùng nếu tài khoản của họ bị xâm
phạm, bao gồm những dữ liệu như email, OneDrive, Teams, v.v.
2. Phương pháp truy cập
Kẻ tấn công cố gắng giành quyền truy cập vào Azure Resource hoặc Azure AD thông
qua việc đánh cắp tài khoản của người dùng hợp lệ, khóa bí mật/chứng chỉ của Service
Principal, sử dụng các phương thức tấn công vào mật khẩu của người dùng hoặc kẻ
tấn công sẽ dụ dỗ nạn nhân cấp quyền truy cập cho một ứng dụng độc hại (backdoor)
trong Azure AD

2.1. Kẻ tấn công đánh cắp thông tin đăng nhập


Phương pháp này sẽ tập trung vào cách mà kẻ tấn công có được thông tin đăng nhập của
người dùng trong Azure hoặc Service Principal. Dựa trên hai mô hình xác thực và cấp
phép của Azure: ASM, ARM (Azure Resource Manager) kẻ tấn công có thể lợi dụng một
số điểm yếu, sử dụng một số phương pháp, công cụ để dễ dàng lấy được thông tin đăng
nhập.
. Hacker có thể xem xét sử dụng chứng chỉ để xác thực và các địa điểm chúng có thể được
tìm thấy, chẳng hạn như tệp cấu hình, recycled certificates và iclouds. Cuối cùng, hacker
có thể kiểm tra xác thực hai yếu tố thông qua chứng chỉ, tài khoản dịch vụ, cookie bị đánh
cắp, số điện thoại bị đánh cắp và kỹ thuật xã hội.
2.1.1. Khôi phục bản rõ của mật khẩu từ Azure Virtual Machines
Kẻ tấn công hoàn toàn có thể khôi phục bản rõ của mật khẩu quản trị viên từ các máy bằng
cách lạm dụng tính năng VM Access. Chúng có thể được sử dụng lại để truy cập các dịch vụ,
máy móc và cơ sở dữ liệu khác nhau.
Bản rõ của mật khẩu thậm chí còn có giá trị hơn đối với những kẻ tấn công vì ngay cả những
thao tác nhỏ trên mật khẩu cũng có thể mở ra nhiều cánh cửa truy cập đến những thông tin bí
mật, nhạy cảm của cá nhân hoặc tổ chức.
Kể từ cuối năm 2015, những kẻ tấn công đã có thể khôi phục bản rõ của mật khẩu sau khi vi
phạm và chiếm quyền truy cập máy ảo Azure nếu VM Access được sử dụng tại bất kỳ thời
điểm nào trên máy đó.
Mật khẩu mới, do quản trị viên cung cấp thông qua Azure portal, được lưu trong phần
protectedSettings trong tệp cấu hình được chuyển cho Guest Agent. Tệp này được lưu vào
đĩa chứa mật khẩu mới dưới dạng bản rõ và được mã hóa theo chuẩn base64.
Hình 1. 9: Con đường giải mã để có được bản rõ của mật khẩu
Khi kẻ tấn công xâm phạm máy và leo thang đặc quyền thành công, mọi chứng chỉ được lưu
trữ trên máy đều có thể được truy cập. Tại thời điểm đó, tất cả những gì cần thiết là đọc dữ
liệu được mã hóa base64, tìm chứng chỉ bằng cách sử dụng dấu vân tay và dữ liệu được khôi
phục thành công.
Dưới đây là một số mã C# đơn giản để giải mã dữ liệu này bằng cách sử dụng các Microsoft
API có sẵn:

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ọ.

2.1.5. Thu thập mã token được lưu trong ARM

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.

Hình 1. 14: Tạo domain name


 Bước 3: Tạo backdoor AAD
Kẻ tấn công đã sử dụng AADInternals để tạo một backdoor AAD. Sau đó nó sẽ cung cấp một
IssuerURI mà hacker sẽ sử dụng để đăng nhập.

Hình 1. 15: Tạo backdoor AAD


 Bước 4: Đăng nhập thông qua AAD Backdoor
Sử dụng AADInternals một lần nữa, kẻ tấn công đã đăng nhập và nó sẽ tự động mở trình
duyệt và hiển thị trang 'Duy trì trạng thái đăng nhập?' . Bằng cách nhấp vào 'CÓ', kẻ tấn công
sẽ tự động được chuyển hướng đến M365 đã đăng nhập với tư cách là người dùng. Tấn công
hoàn thành!
Hình 1. 16: Đăng nhập thông qua ADD Backdoor
Kết luận: Kẻ tấn công có rất nhiều cách khác nhau để có được thông tin đăng nhập vào
Azure, bao gồm khôi phục mật khẩu từ các tài liệu chứa bản rõ, lừa đảo,  password spraying
và thậm chí đoán. Tiếp theo, hacker có thể đã xem xét sử dụng chứng chỉ để xác thực và các
địa điểm chúng có thể được tìm thấy. Kẻ tấn công có thể đánh cắp cookie, smartcard, điện
thoại, và khôi phục bản rõ của mật khẩu từ bản băm bằng các tấn công bao gồm tấn công từ
điển, tấn công brute-force, hybrid attacks và rainbow table attacks.
Cuối cùng, kẻ tấn công sẽ sử dụng các ứng dụng, phần mềm độc hại như backdoor để có
quyền truy cập và mạo danh người dùng trong Azure.

3. Thực thi tập lệnh


Kẻ tấn công cố gắng thực thi các đoạn mã độc hại trong Azure. Thực thi tập lệnh trong Azure
bao gồm các kỹ thuật chạy mã thông qua thiết bị được quản lý, máy ảo hoặc trên máy chủ
không được quản lý. Thực thi là khi mã độc được chạy để giành quyền truy cập vào máy
chủ/thiết bị.
3.1. Virtual Machine Scripting
Kẻ tấn công có thể lạm dụng quyền truy cập vào các máy ảo bằng cách thực thi một tập lệnh
thông qua các phương pháp khác nhau để có được quyền truy cập vào máy ảo.
3.1.1. RunCommand

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:

 Windows: lệnh PowerShell đến máy ảo dưới dạng HỆ THỐNG.


 Linux: Các lệnh shell đến VM dưới dạng root.
Hình 1. 17: Run Command Script
3.1.2. CustomScriptExtension
Bằng cách sử dụng 'CustomScriptExtension' trên Máy ảo, kẻ tấn công có thể chuyển các lệnh
PowerShell đến máy ảo dưới dạng HỆ THỐNG.

Hình 1. 18: Configure Custom Script Extension


3.1.3. Desired State Configuration
Bằng cách sử dụng ‘Desired State Configuration extension' trên Máy ảo, kẻ tấn công có thể
chuyển các lệnh PowerShell đến máy ảo dưới dạng HỆ THỐNG.
Hình 1. 19: Configure PowerShell Desired State Configuration extension
3.1.4. Compute Gallery Application
Bằng cách sử dụng Compute Gallery Applications, kẻ tấn công có thể chuyển các lệnh MS-
DOS hoặc PowerShell đến VM dưới dạng HỆ THỐNG.

Hình 1. 20: Azure Compute Gallery


3.1.5. AKS Command Invoke
Bằng cách sử dụng 'command invoke’ lên trên cụm Azure Kubernetes Service (AKS), kẻ tấn
công có thể chuyển các lệnh đến cụm VM dưới dạng HỆ THỐNG
Hình 1. 21: AKS Command Invoke
3.1.6. Vmss Run Command

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:

 Windows: lệnh PowerShell ‘Invoke-AzVmssVMRunCommand’ đến máy ảo dưới


dạng HỆ THỐNG.
 Linux: Các lệnh shell đến VM dưới dạng root.
3.1.7. Serial Console
Bằng cách sử dụng tính năng Serial Console trên Máy ảo Azure, kẻ tấn công có thể dễ dàng
vượt qua các lệnh tùy ý.

Hình 1. 22: Serial console


3.2. Serverless Scripting
Kẻ tấn công có thể lạm dụng quyền truy cập vào các tài nguyên phi máy chủ có khả năng
thực thi các tập lệnh PowerShell hoặc Python trên tài nguyên Azure.
3.2.1. Automation Account Hybrid Worker Group
Ngoài khả năng tự động hóa các tác vụ trên đám mây, Azure Automation còn có khả
năng thực hiện các tác vụ trên mạng công ty
Hybrid worker có nghĩa là để gửi các lệnh quản lý đến các hệ thống của công ty.  Các
hệ thống Hybrid Worker thường trực tuyến và có quyền truy cập vào các tài khoản và hệ
thống trên mạng công ty.
Sau khi được cài đặt, Hybrid Worker hoạt động bằng cách chạy máy chủ Dịch vụ
Quản lý Trung tâm Hệ thống, có tên là MonitoringHost.exe, sẽ thăm dò một máy chủ azure-
automation.net qua HTTPS để tìm kiếm worker.  Khi nó tìm thấy một worker, nó tạo ra một
phiên bản của Orchestrator.Sandbox.exe, sau đó chạy tập lệnh runbook. Theo mặc định, tất
cả các quy trình này chạy dưới dạng tài khoản NT AUTHORITY \ SYSTEM, có nghĩa là
runbooks có quyền truy cập quản trị vào hệ thống hoạt động như một Hybrid Worker, nhưng
chúng không tự động có quyền truy cập vào các hệ thống khác trên domain. Đây là nơi mà
thông tin xác thực được lưu trữ trong Azure Automation để sử dụng trong các runbooks; nếu
runbooks cần truy cập một hệ thống khác trên domain của công ty — để sao chép tệp từ
mạng chia sẻ chẳng hạn — nó cần sử dụng tài khoản có các đặc quyền đó.
Chúng có thể sử dụng các lệnh PowerShell cho quá trình khai thác lỗ hổng để khám
phá mạng, xoay trục sang các hệ thống khác, thu thập thông tin và hơn thế nữa.

Hình 1. 23: Runbook execution on a Hybrid Worker


3.2.2. Automation Account RunAs Account và Managed Identity Account
Bằng cách sử dụng Automation Account, kẻ tấn công có thể thực hiện các lệnh trên Azure
VM thông qua RunCommand nếu service principal đó có vai trò và đặc quyền để thực thi
lệnh.

Hình 1. 24: Runbooks console


3.2.3. Function Application
Bằng cách sử dụng Function Application, kẻ tấn công có thể thực thi các hành động như là
Update Web Apps Functions, Update website, … trên một tài nguyên nhất định.

Hình 1. 25: Function Application console


3.3. Managed Device Scripting
Kẻ tấn công có thể lạm dụng quyền truy cập vào bất kỳ thiết bị được quản lý nào trong
AzureAD bằng cách thực thi các tập lệnh PowerShell hoặc Python trên chúng.
Hình 1. 26: Thực thi tập lệnh PowerShell trên thiết bị
4. Leo thang đặc quyền
4.1. Lạm dụng các dynamic group trong Azure AD để leo thang đặc quyền
Các nhà nghiên cứu đã phát hiện ra một kỹ thuật mới để leo thang đặc quyền trong môi
trường Azure thông qua việc lạm dụng các dynamic group trong Azure Active Directory.

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 đó. 

4.1.1. Một số thông tin cơ bản về Azure Active Directory

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:

 Quản lý nhóm bảo mật


 Quản lý người dùng
 Truy cập cơ sở hạ tầng Azure
 Tạo và quản lý các ứng dụng Azure AD (Service Principal)

Hình 1. 28: Một số roles trong Azure AD


 RBAC Roles của Azure

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.

 Nhóm bảo mật Azure AD

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 đó.

4.1.2. Kỹ thuật - lạm dụng các dynamic group


 Dynamic group
Dynamic group trong Azure AD cho phép quản trị viên tự động chỉ định tư cách thành viên
nhóm cho người dùng dựa trên các thuộc tính của người dùng đó. Ví dụ: nếu một công ty có
hai văn phòng ở Oslo và London, họ có thể tạo các nhóm bảo mật cho từng văn phòng của
họ. Họ có thể sử dụng các dynamic group dựa trên thuộc tính “thành phố” của người dùng
cho mục đích này, để bất cứ khi nào người dùng mới được thêm vào Azure AD, họ sẽ tự
động được thêm vào một trong hai nhóm này.

Hình 1. 29: Dynamic membership rules


 Một kịch bản cho cuộc tấn công leo thang đặc quyền
Một tổ chức tạo một dynamic group có tên là VM Contributor, có Quyền truy cập VM
Contributor trong phạm vi Subcription:

Hình 1. 30: Dynamic group: VM Contributor


Tổ chức này thuê công ty “Bluefish” để quản lý VM và Bluefish sử dụng quy ước đặt tên
sau: username@bluefish.no. Để tự động hóa quy trình Bluefish đã thểm một quy tắc để thêm
tự động bất kỳ người dùng nào có “bluefish” trong userPrincipalName (UPN) vào nhóm VM
Contributor. Có vẻ hợp lý và vô hại, vì người dùng không thể sửa đổi UPN của họ mà không
có quyền truy cập thích hợp, và tổ chức đã khóa những quyền này.
Hình 1. 31: Thêm rules cho Dynamic groups
Gỉa sử bằng các kĩ thuật tấn công đã được liệt kê trước đó, kẻ tấn công đã giành được quyền
truy cập vào người dùng có đặc quyền thấp trong Azure AD, người này không có nhóm hoặc
vai trò Azure RBAC nào. Người dùng bị xâm phạm có vai trò “Global Reader”, vì vậy kẻ tấn
công có thể đọc các cấu hình trong thư mục, nhưng không thể thay đổi cài đặt và do đó
không thể sử dụng các phương pháp truyền thống để thay đổi quyền truy cập cho người dùng
của chính kẻ tấn công hoặc cho người dùng khác. Kẻ tấn công tìm thấy các rules trong
Dynamic group và muốn tìm cách sửa đổi thành "bluefish" trong thuộc tính UPN của người
dùng:
Hình 1. 32: Tài khoản của người dùng đã bị xâm nhập
Vì người dùng có vai trò Người đọc toàn cầu nên không thể chỉnh sửa bất kỳ cấu hình nào,
kẻ tấn công cũng không thể chỉnh sửa UPN và không thể tiến hành cuộc tấn công
 Lạm dụng tài khoản client
Theo mặc định, người dùng trong Azure AD có thể mời người dùng khách vào thư mục. Vì
UPN của người dùng khách vẫn dựa trên địa chỉ email, nên kẻ tấn công có thể chỉ cần tạo
một địa chỉ email mới từ bất kỳ nhà cung cấp dịch vụ email nào, chẳng hạn như Gmail, có
chứa “bluefish” trong địa chỉ. Ví dụ: cdburkardbluefish@gmail.com
Nếu kẻ tấn công mời email này đến với azure tenant:
Hình 1. 33: Kẻ tấn công mời tài khoản email có chứa UPN hợp lệ tham gia
sau khi chấp nhận lời mời, kẻ tấn công sẽ trở thành người dùng trong thư mục cục bộ:
Hình 1. 34: Kẻ tấn công đã trở thành người dùng hợp lệ
Bây giờ ta có thể vào portal và kiểm tra phân quyền trong nhóm của mình:

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

You might also like