Trao đổi với tôi

http://www.buidao.com

12/7/09

[Hacking] Learn to hack P2

Chúng ta tiếp tục phần 2 trong series này nha các bạn :)

Ở phần trước chúng ta đã nói đến IP datagram , giờ cùng nhau phân tích sâu hơn một chút về nó

Thông qua hình vẽ , chúng ta sẽ có những điểm như sau :

Version :4 bits

Header length: 4bits

Type of services :8 bits

priority (3 bits), QOS(4 bits), unused bit

Total length : tổng độ dài cả Header và dữ liệu (16 bits )

Identification :16 bits giúp cho xây dựng lại packet khi xảy ra phân mảnh

Flags 3 bits dùng để cho biết nó có phân mảnh hay không

Fragments offset 13 bits dùng để xác định nó thuộc mảnh nào trong khi phân mảnh .

Time to live 8 bits qua mỗi hop trên mạng , time to live giảm đi 1 , khi = 0 nó sẽ gửi lại nơi gửi đi

Protocol 8 bits tiếp theo là giao thức (TCP, UDP, ICMP….)

Header checksum 16 bits dùng để phát hiện lỗi .

32 bits địa chỉ nguồn .

32 bits địa chỉ đích .

Và cuối cùng là phần dữ liệu mà packet đó mang theo .

Chúng ta xem xét đến tình bao đóng của IP :

Hình vẽ này cho các bạn thấy tất cả rồi :)

Lúc này trên phần IP datagram chúng ta có nói tới phân mảnh , chúng ta sẽ tìm hiểu nó ngay bây giờ .

Bạn muốn chuyển nhà tới New world , nếu là mình , chắc cũng chả có gì ngoài cái computer cũ kĩ , và mấy bộ đồ :) cho nên mình sẽ đi một lần thôi , nhưng đối với bạn , có lẽ bạn có cả một gia tài mà một lần đi không thể nào mang theo hết được ,bạn sẽ phải đi nhiều lần thôi :) , IP cũng vậy đôi khi nó phải cắt ra làm nhiều mảnh nhỏ để vận chuyển tới đích , lúc nãy vùng Identification sẽ nói cho chúng ta biết là có được phân mảnh ra ko .

Nhiệm vụ phân mảnh sẽ làở nơi gửi và nơi nhận là reassembling để khôi phục lại dữ liệu .

Một lưu ý nhỏ trong phần phân mảnh này đó là Ping of Death :

Thông thường một Ping chỉ có 84 bytes tính cả IP header , khi gửi một lệnh Ping có độ dài lớn hơn sẽ khiến cho mục tiêu bị tê liệt và dựa vào phân mảnh chúng ta có thể làm điều này

Các bạn xem thêm ở đây :Ping of death
Bây giờ chúng ta sẽ quan tâm đến một phần thú vị :ARP và RARP .
ARP : Address resolution protocol là một phương thức ở Data link layer dùng để chuển địa chỉ luận lí sang địa chỉ vật lí để kết nối các PC trong cùng một Lan hoặc P2P .
Các bạn xem thêm ở đây :ARP
Lợi dùng giao thức này , một cuộc tấn công Man in the middle được thực hiện

Đây là một hình ảnh đơn giản về MITM, trong thực tế chúng ta gặp nhiều trường hợp phức tạp hơn mà mình đã giới thiệu cho các bạn .

Cùng nhau thực hiện điều này nha các bạn :)
int fd = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);

Khởi tạo một raw socket .
struct ipheader {
unsigned char ip_hl:4, ip_v:4; /* this means that each member is 4 bits */
unsigned char ip_tos;
unsigned short int ip_len;
unsigned short int ip_id;
unsigned short int ip_off;
unsigned char ip_ttl;
unsigned char ip_p;
unsigned short int ip_sum;
unsigned int ip_src;
unsigned int ip_dst;
}; /* total ip header length: 20 bytes (=160 bits) */


Cấu trúc của IP header
struct tcpheader {
unsigned short int th_sport;
unsigned short int th_dport;
unsigned int th_seq;
unsigned int th_ack;
unsigned char th_x2:4, th_off:4;
unsigned char th_flags;
unsigned short int th_win;
unsigned short int th_sum;
unsigned short int th_urp;
}; /* total tcp header length: 20 bytes (=160 bits) */


TCP header .
Dựa vào các cấu trúc trên chúng ta sẽ viết một chương trình dùng để Spoof IP , trong đó sẽ dùng địa chỉ IP giả mạo . Nào cùng nano ipspoof.c lên và code nào các bạn , hi vọng sẽ có vài program trên blog này vào vài ngày tới ^^
Hì 2 h sáng rồi , mình cũng phải đi ngủ đây , chúc mọi người một ngày mới vui vẻ và thành công , hẹn gặp lại trong P3 vào 12h trưa mai . Good night all .

Link: http://bkitns.wordpress.com/2008/10/24/learn-to-hack-p2/