Testthuthoi
VIP Members
-
26/06/2018
-
31
-
35 bài viết
Hack thiết bị cài Zalo dễ dàng chỉ bằng gửi file - Phần 1
Khởi đầu là việc ThreatSpike EDR phát hiện rằng Zalo.exe có gọi đến PowerShell
Command Line:
powershell.exe "start \"c:\users\USERNAME\documents\zalo received files\phao vni.pdf\""
Parent Processes:
c:\program files\windowsapps\vngonline.zalofordesktop_19.8.1.0_x64__z59ddpn1nx8g0\app\zalo.exe [11700]
c:\program files\windowsapps\vngonline.zalofordesktop_19.8.1.0_x64__z59ddpn1nx8g0\app\zalo.exe [14736]
c:\windows\explorer.exe [10172]
Giống như bao ứng dụng gửi tin nhắn khác, Zalo cũng cho phép người dùng gửi file tài liệu cho nhau. Nhìn qua có thể thấy PowerShell được gọi bởi Zalo.exe để mở file được gửi đến. Có lẽ ban đầu nhà phát triển sử dụng PowerShell bởi PowerShell sẽ phụ trách luôn phần chọn ứng dụng nào để mở file. Tuy nhiên, việc sử dụng dấu ngoặc kép (“) để đóng mở string chứa đường dẫn file trong PowerShell rất nguy hiểm. Khi sử dụng dấu ngoặc kép thay vì ngoặc đơn, PowerShell cho phép người dùng nhúng vào các biểu thức, ví dụ:
Trong trường hợp của Zalo, người gửi file có thể chỉnh sửa tên file thoải mái, do đó họ có thể dễ dàng nhúng câu lệnh vào tên file, và câu lệnh đó sẽ được thực thi trên máy người nhận nếu tên file không được xử lí cẩn thận.
Để xác nhận điều trên, chúng tôi đã gửi một file có tên $(calc).txt cho một người bằng Zalo (file bình thường thôi, nội dung bất kì). Nếu tên file được Zalo xử lí đúng, khi người kia mở file lên, Notepad sẽ mở file văn bản có tên $(calc).txt. Nhưng thay vì Notepad, chúng tôi lại thấy ứng dụng máy tính Calculator hiện lên trên máy nhận! Do đó chúng tôi đã có thể khẳng định đây là lỗi thực thi lệnh tùy ý Remote Code Execution trên ứng dụng Zalo Desktop (phiên bản 19.8.1.0). Như trong màn hình ProcMon (dùng để theo dõi các tiến trình) dưới đây, Zalo gọi đến PowerShell, coi tên file như một lệnh và thực thi luôn lệnh đó, mở lên Calculator.
Video demo :
Giờ thì chúng ta biết Calculator đã được thực thi trên máy người nhận sử dụng Zalo bằng cách lợi dụng tên file gửi đi. Tuy nhiên trong Windows, tên file có một vài giới hạn sau:
1. Tên file không quá 255 kí tự.
2. Các kí tự “/”, “\” “|” “<”, “>”, “:”, “*” và “?” không được dùng.
Việc bị giới hạn như này sẽ khiến việc truyền trực tiếp câu lệnh vào tên file trở nên khó khăn. Ở bài sau chúng tôi sẽ giới thiệu cách để bypass các giới hạn trên phục vụ cho việc tấn công sâu hơn.
Zalo đã rất nhanh chóng tung bản vá lỗ hổng. Người dùng được khuyến cáo nên cập nhật Zalo lên phiên bản mới nhất.
Trích dẫn tham khảo: ThreatSpike Blog