Saturday, March 24, 2007

VNSECON '07

Cuối cùng thì chúng ta cũng sẽ có một hội thảo bảo mật nghiêm túc và chất lượng:
VNSECON '07 aims to be a very different security conference from the rest of the security conferences in Vietnam in the last few years, which used to come with full of products, vendors advertisements and/or full of boring and less technical talks. We try to organize a conference that gathers the top security experts, from the mainstream network security arena as well as the underground community, to share their research, discovery and experience.
Technical Committee cũng toàn là "thứ dữ":
  1. HD Moore
    Director of Security Research at BreakingPoint Systems, USA
    Founder of Metasploit Project
  2. Nguyen Anh Quynh
    PhD student of Keio University, Japan
    Member of VNSECURITY
  3. Red Dragon
    Founder of VNSECURITY
    Member of The Hacker's Choice (THC) and Hacker Emergency Response Team (HERT)
  4. SeekZero - Le Dinh Long
    Co-founder of VNSECURITY
  5. SK Chong
    Co-founder of SCAN Associates
  6. Skyper - Ralf Kaiser
    Editor in Chief of Phrack Magazine
  7. van Hauser
    Founder of The Hacker's Choice (THC)

Friday, March 23, 2007

Kill Bill!!!

(hehe u+u tie^n cho ngu+o+`i post ba`i nhe')

co^ng ti TNHH Mo^.t Tha`nh Vie^n Burn DDi~a Le^` DDu+o+`ng





o+? dda^y co' "trai me'm dde.p" mie^~n phi'"



wifi cu?a Microsoft le. thie^.t




demo ta.i cho^~ luo^n, muo^'n so+`, na('n, cho.t gi` tu`y thi'ch!




"gia` la`ng"




dda.i gia cu?a chie^'n di.ch




nhu~ng chie^'n si~ xung ki'ch

cuo^'i gio+` co`n ho^'t ddu+o+.c ma^'y em BKIT dda`n em



ye^u ba(`ng ca? tra'i tim!



Coi toa`n bo^. ta^.p a?nh o+? dda^y!

Thursday, March 22, 2007

Seminar giới thiệu nhóm nghiên cứu Kernel ĐH Bách Khoa

Seminar về Linux Kernel

Thực hiện: Nhóm nghiên cứu Hệ điều hành (OS Group) phối hợp với CLB Tin học ĐH Bách Khoa TP Hồ Chí Minh tổ chức.

Mục tiêu:
  • Giới thiệu OS Group cùng với công việc nghiên cứu để các bạn SV cảm thấy phù hợp và yêu thích có thể tham gia.
  • Giới thiệu kiến trúc và hiện thực Linux kernel do các thành viên trong nhóm trình bày. Ở phần này các bạn SV sẽ được hiểu thêm trên thực tế, những kiến thức mình đã học trong môn Hệ điều hành được hiện thực trên Linux như thế nào .
  • Trao đổi, thảo luận về nghiên cứu mã nguồn mở nói chung và Linux nói riêng với mục đích mang mã nguồn mở đến gần hơn nữa với các bạn SV.
Nội dung: (udpated)
1. Giới thiệu OS Group và việc nghiên cứu Linux kernel - Ts. Thoại Nam
2. Giới thiệu Linux kernel và quá trình init hệ thống - Trần Quốc Vũ
3. Giới thiệu Filesystem trong Linux - Trần Bảo Hoàng
4. Giới thiệu Process và IPC trong Linux - Hoàng Hồng Nam
5. Giới thiệu Security và Cryptography trong Linux - Đào Mạnh Hiếu
6. Giới thiệu Networking trong Linux - Lê Đình Đông Thao

7. Tự xây dựng một distro Linux trong 10' - Dương Ngọc Thái
Thời gian: 08g15 - 10h30 Thứ 7 ngày 24/3/2007
Địa điểm: PHÒNG 402 B4

Do thời gian giới hạn nên seminar sẽ được tổ chức thành nhiều buổi. Nội dung trình bày vẫn theo thứ tự như trên. Ngày thứ Bảy 24/3 tuần này sẽ có các nội dung:

1. Giới thiệu OS Group và việc nghiên cứu Linux kernel - Ts. Thoại Nam

2. Giới thiệu Linux kernel và quá trình init hệ thống - Trần Quốc Vũ

3. Giới thiệu Filesystem trong Linux - Trần Bảo Hoàng

Seminar này được tổ chức với tinh thần Open nên ai quan tâm đều có thể tham dự.

Đã phát hết 500 đĩa và tài liệu

Một vài hình ảnh buổi sáng, buổi chiều nhiều hình hơn, sẽ được upload sau cùng với tường thuật chi tiết. Click vào để xem ảnh lớn hơn hoặc vào http://www.flickr.com/photos/28146622@N00/ cũng được:
Bác maikhai "già làng" của VnOSS và các chiến sĩ tình nguyện!!!

Sếp mặc áo trắng chính là nhà tài trợ chính đó, cho sếp đó một tràng pháo tay đi bà con ơi!!!

Wednesday, March 21, 2007

Phát đĩa Linux miễn phí nhân ngày hội Windows Vista

Ngày mai 22/03/2007, Microsoft sẽ tổ chức một cái gọi là ngày hội Windows Vista, ở CLB Nguyễn Du, đường Nguyễn Du, Q.1, Tp.HCM. Nhân dịp này, chúng tôi sẽ tổ chức phát đĩa Linux miễn phí ngay trước cổng CLB này.

Thời gian: 8h30 ngày 22/03/2007

Địa điểm: CLB Nguyễn Du Q.1 Tp.HCM (rạp chiếu film Galaxy)

Bạn yêu thích Linux và muốn tham gia cùng chúng tôi? Hãy liên lạc ngay với thaidn (YID: thaidn). Mọi sự đóng góp, từ tài chính đến tinh thần, đều được hoan nghênh!!!

Chúng tôi sẽ liên tục cập nhật thông tin về tình hình tài chính và nhân lực trên blog này.

Cập nhật 2PM 21/03/2007:

- tiền: 1 triệu đồng
- người: 1 người

Cập nhật 3PM 21/03/2007: chúng tôi cần người thiết kế một cái tờ rơi và làm một cái banner!!! Nếu bạn có khả năng thiết kế, xin hãy giúp đỡ!

Cập nhật 6PM 21/03/2007: đang burn CD và in tài liệu! Trước mắt sẽ burn 300 CD Ubuntu cộng với 300 hướng dẫn sử dụng nho nhỏ kèm theo.

Cập nhật 0AM 22/03/2007: tổng kết lại sẽ có khoảng 320 đĩa CD, bao gồm 300 đĩa Ubuntu 6.10, 10 đĩa Hacao Linux và 10 đĩa Fedora One. Ngoài ra còn có 300 tập tài liệu nhỏ hướng dẫn sử dụng Ubuntu 6.10 nữa. Như vậy mỗi phần Quà của Chim Cánh Cụt sẽ bao gồm 1 đĩa CD và 1 tài liệu hướng dẫn sử dụng. Đó là về "vật chất", còn về tinh thần, chúng ta có thêm 4 cái cờ và 1 băng rôn :)). Chiến sĩ tình nguyện thì vô số luôn! Happy linuxing!

Cập nhật 10AM 22/03/2007: đã phát hết 300 đĩa! Đang burn tiếp 200 đĩa, chiều 2h quay lại phát tiếp!!!

Xin chân thành cảm ơn,

-Thái

---

Tomorrow 22/03/2007, Microsoft will hold something called Vietnam Windows Vista Day at Nguyen Du Indoor stadium. We think this is a very good chance to promote Linux so that we decide to deliver free Linux CD and documentation in front of the stadium.

When: 8h30AM GMT +7 22/03/2007.

Where: Nguyen Du Indoor stadium.

300 "Gift from the Penguine" packages, each containing a free Ubuntu Linux and a quickstart manual in Vietnamese, will be delivered to students, programmers, developers and anyone else interested in Linux.

Love Linux? Want to do something for the community? Or just want to have fun? Join us now!!!

-Thai

Monday, March 5, 2007

50 VIP trên Internet

Không có Bill Gates, đứng đầu là ba chàng lính ngự lâm đến từ Google:

1. Eric Schmidt, Larry Page, and Sergey Brin Executives, Google

When your stock price can top $500 a share, you're collectively worth $33 billion in cash, and you run the most trafficked search engine on the Internet, you can afford to do, well, pretty much whatever you want. Sergey Brin and Larry Page's little project from Stanford has grown into the Web's most talked-about powerhouse, and one of the few names on this list to have morphed into a verb. Schmidt left Novell to join the board of directors at Google in 2001 and soon became the company's CEO. Having conquered the online advertising world, Google seems to be gearing up for an acquisition spree, its headline-grabbing purchase of YouTube marking a big step toward complete domination of the Web.

Tiếp theo là phù thủy Steve Jobs nhà Apple:

2. Steve Jobs CEO, Apple:

No doubt you're sick of the media bonanza surrounding the every move of Apple's CEO, but when one man's appeal for DRM-free music reverberates around the world, it's hard to ignore the power he wields. Jobs popularized legal music downloads and legal TV and movie downloads. And though the iPhone won't be released for five months, its demonstration at MacWorld Expo suggested that this product might finally popularize Internet browsing on a mobile device.

Chễm chệ ở vị trí thứ ba là một bất ngờ thú vị:

3. Bram Cohen Cofounder, BitTorrent

P2P systems like KaZaA and eDonkey are so last year. The future is all about BitTorrent, the brainchild of math wizard and programming wunderkind Bram Cohen. BitTorrent, developed in 2001, has gained in popularity as a way to download large files (like movies) by sharing the burden across hardware and bandwidth. The technology's adeptness at handling large files got Cohen in trouble with the Motion Picture Association of America, which ordered BitTorrent to remove copyrighted content from its network. But that setback hasn't slowed it down. Reportedly, more than a third of all Web traffic now comes from BitTorrent clients. BitTorrent and the entertainment heavyweights have since joined forces. The newly released BitTorrent Entertainment Network launched recently with thousands of industry-approved movies, television shows, games, and songs for sale and rental.

Tiếp theo là ông chủ của World of Warcraft:

4. Mike Morhaime President, Blizzard Entertainment

In the world of online gaming, there is World of Warcraft and there is everything else. With 8 million players worldwide, Blizzard earns about $1.5 billion a year on WoW. And each player is breathlessly beholden to Mike Morhaime for the chance--if it ever comes--to obtain that Blade of Eternal Justice. As with Second Life (see #17), entire real-world businesses are based around the game. Unlike Second Life, though, these businesses--which exploit the WoW economy and gameplay--are not entirely welcome.

Vị trí thứ 5 thuộc về nhà sáng lập Wikipedia:

5. Jimmy Wales Founder, Wikipedia

Many onliners treat Internet encyclopedia Wikipedia as their first and last stop in researching a topic; and its user generated content has become so reliable that Nature magazine declared it "close to [Encyclopaedia] Britannica" in accuracy. The site has been cited as a source of information in more than 100 U.S. court decisions since 2004. But its popularity has also made Wikipedia a target for spammers--so much so that Wikipedia temporarily blocked the entire country of Qatar from making edits. To thwart spammers, Wales decided to slap "nofollow" tags on external links, telling search engines to ignore the links in order to avoid artificially inflating the search engine ranking of the link targets. This strategy ensures that Wikipedia's prominence in search results will continue to grow. But Wikipedia may just be the beginning for Wales. He recently launched his own search engine, WikiSeek, which searches only sites mentioned in Wikipedia.

Xem toàn bộ danh sách ở đây.

Ubuntu: từ A đến Z

Một bài giới thiệu rất chi tiết về Ubuntu, từ khâu cài đặt đến việc điều chỉnh cấu hình và cài đặt thêm các phần mềm thông dụng, rất đáng đọc nếu bạn sử dụng distro Linux này:
With the release of Microsoft's new Windows operating system (Vista), more and more people are looking for alternatives to Windows for various reasons. This tutorial is the third in a series of articles where I will show people who are willing to switch to Linux how they can set up a Linux desktop (Ubuntu 6.10 Edgy Eft in this article) that fully replaces their Windows desktop, i.e. that has all software that people need to do the things they do on their Windows desktops. The advantages are clear: you get a secure system without DRM restrictions that runs also on older hardware, and the best thing is: all software comes free of charge.

Hamachi cấm IP đến từ VN

Hamachi, phần mềm thiết lập VPN nổi tiếng, đã cấm các kết nối đến từ VN:
a subset of IPs was blocked due to a very large fraud increase. no decision has been made either way as to the status going forward. so for now, it is remaining in place.
Theo thông tin mà chúng tôi nhận được, dãy IP của FPT và VDC đã bị chặn hoàn toàn.

Sunday, March 4, 2007

Chuyển từ Windows sang Ubuntu, những điều bạn nên biết

Những chia sẻ rất thật của một người sử dụng Windows từ hồi Windows 3.11 nhưng đã quyết định chuyển sang dùng Ubuntu từ hơn một năm rưỡi nay:
You’ll find that lots of people are willing to help you, simply because you’re using Ubuntu. It’s almost like joining a club that has an exclusive membership feeling but allows anyone in. Over the past year and a half I’ve been helped by lots and lots of people with more knowledge and experience than I have. In turn, I feel happy to do the same for others following in my footsteps. It’s nice to belong and other Ubuntu users make it easy. It’s also nice to get quick answers to problems you may be having simply by posting to a forum, or asking on a blog.

Sometimes, you’ll really miss using Windows. I’ve been using windows since 3.11. It was entrenched in my nervous system. If I wanted to get somewhere, I simply went to Start and did it. Change my desktop? Easy. Check the Event Log? No problem. Learning to do all of this in Linux takes time. There will be times when you spend an hour troubleshooting what would be a simple problem if you just knew what you were doing. Fortunately there is a community willing to help you and share your frustrations. There’s also that learning curve I just mentioned. Once you crest it, it’s like you suddenly have some serious control over your PC. You can start getting it to do things that make others go “Wow!” even though you’re not having a Vista moment.
Hi vọng sau khi đọc xong bài này, tôi có thể nói: chào mừng bạn đã gia nhập CLB!

Damn Vulnerable Linux

Linux.com vừa có một bài giới thiệu chi tiết một distro mới toanh mang tên Damn Vulnerable Linux:
Damn Vulnerable Linux, headed by Thorsten Schneider, based on Damn Small Linux, aims to deliver the Operating System in such a way that it allows Security Students first hand insight and hands on experience with Security issues within GNU/Linux in order to teach them protection and mitigation techniques The project's website describes the distribution as 'the most vulnerable, exploitable Operating System ever' and it's true, the developers have ensured that it contains outdated, ill-configured, flawed code and contains GNU/Linux 2.4 Kernel which is known to have many exploitable avenues in itself.
Hi vọng Damn Vulnerable Linux sẽ trở thành một công cụ hỗ trợ đắc lực cho những ai muốn tìm hiểu về buffer overflow và disassembly:
Security is a wide topic and security issues can arise from almost everywhere. Schneider says the tutorials are split into three parts. "The first is about binary exploitation, buffer overflows, format string vulnerabilities, or shellcodes. The second is about Web exploitation such as SQL injection, path retrieval, and Web site insecurity. The third part is about reverse code engineering and copy protection analysis and teaches how vulnerable copy protections are in reality."

"The one thing that sets DVL apart the most," Sweeney says, "is the focus on buffer overflows and disassembly." Disassembly, he says, is often talked about in conjunction with buffer overflows and reverse engineering. "Disassembling is when someone breaks down a program into the assembly language for further analysis. By doing this, users can analyze code at a very low level and look for security issues. There have been many excellent papers on the subject over the years, but these generally don't come with learning tools in a self-contained, easy-to-use environment."

Hacking không chỉ dành cho đàn ông

Joanna Rutkowska đã chứng minh điều đó rất nhiều lần. Ở hội thảo Black Hat Federal năm nay, cô hacker người Phần Lan này lại làm cho đám đàn ông phải ngã mũ chào:
Rutkowksa will show how an attacker could prevent forensics investigators from getting a real image of the memory where the malware resides. "Even if they somehow find out that the system is compromised, they will be unable to get the real image of memory containing the malware, and consequently, they will be unable to analyze it," says Rutkowska, senior security researcher for COSEINC.
Download slide trình bày của Joanna tại ở đây.

Saturday, March 3, 2007

Phát hiện lỗi nghiêm trọng trong Yahoo! 360

Lợi dụng lỗi Cross Site Request Forgery của Yahoo! 360, kẻ xấu có thể xóa toàn bộ lời bình (comment) cũng như các bài viết (entry) trong blog của bạn.

Lỗ hổng nghiêm trọng ở chỗ cách khai thác rất dễ dàng. Kẻ xấu chỉ cần dụ bạn truy cập vào một đường link là hắn đã có thể dễ dàng thao túng blog của bạn. Cách tấn công dễ nhất xem chừng là tạo một entry trên Yahoo! 360 chứa các thẻ img liên kết đến các đường link xóa comment. Khi bạn vào đọc entry đó, ngay lập tức comment trong blog của bạn sẽ bị xóa. Thậm chí nếu muốn, khi bạn đang đọc bài viết này, tôi cũng có thể âm thầm xóa comment trên blog của bạn (điều kiện duy nhất là bạn vẫn chưa logout ra khỏi Yahoo!). Meomun, người đầu tiên phát hiện lỗi này, cho biết cách làm này có thể xóa luôn cả entry và toàn bộ blog của bạn. Để tự bảo vệ mình, bạn nên:
  • logout ra khỏi Yahoo! ngay khi sử dụng xong.
  • tắt chức năng tải img trong trình duyệt
Cross Site Request Forgery là một lỗi hết sức phổ biến và cực kì lợi hại. Chính sự kết hợp giữa XSS và CSRF đã đẻ ra một thế hệ worm mới mang tên web worm với các đại diện tiêu biểu là samy, MySpace, AdultSpace hay Xanga. Jerimeah Grossman, CTO của Whitehat Security, gọi CSRF là người khổng lồ đang ngủ:
Cross-Site Request Forgery (aka CSRF or XSRF) is a dangerous vulnerability present in just about every website. An issue so pervasion and fundamental to the way the Web is designed to function we've had a difficult time even reporting it as a "vulnerability". Which is also a main reason why CSRF does not appear on the Web Security Threat Classification or the OWASP Top 10. Times are changing and it’s only a matter of time before CSRF hacks its way into the mainstream consciousness. Chris Shiflett (principal of OmniTI) and I were speaking about this today and how to best convey the issues importance. CSRF may in fact represent an industry challenge far exceeding that of Cross-Site Scripting (XSS).
Cách đây chừng một tháng, tôi cũng có tìm thấy một lỗi CSRF trong forum của HVAOnline. Sau khi sửa chữa xong, BQT HVAOnline cũng đã mở một topic thảo luận khá sôi nổi về cách thức phòng chống CSRF về phía server-side. Tôi khuyên bạn nên đọc về CSRF nếu bạn là một web developer!

PHP "lên dĩa"

Bắt đầu là Month of Browser Bugs, rồi đến Month of Kernel BugsMonth of Apple Bugs, còn bây giờ là Month of PHP Bugs. Chỉ sau 3 ngày, đã có 8 lỗi nghiêm trọng của PHP được công bố!

# Title Description PoC/Exploit References
8 PHP 4 phpinfo() XSS Vulnerability (Deja-vu) phpinfo() does not escape the content of user supplied arrays in GET, POST or COOKIE variables when it displays them which leads to an XSS vulnerability. MOPB-08-2007.phpt HPHP-18-2005
CVE-NO-NAME
7 Zend Platform ini_modifier Local Root Vulnerability The ini_modifier of the Zend Platform can be tricked by a local to edit the system php.ini file, which can be used to obtain root privileges. Not needed CVE-NO-NAME
6 Zend Platform Insecure File Permission Local Root Vulnerability Several binaries and shellscripts installed by the Zend Platform are installed with unsafe permissions that might allow an attacker to gain root privileges. Not needed CVE-NO-NAME
5 PHP unserialize() 64 bit Array Creation Denial of Service Vulnerability Deserialisation of malformed PHP arrays from within unserialize() might result in a tight endless loop exhausting CPU ressources on 64bit systems. Not needed CVE-2007-0988
4 PHP 4 unserialize() ZVAL Reference Counter Overflow During unserialisation of user supplied data that contains a lot of references to a variable the internal 16bit zval reference counter can overflow. This leads to an exploitable double dtor condition. MOPB-04-2007.php CVE-NO-NAME
MOPB-01-2007
3 PHP Variable Destructor Deep Recursion Stack Overflow The destruction of deeply nested PHP arrays will exhaust all available stack which leads to remotely triggerable crashes. Not needed CVE-NO-NAME
2 PHP Executor Deep Recursion Stack Overflow A deep recursion of PHP userland code will exhaust all available stack which leads to a sometimes remotely triggerable crash. Not needed CVE-2006-1549
1 PHP 4 Userland ZVAL Reference Counter Overflow Vulnerability In PHP 4 userland code is able to overflow the internal 16bit zval reference counter by creating many references to a variable. This leads to an exploitable double dtor condition. MOPB-01-2007.php CVE-NO-NAME

Phần mềm cho công ty ảo

Đây là năm 2007 và ngày càng có nhiều công ty ảo với chính sách "làm việc ở nhà" ra đời. "Làm việc ở nhà" đem lại rất nhiều lợi ích như tiết kiệm chi phí và thời gian cho việc đi lại cũng như tận dụng được nguồn nhân lực toàn cầu. ReadwriteWeb vừa có một bài giới thiệu khá chi tiết những phần mềm và công nghệ giúp bạn ảo hóa công ty của mình:
It is truly amazing how far and how quickly virtual team technology has evolved. Just a few years ago virtual companies were very difficult to run, because of logistics and costs. However the tools that we have covered in this post, collectively, have opened the door to a new breed of companies - small, agile, virtual businesses. These companies exist because of this new wave of communication tools and substantially lower infrastructural costs.

In addition, virtual companies consist of happier employees. These are people who do not need to spend time in traffic, people who save money on gas, people who conserve resources and, perhaps most significantly, people who spend more time with their family. So perhaps this simple, yet very profound, application of technology is the beginning of a new trend and the way we will mostly work and communicate in the future. Let us know what you think and please tell us what virtual office tools you use - and indeed whether you work from home or in a corporate environment.

Windows Command-line kungfu with WMIC

Dành cho những ai lỡ dại mê shell trên *nix nhưng vẫn phải làm việc trên windows:
C:\> wmic process [pid] delete

That's the rough equivalent (for you UNIX/Linux minded folks) of "kill -9 [pid]".

Or, better yet, try this one on for size:

C:\> wmic process where name='cmd.exe' delete

I love that one! It functions something like "killall -9 cmd.exe" would on a Linux box, where killall lets you kill processes by name.

And, check this out:

C:\> wmic process list brief /every:1

Sort of like (but not exactly) the Linux/UNIX top command.

But, wait! There's more...

C:\> wmic useraccount

This one gives a lot more detail than the old "net user" command. With "wmic useraccount" you get user names, SIDs, and various security settings.

Fun, fun, fun! Here's another:

C:\> wmic qfe

This one shows all hotfixes and service packs. For you old-school Sun-heads out there (both of you! -- Just Kidding), qfe doesn't stand for Quad Fast Ethernet... It stands for Quick Fix Engineering in this context.

For a list of some of the items WMIC can touch, run this:

C:\> wmic /?

Shellcode thần chưởng: luyện assembly

Sau bài viết đầu tiên về shellcode, một người bạn có hỏi tôi là nếu shellcode là bytecode - mã máy, vậy nó chỉ phụ thuộc vào bộ vi xử lí thôi chứ, tại sao nó còn phụ thuộc vào hệ điều hành nữa vậy?

Đây là một câu hỏi rất thường gặp ở những người mới bắt đầu, bản thân tôi cũng đã từng tự hỏi như thế khi mới tìm hiểu shellcode. Thật ra lý do shellcode bắt buộc phải phụ thuộc vào hệ điều hành khá hiển nhiên. Nếu bạn nhìn rộng ra một chút, bạn sẽ thấy rằng không phải chỉ shellcode mới là bytecode, mà tất cả phần mềm, dù được viết bằng ngôn ngữ gì, cuối cùng phải được dịch sang bytecode rồi mới có thể chạy được. Nếu shellcode không phụ thuộc vào hệ điều hành, vậy tất cả các phần mềm cũng sẽ không phụ thuộc vào hệ điều hành, phải không nào? Shellcode xét đến cùng cũng chỉ là một phần mềm, nó buộc phải lệ thuộc vào những gì hệ điều hành cung cấp để thực thi chức năng của nó.

Bạn muốn viết chương trình đọc một file rồi xuất ra màn hình? Dù bạn viết bằng C hay Assembly, chắc chắn mã nguồn của chương trình đó trên Windows và Linux sẽ khác nhau bởi lẽ các hàm mà Windows hay Linux cung cấp cho bạn rất khác nhau. Nói tóm lại, bạn buộc phải có một chương trình hay một shellcode chuyên biệt cho từng loại hệ điều hành mà bạn dự định chạy shellcode trên đó. Nếu bạn vẫn chưa nắm được vấn đề, hãy đọc tiếp, các ví dụ cụ thể trong bài viết này có thể giúp bạn hiểu được tại sao shellcode phải phụ thuộc vào hệ điều hành.

Không có ngôn ngữ nào đơn giản hơn Assembly

Như trong bài trước tôi đã nói, chúng ta sẽ viết shellcode theo hai cách:
  • viết bằng C, dịch sang Assembly rồi tiếp tục dịch sang mã máy
  • viết bằng Assembly rồi dịch luôn ra mã máy.
Có thể thấy rằng, dù chọn cách viết nào đi chăng nữa, bạn bắt buộc phải thông hiểu ngôn ngữ Assembly. Rồi coi như xong, tôi bỏ cuộc đây, Assembly phức tạp và khó học thấy mồ, sao tôi học nổi? Ấy ấy bạn đừng vội, hãy dành chút thời gian nghe tôi trình bày rồi bỏ đi cũng chưa muộn.

Chắc hẳn bạn cũng biết, các ngôn ngữ lập trình thường được chia làm hai lớp: lớp ngôn ngữ cấp cao và lớp ngôn ngữ cấp thấp. Lớp ngôn ngữ cấp cao lại được chia làm hai lớp, lớp cao vừa vừa như C/C++ chẳng hạn và lớp cao ngất ngưỡng như Java hay các loại ngôn ngữ scripting kiểu như PHP, Perl, Python, Ruby...Trong khi lớp ngôn ngữ cấp cao đông đúc như vậy thì lớp ngôn ngữ cấp thấp chỉ có một đại diện duy nhất là Assembly (tùy thuộc vào assembler mà cú pháp ngôn ngữ Assembly sẽ có những thay đổi nhất định nhưng xét tổng quát thì chúng ta chỉ có một ngôn ngữ Assembly duy nhất).

Thông thường ngôn ngữ cấp cao sẽ dễ học và dễ sử dụng hơn ngôn ngữ cấp thấp hơn, ví dụ như C/C++ khó học và khó xài hơn Java hay Python rất nhiều. Assembly còn ở cấp thấp hơn cả C/C++, vậy suy ra nó phải cực khó rồi. Tin vui là không đúng như vậy bạn ơi. Assembly là một ngôn ngữ cực kì đơn giản. Bản thân tôi đã sử dụng khá nhiều ngôn ngữ khác nhau và Assembly (cụ thể là NASM Assembly) là ngôn ngữ đơn giản nhất mà tôi từng biết. Theo tôi, sự đơn giản của Assembly thể hiện ở chỗ, ngôn ngữ này gần như không có bất kì khái niệm trừu tượng nào cả. Assembly không có pointer, không có class, không có function, không có int, không có string...Assembly chỉ có một tập lệnh (instruction set), bộ nhớ (stack + register) và tất cả dữ liệu đều được lưu trữ và xử lí theo từng byte. Người mới học Assembly dựa vào tập lệnh là đã có thể viết chương trình được ngay mà không phải tốn thời gian tìm hiểu các khái niệm trừu tượng như trong các ngôn ngữ cấp cao khác. Suy cho cùng, Assembly bắt buộc phải đơn giản, nó không thể phức tạp, bởi lẽ nó (gần như) là phiên bản human-readable của mã máy, thứ ngôn ngữ duy nhất mà vi xử lí có thể hiểu được và chúng ta đều biết, vi xử lí chỉ có thể hiểu được những thứ rất đơn giản như 0 và 1 mà thôi.

Rồi, nói nhiều quá rồi, phải trình diễn thôi!

Sơ lược về Assembly


Trước tiên, bạn download file này về (tạm thời để ở Yousendit, sẽ chuyển sang một host mới trong vài ngày nữa), in ra rồi đọc cho đến khi hiểu rõ nội dung của nó rồi hãy tiếp tục theo dõi bài này. Đây là tài liệu của lena151, một cao thủ về reverse code engineering, tóm gọn khá tốt và đầy đủ những khái niệm quan trọng nhất của Assembly. Mặc dù tài liệu này thiên về phục vụ cho reverse code engineering nhưng bạn hoàn toàn có thể áp dụng những kiến thức này để viết shellcode. Một lần nữa, tôi đề nghị bạn hãy đọc thật kĩ tài liệu này trước khi tiếp tục.

Hello, world!

Chúng ta hãy bắt đầu bằng cách cổ điển, viết một chương trình Hello, world! bằng Assembly.
Bạn hãy lưu đoạn chương trình sau đây vào file hello.asm (nhớ bỏ đi các số đầu dòng nhen):
1 global _start
2 _start:
3 xor eax, eax

4 jmp short string
5 code:
6 pop ecx
7 mov edx, 14
8 mov ebx, 1
9 mov al, 4
10 int 0x80

11 xor eax, eax
12 mov al, 1
13 int 0x80

14 string:
15 call code
16 db 'Hello, world!', 0x0a
Trời, có một cái Hello, world! mà đã dài đến 16 dòng vậy mà dám nói Assembly đơn giản!? Bạn ơi, dài hơn không có nghĩa là khó và phức tạp hơn mà nên hiểu rằng nó rõ ràng và rành mạch hơn. Nếu nhìn kĩ vào chương trình trên, bạn sẽ thấy nó chỉ sử dụng một số lệnh đơn giản như int, xor, mov, pop, push, call hay jump...cùng với các register như eax, ebx, ecx, edx hay esp ngoài ra không có bất kì lệnh nào khó hiểu khác. Tôi cũng cam đoan với bạn rằng, hầu hết shellcode mà bạn sẽ viết đều chỉ sử dụng bấy nhiêu đó lệnh mà thôi. Chúng ta sẽ để dành công việc phân tích đoạn chương trình trên ở những bài sau, trước mắt hãy chạy thử chương trình này đi đã:
$ nasm -f elf hello.asm
$ ld -o hello hello.o
$ ./hello
Hello, world!
Ở lệnh đầu tiên, nasm sẽ đọc mã nguồn ở file hello.asm và tạo ra file object có định dạng là ELF mang tên hello.o. Ở lệnh thứ hai, chương trình linker mang tên ld trên Linux sẽ sử dụng file object hello.o để tạo ra file thực thi hello. Hãy xem kích thước của chương trình này là bao nhiêu:
$ cat hello | wc -c
749
Bạn hãy thử viết một chương trình Hello, world! tương tự bằng C rồi so sánh kích thước của hai chương trình xem sao? Chắc chắn rằng chương trình viết bằng C sẽ to gần 10 lần chương trình viết bằng Assembly. Rõ ràng đây là một lợi thế đáng kể của Assembly và chúng ta có thể lợi dụng điều đó để viết những đoạn shellcode có kích thước cực nhỏ.

-Thái