|
|
Bạn sasser01052004 thỉnh thoảng chém tí cho nguy hiểm ấy mà , chiro8x thông cảm.
|
|
|
Khi làm nghiên cứu thường bạn sẽ cần tập trung vào một khía cạnh rất hẹp của vấn đề. Mặc dù để giải quyết khía cạnh đó bạn sẽ cần sử dụng nhiều kiến thức liên quan, nhưng kiến thức nào liên quan thì lại phụ thuộc vào hướng nghiên cứu, thế nên mình nghĩ bạn cần nói chuyện với người hướng dẫn.
|
|
|
Mình tiếp tục cập nhật chương trình, hiện tại đã có:
Module hoá lại cấu trúc
Hỗ trợ plugin cho phần load pattern nhận dạng (nếu có thêm mẫu mới thì chương trình tự động load).
Hỗ trợ multi-thread (tìm kiếm đồng thời nhiều pattern), cái này chỉ khi nào máy có nhiều core thì may ra có ý nghĩa.
Có bạn nào cùng làm với mình thì tốt quá, hiện nay mình không có nhiều thời gian dành cho cái này (mỗi ngày chỉ cùng lắm là 1-2 tiếng)
Bạn nào ngại không muốn compile trên máy thì có thể download cái static mình vừa build (hơi to, gần 20mb ) ở đây: http://www.sendspace.com/file/mwef65
|
|
|
Mấy ngày cuối tuần vừa rồi em có viết một chương trình detect malware, đây chưa phải là một antivirus program (còn xa mới được như vậy).
Chương trình này viết bằng Haskell, chạy trên Linux, và hiện tại chỉ detect được đúng một malware (là Linux keylogger). Anh em nào quan tâm có thể xem ở đây: https://github.com/monads/cate
|
|
|
@n2tforever, Quack: đọc bài viết của 2 em thì anh đoán là 2 em đang học khoa KTMT DHBK HN. Anh trước cũng học CNTT DHBK nhưng đã ra trường rồi (may quá ). Đọc bài viết của các em thì nghĩ ngay đến hình ảnh của bản thân hồi trước, cái gì cũng hăm hở tìm hiểu, chọc ngoáy đủ các kiểu. Anh có một số lời khuyên, hi vọng là giúp ích được bọn em đôi chút:
1. Các đồ án của trường, muốn qua được thì mình phải làm, nên nói gì thì nói mình cũng phải chiến tuốt. Vì mình rất khó phản đối GV là đề bài này vô đạo đức quá, không làm. Như cái đề tài này, mặc dù nó nhạy cảm thật, nếu làm xong mà để phá phách thì đúng là không hay, nhưng nếu mình xử lý cái đề tài này với tinh thần ngược lại (như ý kiến của anh TQN) thì mình vừa có kiến thức, lại không vi phạm đạo đức gì cả.
2. Trong tranh luận, anh cũng như bọn em, rất khó kiềm chế bản thân. Nhưng một khi việc tranh luận lại sa đà vào những ý kiến công kích cá nhân, so sánh hơn kém, thì mình nên dừng lại, vì mục đích của mình không phải là cái này.
3. Khi ra trường, nhiều khi anh nghĩ lại có những đồ án mà thày cho mình làm đúng là hạn chế thật, làm xong chẳng thu được gì sâu sắc. Nhưng cũng phải chấp nhận thôi, vì DHBK HN không phải như MIT, Berkeley, Stanford, etc để cái gì cũng có thày thật giỏi.
4. Anh học ở DHBK, mặc dù đến những năm cuối thấy mình như vào nhầm trường vì anh thích lý thuyết hơn, vả lại học nhiều môn quá nên thấy cái gì cũng hời hợt nên toàn ở nhà ngồi tự đọc sách và lập trình làm đồ án. Nhưng cũng không có gì tiếc nhưng năm tháng đấy cả, vì xung quanh còn bạn bè cũng có những người rất giỏi.
5. Việc bọn em say mê kỹ thuật là rất tốt, nhưng cũng cần tỉnh táo một chút (cái này anh hồi đấy anh cũng ngu, thày nhiều khi chém mà mình tin là thật ), vì có những cái sẽ dẫn mình đến ngõ cụt.
|
|
|
Anh conmale, câu trả lời của anh đã làm em thoả mãn. Thực sự em rất cảm ơn anh vì đã kiên trì tranh luận với em như thế này, hoàn toàn muốn đi tìm bản chất của vấn đề mà không phải là nhục mạ người khác.
|
|
|
Xin lỗi bạn fxx vì đã chen ngang, mình tiếp tục tranh luận với anh conmale một tí.
Anh conmale, có lẽ có nhiều hơn một cách hiểu, "thế nào là tri thức" và em và anh đang tranh luận theo 2 cách. Em hiểu tri thức như thế này ( rất trần trụi và hoàn toàn cách biệt với con người): chẳng hạn giữa năng lượng và khối lượng có quan hệ E=mc2, bản chất năng lượng của mặt trời là phản ứng tổng hợp hạt nhân từ Hidro thành Heli, nguồn gốc của self-modyfing code là từ kiến trúc von Neumann.
Vậy theo cách hiểu này, giá trị đạo đức nằm ở đâu, ví dụ đẳng thức E=mc2 nó là xấu xa hay tốt đẹp ?, tất nhiên là không thể trả lời được. Nó xấu xa, khi nó dụng để chế tạo bomb H, để giết người, nhưng nó lại hoàn toàn tốt đẹp khi nó được sử dụng trong nhà máy điện hạt nhân, tạo ra năng lượng để con người sử dụng.
Câu trả lời (2) của anh, em hoàn toàn đồng ý. Nhưng câu (1), ý anh muốn nói ở đây là gì em không hiểu ?. Em đoán, theo ý của anh thì đạo đức tức là mọi người sống với nhau tốt đẹp, không ai lừa lọc ai, không phân chia quốc gia, thế giới đại đồng. Đi hơi xa một chút, em cũng đoán là theo anh thì mọi thứ bắt nguồn từ xung đột sẽ là đều dẫn tới những điều dung hại, vậy em xin đặt một câu hỏi "Khoa học mật mã phát triển như hiện tại là vì lý do gì ?".
|
|
|
Bạn chiro8x và anh conmale, đọc tâm sự của bạn và trả lời của anh conmale, mình thực sự thấy rất thích. Để nói rằng cái gì đúng, cái gì sai, như bạn chiro8x cũng nói, còn tuỳ thuộc vào hoàn cảnh sử dụng, bản thân tri thức độc lập với các giá trị đạo đức.
Việc viết malware để đi rình mò, theo dõi, khủng bố người khác là việc làm đáng lên án. Nhưng việc viết malware để tìm hiểu cơ chế hoạt động, để thoả mãn sư tò mò cá nhân lại là việc làm đáng trân trọng. Như malware Stuxnet, việc viết ra và phát tán nó, luôn luôn có các cách giải thích khác nhau (1) về phía tác giả của nó: để ngăn chặn Iran làm giàu Uranninum, (2) về phía nạn nhân của nó: phá hoại các máy ly tâm của Iran. Hoặc bàn xa hơn nữa, việc chế tạo và thả bom nguyên tử xuống Nhật Bản có 2 cách giải thích khác nhau (1) giảm thương vong cho lính Mỹ khi tiến vào Nhật Bản, (2) giết chết rất nhiều người dân Nhật Bản.
Em không có ý định biện hộ hay phản đối việc có projet yêu cầu làm Trojan, vì sẽ luôn có lớn hơn 1 cách giải thích cho việc này, tuỳ theo hoàn cảnh. Nếu thay đổi cái đề tài này, theo như quan điểm của anh TQN, có thể sẽ là hợp lý hơn, đặt lại mục đích nhưng kết quả tri thức thu lượm được thậm chí còn tốt hơn.
Như gần đây xuất hiện malware Duqu, người làm cùng phòng em có nói với em (mới trưa hôm qua) rằng anh ta tìm thấy có nhiều điểm tương đồng trong Duqu và một thành phần của Windows, nên về mặt cá nhân anh ta cho rằng chính phủ của một nước nào đó là tác giả của malware này. Nếu anh ta đúng, thì rõ ràng việc tạo ra và phát tán malware cũng có nhiều cách giải thích.
|
|
|
Cám ơn góp ý của bạn chiro8x, tuần rồi mình cũng lọ mọ get the hands dirty với malware.
|
|
|
Cám ơn bạn, thực ra cách bạn hiểu không khác bao nhiêu so với bản chất vấn đề. Việc mô hình toán học chỉ nhằm mục đích có một lập luận chặt chẽ và chính xác, ngoài ra không có gì ghê gớm.
Thực ra thứ tự các tác động không quan trọng lắm, vì malware có thể thay đổi thứ tự các tác động, miễn sao nó đạt được mục đích. Vì vậy mình cố gắng nhóm các tác động có liên quan lại, cái này mình viết trong bài là sequential composition. Ngoài ra có những tác động không nhóm được, nó giao hoán, tức là nó xuất hiện theo kiều A, B hoặc B, A thì đều đạt được mục đính, trường hợp này mình mô tả nó bằng tích tensor, tức là parallel composition.
Từ đây mình xây dựng được một cấu trúc toán học trên tập các tác động, với tính chất của 2 toán tử sequential composition và parallel composition.
Việc qui định khi nào E1 + E2 = E12 lại không đơn giản (vì có nhiều cách định nghĩa, mỗi cách nó sẽ đúng trong một ngữ cảnh khác nhau), do đó mình không qui định tường minh ở đây. Thay vào đó thì minh đi định nghĩa cái gọi là morphism formula, và định nghĩa khi nào thì 2 morphism formula là tương đương, kiểu như là a(b+c) = ab + ac.
Bài này mình vẫn đang tiếp tục sửa, các kết quả mình thu được chưa đủ mạnh (những cái mình đã thu được chỉ là một kết quả tổng quát hơn kết quả của người đi trước mình, nhưng người đó sử dụng một cách tiếp cận khác).
|
|
|
Bạn bolzano giỏi bới móc quá, mình lúc viết phản đối ý kiến của anh conmale ở trên chỉ có ý vui, mình đi lại trong phòng trong khi suy nghĩ vấn đề của mình, việc cái tập thesis kia nó đập vào mắt chỉ là sự kiện hoàn toàn tình cờ và mình cũng muốn đùa anh conmale một chút.
Cách nói chuyện của bạn có vẻ nhằm mục đích hạ nhục người khác, quyết để giành thắng thua chứ không phải để tìm chân lý, nên mình xin không bàn luận với bạn.
|
|
|
Em đi loanh quanh trong phòng, lục đống tài liệu của người trước để lại tìm thấy cái luận văn này "Automatic Generation Of Control Flow Hijacking Exploits For Software Vulnerabilities"
Đây là luận văn Master của University of Oxford, mục đích là gì thì đọc ngay phần motivation cũng có nói. Lần này chắc anh conmale không thể phản đối được .
|
|
|
Vâng, em đã hiểu ý của anh và đồng ý ở phần lớn các ý đó. Cái mà em muốn bảo vệ chỉ là sở thích tìm hiểu cá nhân thì không bao giờ nên cấm đoán, chỉ khi nào sử dụng cho mục đích xấu thì mới cần lên án.
|
|
|
Bạn nt2forever, đây là một sample về chương trình đọc và gửi video qua mạng (viết bằng C++, dùng opencv và boost). Hồi đấy mình viết để làm bài tập môn QoS, không phải để ăn trộm ăn cắp gì. Chương trình này đươc compile trên Linux với cmake, không biết là trên Windows có phải sửa gì không.
http://www.sendspace.com/file/ki6bst
|
|
|
Thưa anh conmale, quả thật là em chưa hiểu ý anh. Phần lớn tri thức đều có nhiều cách sử dụng khác nhau, khi Einstein đưa ra công thức E= mc2 thì hoàn toàn không có nghĩa là ông khuyến khích cách chế tạo bom nguyên tử. Cũng giống như vậy, khi Cohen chỉ ra sự tồn tại của các chương trình có khả năng tự sao chép bản thân, không có nghĩa là ông khuyến khích viết các chương trình lây lan với mục đích phá phách.
Vấn đề ở đây, dù có muốn hay không, thì việc tồn tại các chương trình phá hoại là một thực tế không tránh được, vậy tìm hiểu cách thức chúng hoạt động (bằng cách viết thử một ví dụ) thì có gì là sai. Cái sai là ở chỗ sử dụng tri thức thu được để phục vụ mục đích xấu.
Trăm lời nói không bằng một ví dụ, em gửi anh bài tập về Cryptography của Stanford trong đó Dan Boneh đề nghỉ thử cài đặt một MITM attack với SSL http://crypto.stanford.edu/~dabo/cs255/hw_and_proj/cs255-p2-handout.pdf
|
|
|
Bạn không cho dẫn chứng nên không rõ là ý bạn muốn nói gì. Thực ra có tồn tại các trao đổi như vậy, nhưng các trao đổi này ở dạng sơ khai, chẳng hạn như việc trao đổi các PList và RList của Waledac để thay đổi toplogy của botnet. Ý của mình là hơi khác, đó là có khi nào bots hoạt động theo kiểu phân tán thực sự, nó gồm nhiều phần khác nhau (không phải là các bản sao của một malware) nằm trên các machine khác nhau, và khi ráp lại thì nó mới thể hiện các malicious actions.
Về lý thuyết thì có tồn tại, vì đây chỉ là một dạng cụ thể của K-ary malware.
|
|
|
Em mạn phép đưa một vấn đề nghiên cứu của bản thân để mọi người bàn luận, mặc dù vấn đề này có thể hoàn toàn lạc lõng ở đây, tuy nhiên forum có nhiều người giỏi về kỹ thuật nên em hi vọng có thể có một chút trao đổi.
Hiện nay các phương pháp phát hiện malware có thể phân loại (theo một nghĩa nào đó) thành: static-based và dynamic-based. Static-based có nghĩa là dò tìm một số pattern trên binary code, còn dynamic-based có nghĩa là dò tìm một số behaviors trên running process.
Vì bài toán phát hiện malware, trong trường hợp tổng quát sẽ bị giới hạn bởi định lý Rice, là undecidable: có nghĩa là ta không thể viết được một chương trình sao cho nó có khả năng kiểm tra xem một chương trình bất kỳ có tính chất cho trước hay không (điều này nghe có vẻ ghê nhưng thực ra ý tưởng chứng minh rất đơn giản). Tuy nhiên bài toán kiểm tra, trong một khoảng thời gian hữu hạn, một chương trình bất kỳ có thực hiện điều gì đó hay không, lại là decidable, đây là một lý do mà chúng ta có rất nhiều chương trình antivirus.
Em đang viết một bài báo, hiện đang ở dạng draft (nếu anh em nào muốn xem thì có thể lấy ở đây http://www.sendspace.com/file/hedx06). Ý tưởng của bài báo là hoàn toàn đơn giản, em đi từ các tương tác giữa chương trình và OS qua các syscalls, qua việc phân tích các tác động của syscalls trên OS em rút ra được một số cấu trúc toán học trên đó (lattice and monoidal category), đây là một ý tưởng không hề mới trong representation theory, và từ các cấu trúc đó em xây dựng các partial order trên semantics của process.
Partial order có thể hiểu như thế này, nếu M là semantics của malware X, P là semantics của chương trình Y, nếu có quan hệ M < P thì nói rằng Y thuộc vào (bị nhiễm bởi) lớp malware X. Ở đây semantics là một khái niệm chung chỉ một mathematical meaning cho chương trình.
Hiển nhiên là phương pháp phát hiện này có cách để vượt qua (điều này hoàn toàn có thể chứng minh qua lý thuyết mà không cần phải có proof-of-concept), nhưng dù sao thì nó cũng có thể hoạt động cho một lớp các malware.Và kỹ thuật vượt qua này có thể áp dụng chống lại tất cả các phương pháp system call monitoring hiện có, em xin bàn đến vấn đề này vào lúc khác.
Điểm mạnh của phương pháp này (theo em) là nó có thể vượt qua phần lớn các kỹ thuật obfuscating hiện tại (các kỹ thuật này thì rất nhiều, tuy nhiên cũng cần phải nói tới một giới hạn lý thuyết là không bao giờ ta có thể obfuscate hoàn toàn mọi chương trình).
Tuy vậy điểm yếu của phương pháp này, dẫn tới việc nó chưa thể mở rộng cho trường hợp của botnet (phương pháp của em có thể sử dụng cho các multi-process malware, miễn là các process này không sử dụng các covert channel trong việc trao đổi thông tin), nằm ở chỗ nếu nó không tìm được một người quan sát (ở đây có thể hiểu người quan sát là hệ điều hành) cho các trao đổi qua covert channel thì nó trở nên hoàn toàn vô dụng.
Một ví dụ cho sự trao đổi thông tin giữa 2 process A và B không thông qua OS là như sau: A ghi dữ liệu lên file X, sau đó B đọc file X để biết rằng cần làm gì, việc trao đổi này không thông qua inter-process communication syscalls. Và có thể thấy là các covert channel kiểu này có rất nhiều dạng.
Vấn đề kỹ thuật mà em vẫn chưa dám chắc, là các dạng botnets hiện tại, có khi nào (trong thực tế) mà 2 bots trao đổi với nhau để thực hiện một điều gì đó không. Và một giới hạn không thể vượt qua là, trong trường hợp các bots sử dụng cryptographic communication thì việc quan sát ở giữa là hoàn toàn vô nghĩa.
Mong có sự trao đổi của anh em, có điều gì thì mong anh em chém nhẹ tay .
|
|
|
|
|
|
|