Thursday, 25 February 2016

[Kali Linux]Setup Kali for Pentester

-----------------------------------------------------------------------------
Quy Trình Set Up Kali Cho Penetration Tester
robinhood (Whitehat)
------------------------------------------------------------------------------

Tạo ra một OVA file và một Live CD (USB) mang theo mỗi khi pen test,
Lưu ý 1: máy Kali chưa cài bất cứ một phần mềm nào khác.
Lưu ý 2: xếp các tools download vào /opt/ cho dễ quản lý


1.Đổi default password (nếu bạn download VM từ Internet)
passwd

2.Update:
apt-get update
apt-get dist-upgrade

3.Set up Metasploit database
service postgresql start
update-rc.d postgresql enable
msfdb init

4.Đổi hostname

gedit /etc/hostname => đổi tên Kali thành tên nào khác. Mình hay dùng android-xxxxx…
gedit /etc/hosts => đổi tên kali thành tên bạn chọn phía trên
reboot

Cài tools:
1.Veil-Evasion: tool dùng để tạo payload
apt-get install veil-evasion

2.Backdoor Factory: tool này được cài sẵn trong Kali, nếu bạn nào chưa có thì có thể cài bằng command sau:
apt-get install backdoor-factory

3.HTTPScreenShot: tool này dùng để chụp screenshot cho một lượng lớn các website cùng lúc. Quy trình cài đặt:
pip install selenium
git clone https://github.com/breenmachine/httpscreenshot.git /opt/httpscreenshot
cd /opt/httpscreenshot
chmod +x install-dependencies.sh
./install-dependencies.sh
Nếu bạn dùng Kali 32-bit thì phải google để tìm hướng dẫn cách cho HTTPScreenshot hoạt động sau những bước trên.

4.SMBExec: môt tool dùng để tấn công vào các SMB service với cách thức tương tự như PSExec cho PowerShell. Quy trình cài đặt:
git clone https://github.com/pentestgeek/smbexec.git /opt/smbexec
cd /opt/smbexec
./install.sh
Chọn 1
./install.sh
Chọn 4
Chọn 5 để kết thúc.

5.Masscan: là một port scanner mà mình nghĩ là nhanh nhất hiện nay. Tool này được cài đặt sẵn trong Kali.
apt-get install masscan

6.Gitrob: một tool dùng để scan các Git repo của các công ty (Github, Gitlab). Tool này cần phải set up database cho nó. Quy trình cài đặt:
git clone https://github.com/michenriksen/gitrob.git /opt/gitrob
gem install bundler
service postgresql start
su postgres
createuser -s gitrob --pwprompt
Nhập password
createdb –O gitrob gitrob
exit
cd /opt/gitrob/bin
gem install gitrob

7.CMSmap: tool dùng để scan website. Mình thấy rất hữu dụng khi scan WordPress framework. Quy trình cài đặt:
git clone https://github.com/Dionach/CMSmap /opt/CMSmap

8.WPScan: tool dùng để scan các website dùng WordPress framework
apt-get install wpscan

9.Eyewitness: tool dùng để chụp screenshot và server header
apt-get install eyewitness

10.Praedasploit: tool dùng để khai thác các lỗ hỗng của các printer phổ biến như HP, Dell, Canon, Xerox
git clone https://github.com/MooseDojo/praedasploit /opt/praedasploit

11.SQLMap: tool để khai thác các lỗ hổng trong SQL database. Tool này được cài đặt sẵn trong Kali.
apt-get install sqlmap

12.Recon-ng: một tool rất hữu ích cho giai đoạn gathering information. Tool này được cài đặt sẵn trong Kali
apt-get install recon-ng

13.Discover Script: tool này theo mình thấy là hữu dụng nhất trong giai đoạn gathering information. Mình dùng cái này nhiều nhất. Quy trình cài đặt:
git clone https://github.com/leebaird/discover.git /opt/discover
cd /opt/discover/
./update.sh

14.BeEF: tool dùng cho XSS
apt-get install beef

15.Responder: dùng cho NTLM challenge/response hashes
apt-get install responder

16.Một vài script hữu dụng từ cuốn The Hacker Playbook:
git clone https://github.com/cheetz/Easy-P /opt/Easy-P
git clone https://github.com/cheetz/Password_Plus_One /opt/ Password_Plus_One
git clone https://github.com/cheetz/PowerShell_Popup /opt/PowerShell_Popup
git clone https://github.com/cheetz/icmpshock /opt/icmpshock
git clone https://github.com/cheetz/brutescrape /opt/brutescrape
git clone https://github.com/cheetz/reddit_xss /opt/reddit_xss

17.DSHashed: tool dùng để extract user hashes
wget http://ptscripts.googlecode.com/svn/trunk/dshashes.py -O /opt/NTDSXtract/dshashes.py

18.Sparta: tool này được cài đặt sẵn trong Kali. Đây là tool có GUI nên tương đối dễ dùng.
apt-get install sparta

19.NoSQLMap: một tool dùng để khai thác các non-sql databases
git clone https://github.com/tcstool/NoSQLMap.git /opt/NoSQLMap

20.Spiderfoot: tool để dò footprint của network các công ty. Quy trình cài đặt:
mkdir /opt/spiderfoot
cd /opt/spiderfoot
wget http://sourceforge.net/projects/spid...ar.gz/download
tar xvzf download
pip install lxml
pip install netaddr
pip install M2Crypto
pip install cherrypy
pip install mako

21.WCE: tool dùng để lấy password dạng cleartext. Các bạn có thể google để tìm chỗ download từ ampliasecurity.com. Tool này không dùng trên linux được mà chỉ dùng trên Windows, tuy nhiên bạn nên có tool này trong Kali để sau khi có được một meterpreter trên 1 máy Windows thì có thể upload tool này và chạy trên đó.

22.Mimikatz: một tool khác dùng để lấy password dạng cleartext. Tool này được cài sẵn trong Kali. Bạn cũng có thể tải một Windows version của tool này để dành giống như với WCE.

23.Social Engineering Toolkit: dùng cho social engineering attacks. Tool này được cài sẵn trên Kali.
apt-get install set

24.PowerSploit: PowerShell scripts cho post exploitation
apt-get install powersploit

25.Nishang: thêm PowerShell scripts
apt-get install nishang

26.Seclists: list các password dictionaries, fuzz lists
apt-get install seclists

27.Net-Creds: tool dùng để tìm username và password trong file PCAP. Quy trình cài đặt:
git clone https://github.com/DanMcInerney/net-creds.git /opt/net-creds

28.Các add-on cần có cho Iceweasel hoặc Firefox: web-developer, tamper-data, foxyproxy, user-agent-switcher

29.Nessus: một tool hàng đầu hiện nay để scan các điểm yếu của một network. Mình dùng Nessus Professional và Nessus Cloud ở office, nhưng mình sẽ hướng dẫn các bạn cài bản free Nessus Community.
Lưu ý: Nếu các bạn tạo một file OVA để dùng về sau thì không cài Nessus vào file OVA vì Nessus hoạt động dựa vào MAC Address khi bạn register. Sau khi deploy file OVA rồi hẵng cài Nessus.

cd /root/download
dpkg -i Nessus*[tab]
/etc/init.d/nessusd start

Mở browser lên và gõ vào https://127.0.0.1:8834
Tạo administrative username và password.
Click vào “Registering this scanner” sau đó chọn Register Now ở bản Nessus Home.
Các bạn điền thông tin vào, và một code sẽ được gửi tới email. Điền code đó vào local Nessus server
​Đến đây là thành công. Sau đó dùng username và password đã tạo trước đó để đăng nhập và sử dụng Nessus.

30.Cài certificate cho Burp Suite: khi dùng Burp để scan hoặc spider website, bạn sẽ gặp tình trạng bị mắc kẹt với cái website dùng HTTPS. Thế nên trước khi dùng Burp, bạn cần phải cho Kali trust Burp như một proxy trong CA list.

Trên thanh địa chỉ gõ vào http://burp/




Click vào CA Certificate và chọn Save File



Vào Options của browser và chọn Preferences

Chuyển qua tab Advanced => Certificates => View Certificates

Chọn Import, browse tới file certificate mà bạn vừa download, xong click OK

Thursday, 17 September 2015

[Linux] Check Firewall on CentOS

Check firewall on CentOS

$ su -
Password:
# iptables -L
--OR--
# service iptables status
# service iptables stop
# service iptables start

Check firewall on CentOS 7

Disable Firewalld
To disable firewalld, run the following command as root:
# systemctl disable firewalld

Stop Firewalld
To stop firewalld, run the following command as root:
# systemctl stop firewalld

Check the Status of Firewalld
And finally, to check the status of firewalld, run the following command as root:
# systemctl status firewalld

[Linux] Kiểm tra phiên bản hệ điều hành Linux


Check version linux

uname -a
uname -rms
cat /etc/system-release
cat /proc/version
lsb_release -a

[Tools] WinSCP Windows Secure CoPy

WinSCP is an open source free SFTP client and FTP client for Windows. Its main function is the secure file transfer between local and remote computer.

[Linux] Check and open ports in CentOS / Fedora / Redhat


If you want to open or close a port for a Linux firewall you have to edit the rules in the iptables configuration. By default iptables firewall stores its configuration at /etc/sysconfig/iptables file. You need to edit this file and add rules to open port.

Here are the steps to open the port XY using the default visual editor vi:

Open port XY

Open flle /etc/sysconfig/iptables:

# vi /etc/sysconfig/iptables

Append rule as follows:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport XY -j ACCEPT



Save and close the file. Restart iptables:

# /etc/init.d/iptables restart

Verify that port is open

Run following command:

# netstat -tulpn | less
Make sure iptables is allowing port connections:

# iptables -L -n

Friday, 24 July 2015

[Tools]Những công cụ đánh giá bảo mật trên Kali Linux

-------------------------------------------------------------------
Nguồn: http://newepochce.com/index.php?option=com_content&view=article&id=157:nhng-cong-c-anh-gia-bo-mt-qc-chngq-tren-kali-linux-p2&catid=41:baomat&Itemid=67
--------------------------------------------------------------------------------------

Kali được cài đặt hơn 200 công cụ tùy theo nhu cầu đánh giá. Nếu những công cụ này không được sắp xếp và phân loại rõ ràng thì khả năng sử dụng khi thực hiện đánh giá bảo mật sẽ không tối ưu. So với BackTrack, tất cả các công cụ trên Kali đều được phân loại dựa trên mục đích sử dụng của nó. Người viết sẽ giải thích từng phân loại cùng những công cụ tiêu biểu nhất.
kalicateories
Phân loại đầu tiên là Information Gathering (Thu thập thông tin). Nhóm phân loại này gồm những công cụ tập trung vào việc thu thập thông tin về mục tiêu. Trong phân loại này có một số lượng lớn các công cụ được phân chia theo loại thông tin cần thu thập.
Ví dụ, OS Fingerprinting (Thu thập thông tin về hệ điều hành), Network Scanners (Dò quét cổng, dò quét mạng, dò quét phiên bản dịch vụ), SSL Analysis (Phân tích giao thức SSL), VoIP Analysis (Phân tích giao thức VoIP) và còn nhiều công cụ khác nữa.
dredd-nmap-trailer-screenshot-1589x805
Từ những công cụ này, chúng ta có thể chọn ra một công cụ rất nổi tiếng, cực hữu ích khi thực hiện đánh giá bảo mật hạ tầng mạng lưới điện toán, đó chính là Nmap. Đây thực sự là một công cụ thăm dò, phân tích, do thám mạng lưới rất hữu dụng.
Với Nmap, bên cạnh việc bạn có thể biết được Ports (Cổng dịch vụ) nào đang Open, Filtered hoặc Closed, bạn còn có thể xác định được phiên bản dịch vụ (Banner version) và cũng có thể thực hiện phán đoán phiên bản hệ điều hành mà mục tiêu đang sử dụng.
nmap-bt6
Hơn nữa, với các phiên bản mới của Nmap bạn có khả năng sử dụng các đoạn Scripts có sẵn của Nmap hay tự viết, được bổ sung thông qua chức năng Nmap Scripting Engine (NSE).
Tính đến thời điểm này, trên trang web chính thức của Nmap bạn có thể tìm thấy hơn 400 Scripts tùy vào nhu cầu sử dụng của bạn (Scripts được cập nhật gần đây tính đến thời điểm người viết đăng bài này là hai Scripts : Tìm các D-link Modems và Tenda Modems với sự cố "Backdoor" được cài đặt ngầm trong hai thiết bị)
Một công cụ khác cũng nổi trội không kém là theHarvester. Công cụ này dựa vào nhiều nguồn tìm kiếm như google, google-profiles, bing, Linkedin hoặc Shodan để thu thập thông tin, ví dụ: thu thập thông tin về một công ty ABC nào đó, bạn có thể tìm địa chỉ email, tên máy chủ và nhiều thông tin liên quan đến công ty đó bằng theHarvester.
theharvester-bt6
Phân loại tiếp theo là Vulnerability Analysis (Phân tích lỗ hỏng). Phân loại này tập trung vào việc phát hiện các lỗ hổng bảo mật, từ lỗ hổng ứng dụng, hạ tầng, mạng lưới cho đến phần cứng chuyên dụng. Vì vậy ở đây có rất nhiều các công cụ Vulnerability Scanner (Dò quét lỗ hổng) và Fuzzers (Kiểm thử).
Trong phân loại này bạn có thể tìm thấy sqlmap. Đây là một công cụ tuyệt vời mà thực sự có thể giúp bạn tìm kiếm và khai thác các lỗ hổng SQL Injection. Với công cụ này, bạn chỉ định các ứng dụng web và các thông số bạn muốn kiểm tra, phần còn lại phần mềm sẽ tự động hóa thực hiện (Chú ý người viết không khuyến khích việc biến bạn trở thành Click-click-boy đâu nhé!).
sqlmap-kl
Một công cụ quan trọng khác chính là OpenVAS. OpenVAS là một nền tảng dành cho việc phát hiện dò quét các lỗ hổng. Nó được tạo ra như một nhánh của Nessus khi Nessus trở nên thương mại hóa.
Trong phân loại Web Applications (Ứng dụng Web), bạn có thể tìm thấy những công cụ phát hiện và tấn công các lỗ hổng ứng dụng Web. Trong phân loại này có một công cụ rất đáng để bạn quan tâm, chính là Burp Suite (Có hai phiên bản Free và Pro).
Một trong những tính năng chính và cơ bản của Burp là khả năng Intercept (tạm dịch:đánh chặn) tất cả các HTTP Request được gửi đến các ứng dụng Web, nhờ đó bạn có thể chỉnh sửa, thay đổi, kiểm thử tham số và gửi đến ứng dụng.
Nhưng Burp không chỉ là một công cụ đánh chặn, mà còn là một trong những công cụ tốt nhất để thực hiện các phân tích lỗ hổng ứng dụng Web tự động hoặc thủ công.
burpsuite-pro
Ví dụ, với Burp bạn có thể để tải nhiều Payloads từ một file và sửa đổi các tham số (Parameters), gửi các Payload đó đến cho các ứng dụng Web.
Điều này giúp cho bạn có thể thực hiện những cuộc tấn công Brute force, tải các payload để kiểm thử tấn công SQL Injection hoặc XSS. Giao diện của Burp khá trực quan nên bất kỳ ai cũng sẽ trở nên quen thuộc với tất cả các tính năng của nó. Bạn cũng có công cụ XSSer tương tự như Sqlmap, dùng để tìm các lỗ hổng XSS.
Kế tiếp là phân loại Password Attacks (Tấn công mật khẩu). Phân loại này tự bản thân cái tên của nó đã nói lên tất cả. Bạn có thể tìm thấy các công cụ bẻ khóa mật khẩu Offline hay khởi tạo các cuộc tấn công mật khẩu vào các giao thức. Công cụ đáng chú ý trong phân loại này là John the Ripper, oclhashcat-plus, Medusa và THC-Hydra.
Công cụ đầu tiên John the Ripper là một công cụ bẻ khóa mật khẩu khá cũ nhưng vẫn còn hữu ích. Một trong những tính năng chính của công cụ thứ hai là bạn có thể sử dụng sức mạnh của GPU để thực hiện các cuộc tấn công bẻ khóa mật khẩu.
thc-hydra-bt6
Và cuối cùng, bằng Medusa và THC-Hydra, bạn có thể khởi tạo các cuộc tấn công Brute Force đối với các giao thức như HTTP, FTP, SSH, RDC. THC-Hydra đã công bố bài so sánh tính năng của nó so với các công cụ khác như Medusa, Ncrack. Và hiển nhiên, THC-Hydra chính là người chiến thắng (http://www.thc.org/thc-hydra/network_password_cracker_comparison.html).
Wireless Attacks (Tấn công mạng không dây). Trong phân loại này bạn có thể tìm thấy các công cụ dùng để phân tích và tấn công các giao thức mạng không dây như IEEE 802.11, RFID / NFC hay Bluetooth.
Công cụ hữu dụng nhất trong phần này để thực hiện phân tích giao thức IEEE 802.11 (WiFi) làaircrack-ng. Công cụ này cho phép bạn thực hiện nhiều kiểu tấn công khác nhau với các cơ chế xác thực (authentication) và ủy quyền (authorization) của mạng WiFi.
Sniffing/Spoofing (Nghe lén/Giả mạo) cung cấp các công cụ để intercept lưu lượng mạng trên đường truyền, Web hoặc lưu lượng VoIP. Một trong những chương trình Sniffer tốt nhất hiện nay chính là Wireshark. Với Wireshark bạn sẽ có thể intercept lưu lượng mạng và có thể xác định giao thức được sử dụng, phân tích và highlight các dữ liệu quan trọng.
wireshark185
Bạn cũng có thể áp dụng bộ lọc (Filter) nâng cao để lọc các dữ liệu đang bị intercept. Một công cụ thú vị khác là Dsniff. Công cụ này được chia thành nhiều ứng dụng giúp bạn intercept và xác định những loại dữ liệu nhạy cảm như mật khẩu, e-mail, PII hoặc sniff các dữ liệu đã mã hóa SSL.
Kế tiếp là phân loại Maintaining Access (Duy trì kết nối, quyền truy cập). Phân loại này tập hợp tất cả các công cụ giúp bạn duy trì khả năng truy cập đến mục tiêu, sau khi đã chiếm được quyền kiểm soát hệ thống và đánh cắp các thông tin quan trọng được lưu trữ trong đó.
Ví dụ, có rất nhiều OS Backdoor và Web Backdoor, cũng như các công cụ khác nhau để đóng gói các lưu lượng gửi đi ra ngoài trong các giao thức mà thường không được Filter trong phân loại này. Một công cụ "cổ truyền" nhưng hiệu quả biết bao ! Đó chính là netcat (ncat).
Netcat là một công cụ thực sự linh hoạt cho phép bạn thực hiện giao tiếp truyền tải giữa Client-Server. Netcat là công cụ mà tùy thuộc vào khả năng sáng tạo của bạn, nó có thể trở thành công cụ với chức năng như thu thập thông tin phiên bản HTTP (banner grab), chuyển các tập tin từ một máy tính này đến máy tính khác và nhiều thứ nữa.
Phân loại tiếp theo là Reverse Engineering (Dịch ngược mã nguồn), tập hợp tất cả các công cụ giúp cho bạn có thể debug hay phân tích mã nguồn nhị phân. Để debug mã nguồn nhị phân, chúng ta có các công cụ như ollydbgor, edb-debugger.
Công cụ đầu tiên là một chương trình debug khá mạnh mẽ nhưng nó phải được chạy thông qua chương trình giả lập Wine, điều đó cho thấy rằng nó thiết kế ra chỉ để chạy trên các hệ điều hành Windows. Vì lý do này, bạn có edb-debugger mặc dù còn khá mới mẻ nhưng vẫn hữu ích. Kế tiếp, là công cụ Radare2 (r2).
Đây là công dùng để reverse engineering cho tất cả những ai làm việc với hệ điều hành Unix, Linux. Radare2 không phải là một công cụ dễ sử dụng, học cách sử dụng nó khá khó nhưng một khi bạn biết cách sử dụng thì nó sẽ trở thành một công cụ thực sự hữu dụng. Nền tảng radare2 được hình thành bởi nhiều công cụ nhỏ như r2, Rabin, rasm hoặc rax.
r2-bt6
Mỗi công cụ nhỏ này cho phép bạn thực hiện nhiều việc khác nhau. Ví dụ, với radare2 bạn có thể kiểm tra shellcodes, reverse engineer mã nguồn nhị phân từ các nền tảng khác nhau như pe, elf, match0 và dex hoặc các lớp java, phân tích ảnh đĩa để thực hiện điều tra số (forensis), tìm kiếm các gadget để xây dựng payload ROP (Return Oriented Programming ), debug mã nguồn nhị phân, so sánh sự khác biệt giữa các tập tin nhị phân (bindiffing) hay patch binaries.
Tất cả điều này đều có thể mở rộng khả năng xử lý thông qua các plugins mà bạn tự lập trình bằng ngôn ngữ Python, Go, Perl, Javascript ...
Kế tiếp là phân loại Stress Testing (Kiểm tra hiệu năng), bạn có thể tìm thấy những công cụ khác nhau để kiểm tra hiệu năng của Network, ứng dụng Web, WLAN hay VoIP khi xử lý một lượng lớn lưu lượng. Ví dụ, với những công cụ này bạn có thể để mô phỏng tấn công từ chối dịch vụ - DoS.
Với các công cụ trong phân loại Hardware Hacking (Tấn công các thiết bị phần cứng) bạn có thể lập trình cho các thiết bị Arduino và cũng sẽ tìm thấy các công cụ khác nhau để lập trình cho Android như Android SDK và phân tích các ứng dụng Android với các công cụ nhưAPKTool và dex2jar
Forensic (Điều tra số) trong Kali là một phân loại rất tuyệt vời. Ở đây bạn có rất nhiều công cụ tập trung vào nhiều lĩnh vực điều tra số. Ví dụ, bạn có thể tìm thấy các công cụ để thực hiện điều tra mạng – network forensics, PDF forensics, RAM forensics và nhiều công cụ khác nữa.
Một công cụ được đánh giá cao trong phân loại này là Volatility – công cụ thu thập những chứng cứ dễ biến mất. Công cụ này được sử dụng để phân tích dữ liệu được lưu trữ trong Memory. Bạn có dùng Volatility để snapshot bộ nhớ RAM trong một thời điểm nhất định và Volatility sẽ trích xuất cho bạn rất nhiều thông tin thú vị.
Ví dụ, bạn có thể trích xuất tất cả các tiến trình đang chạy trong một thời điểm, các socket đang mở và các kết nối mạng hiện thời, LM/NTLM hash và LSA secrets, cùng nhiều thông tin khác. Nếu bạn muốn thử nghiệm chương trình này, Volatility hiện tại đang cung cấp cho bạn rất nhiều Images bộ nhớ RAM sẵn có với các dữ liệu thú vị để bạn có thể thử nghiệm trích xuất (http://code.google.com/p/volatility/wiki/PublicMemoryImages).
Cuối cùng, bạn có hai phân loại là Reporting Tools và System Services. Trong phầnReporting Tools (Các công cụ dành cho việc báo cáo), như tên gọi của nó, bạn có thể tìm thấy các công cụ để giúp bạn tạo ra những bản báo cáo sau khi hoàn tất công việc đánh giá bảo mật, dựa trên các kết quả mà bạn đã tìm thấy.
Ví dụ, công cụ recordMyDesktop, nhiệm vụ đơn giản của nó chính là tạo ra các File video ghi lại những hoạt động của bạn trên máy tính.
Một công cụ quan trọng khác không kém là TrueCrypt. Thậm chí nó không liên quan trực tiếp tới việc lập các tài liệu báo cáo, là một chuyên gia đánh giá bảo mật bạn luôn phải thực sự cẩn thận với nơi lưu trữ các kết quả đánh giá bảo mật của bạn. TrueCrypt cung cấp cho bạn khả năng lưu trữ an toàn các kết quả đánh giá bảo mật và mã hóa để không ai có thể đọc chúng ngoài bạn.

Trong phân loại System Services (Các dịch vụ hệ thống) có các dịch vụ khác nhau mà bạn có thể start/stop/restart chúng. Ví dụ, bạn có thể start dịch vụ Apache hay dịch vụ MySQL server bên trong phân loại này.

Wednesday, 24 September 2014

Brainfuck là gì?

ref:
Brainfuck là một ngôn ngữ lập trình được rất ít người biết đến. Nó được thiết kế để thử thách cũng như làm trò giải trí cho các lập trình viên và không thích hợp cho người mới tập. Trong một số tài liệu, tên của ngôn ngữ này được viết là brainf*ck hay brainfsck, không được viết hoa dù brainfuck là một danh từ riêng.
Bao gồm 8 kí tự:
   > :Đẩy con trỏ qua ô nhớ tiếp theo ( ô nhớ bên phải).
   < :Đẩy con trỏ về ô nhớ trước ( ô nhớ bên trái).
   + :Tăng giá trị của ô nhớ hiện tại 1 đơn vị.
   - :Trừ giá trị của ô nhớ hiện tại 1 đơn vị.
   . :Trả về giá trị của ô nhớ hiện tại theo mã ASCII.
   , :Đọc giá trị input và lưu vào ô nhớ hiện tại.
   [ :Nhảy đến mã lệnh sau kí tự ] nếu ô nhớ hiện tại bằng 0.
   ] :Nhảy về kí tự [ nếu ô nhớ hiện tại khác không.
       (Cặp kí tự [ ] thực hiện cấu trúc lặp.)

Xem thêm: http://vi.wikipedia.org/wiki/Brainfuck

Decode Online:
http://brainfuck.tk/

http://www.muppetlabs.com/~breadbox/bf/


Convert JSFuck to normal JS


Many of you already know JSFuck. For those who don't, it's a script that basically turns any JavaScript code into something written using only []()!+.
  • Input: A string with valid JSFuck code.
  • Output: A string with the regular JavaScript code that has been previously JSFucked to generate the input.
Answer:

Run in console of your browser
alert(/.+(?=\n})/.exec(eval(prompt().slice(0,-2))))

ref:
http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html?utm_content=buffer489d0&utm_source=buffer&utm_medium=twitter&utm_campaign=Buffer

http://codegolf.stackexchange.com/questions/28714/convert-jsfuck-to-normal-js


Monday, 28 July 2014

APK Tool


https://www.youtube.com/watch?v=WIxHdc0BNzw

http://www.mediafire.com/download/vdnb9mq6t1yn0ho/AndroidPackageKit+Reverse+Engineer.rar

Tuesday, 24 December 2013

[Link]Top 10 website lưu trữ thông tin lỗ hổng bảo mật.

=======================================================
Nguồn: forum.whitehat.vn
=======================================================
http://www.exploit-db.com/
Đây là nơi lưu trữ dữ liệu về các exploit luôn được update một cách nhanh nhất .Ứng với mỗi exploit là công cụ và mã khai thác đi kèm được thử nghiệm bởi các chuyên gia hay teste.
Các exploit được liệt kê dưới dạng “ CVE-mã số “.
Cấu trúc, phân loại exploit:
Remote exploit.
Local exploit
Web application
Dos/Poc
Shellcode
Website được duy trì bởi đội ngũ các tình nguyện viên có kiến thức về bảo mật.

http://1337day.com/
website là cơ sở dữ liệu cuối lưu trữ các exploit và mã khai thác các exploit này.
Điều đặc biệt đây lại là nơi mua bán các exploit.
Cấu trúc,phân loại exploit:

Highlighted
Private
Remote exploit.
Local exploit
Web application
Dos/Poc
Shellcode

http://securityvulns.com/
Đây là website lưu trữ thông tin an ninh hàng đầu của Nga có hơn 50.000 lượt người truy cập mỗi tháng, 4000 thuê bao tin tức và hàng nghìn các thuê bao RSS theo dõi.Hiển thị dưới 2 thứ tiếng Anh và Nga.
Chủ đề về các thiết bị máy tính, phần mềm (hệ thống hoạt động, phần mềm sao lưu, tường lửa, phát hiện và phòng chống xâm nhập, VPN, máy quét an ninh, phần mềm chống virus, phần mềm PKI), giấy chứng nhận SSL, hệ thống quét tự động và vá, dịch vụ an ninh, thiết bị viễn thông và phần mềm.

http://www.securityfocus.com/
Website tâp trung vào một vài lĩnh vực chings có tầm quan trọng lớn đối với cộng đồng bảo mật.
BugTraq: danh sách chi tiết các cuộc thảo luận, các lỗ hổng bảo mật máy tính.
The SecurityFocus Vulnerability Database: cung cấp cho các chuyên gia bảo mật các thông tin cập nhậtvề các lỗ hổng cho tất cả các nền tảng và dịch vụ.
SecurityFocus Mailing Lists: cho phép các thành viên của cộng đồng bảo mật thảo luận các vấn đề bảo mật.

http://www.osvdb.org/


http://www.securiteam.com/
Đây là một website trung tâm chứa tất cả các lỗ hổng bảo mật,công cụ mã khai thác thu thập từ các kênh của hacker.

http://secunia.com/advisories/
website cam kết loại bỏ các lỗ hổng bảo mật bằng phương pháp xử lí các mối đe dọa, các biện pháp bảo mật phức tạp.

http://insecure.org/sploits_all.html
Website cung cấp tin tứcvà hàng loạt các thông tin bảo mật có ích cho tin tặc.

http://zerodayinitiative.com/advisories/published/
Website lập ra với mục đích thúc đẩy việc nghiên cứu của các chuyên gia bảo mật cũng như định giá các exploit zero day.
Tất cả các exploit zero day được nghiên cứu kỹ trong phòng thí nghiệm trước khi đưa ra public cho xã hội.
Xác định thông tin danh tính của nhóm nghiên cứu phát hiện ra các lỗ hổng zero day chưa có bản vá đảm bảo quyền lợi về bản quyền cho họ cũng như vấn đề tài chính.

http://nmrc.org/pub/index.html

website mang tính chất của nhóm hacker mũ nâu đại diện cho cả mũ đen và mũ trắng nơi lưu trữ thông tin các exploit.
Hiện website bị liệt trong blacklist của một số tổ chức.

Ngoài ra còn có trang search vuln Wordpress:

Tuesday, 22 October 2013

[HTML 5] Tìm hiểu về WebSocket trong HTML 5

=======================================
 Nguồn: Intenet
=======================================

WebSocket

1. WebSocket là gì?

WebSoket là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng cách sử dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng vào bất kì loại ứng dụng nào.
Dữ liệu truyền tải thông qua giao thức HTTP (thường dùng với kĩ thuật Ajax) chứa nhiều dữ liệu không cần thiết trong phần header. Một header request/response của HTTP có kích thước khoảng 871 byte, trong khi với WebSocket, kích thước này chỉ là 2 byte (sau khi đã kết nối).
Vậy giả sử bạn làm một ứng dụng game có thể tới 10,000 người chơi đăng nhập cùng lúc, và mỗi giây họ sẽ gửi/nhận dữ liệu từ server. Hãy so sánh lượng dữ liệu header mà giao thức HTTP và WebSocket trong mỗi giây:
- HTTP: 871 x 10,000 = 8,710,000 bytes = 69,680,000 bits per second (66 Mbps)
- WebSocket: 2 x 10,000 = 20,000 bytes = 160,000 bits per second (0.153 Kbps)
Như bạn thấy chỉ riêng phần header thôi cũng đã chiếm một phần lưu lượng đáng kể với giao thức HTTP truyền thống.

2. Giao thức bắt tay của WebSocket

Để thực hiện kết nối, client phải gửi một WebSocket handshake request đến server. Server sẽ gửi trả lại WebSocket handshake response như bên dưới:
Client request:
GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://example.com
Server response: (Server Architecture)
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Để xác nhận việc kết nối, client sẽ gửi một giá trị Sec-WebSocket-Key được mã hóa bằng Based64 đến server. Sau đó bên server sẽ thực hiện:
- Nối thêm chuỗi cố định là "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" vào Sec-WebSocket-Key để được chuỗi mới là "x3JJHMbDL1EzLkh9GBhXDw==258EAFA5-E914-47DA-95CA-C5AB0DC85B11".
- Thực hiện mã hóa SHA-1 chuỗi trên để được:
 "1d29ab734b0c9585240069a6e4e3e91b61da1969".
- Mã hóa kết quả vừa nhận được bằng Base64 để được:
"HSmrc0sMlYUkAGmm5OPpG2HaGWk=".
- Gửi response lại client kèm với giá trị Sec-WebSocket-Accept chính là chuỗi kết quả vừa tạo ra.
Client sẽ kiểm tra status code (phải bằng 101) và Sec-WebSocket-Accept xem có đúng với kết quả mong đợi không và thực hiện kết nối.

3.      WebSocket với Node.js và Socket.IO

Node.js đang là một nền tảng được xây dựng trên Chrome's JavaScript runtime để tạo các ứng dụng network với ngôn ngữ javascript. Như vậy, javascript không bị giới hạn bên trong trình duyệt và ở phía client. Việc sử dụng javascript làm server giúp lập trình viên không cần sử dụng các ngôn ngữ Server-Side như Perl, PHP, ASP.NET, Python, JSP,... mà còn giúp họ tận dụng được những thế mạnh của javascript.
Download và cài đặt: http://nodejs.org/#download .
Nếu bạn sử dụng Windows như tôi, có thể download trực tiếp tại:
Sau đó cài mở cửa sổ console và cài đặt Socket.io bằng lệnh sau:
npm install socket.io

4.      Tìm hiểu về Socket.IO

Với Node.js, bạn chỉ cần biết vài hàm cơ bản như requires() để import thư viện. Công việc c&ogr ave;n lại, chỉ cần dùng Socket.IO nên bạn cần phải tìm hiểu về thư viện này tại đây: http://socket.io/#how-to-use.
Nếu lười tìm hiểu, bạn có thể xem qua vài dòng lý thuyết dưới đây:
- Server: tạo một đối tượng socket bằng phương thức listen(port). Phương thức này chờ đợi một yêu cầu kết nối từ client.
- Client: Kết nối đến server bằng phương thức connect(url,{port: server_port}).
- Socket.IO cung cấp 3 event chính là connect, message và disconnect. Chúng được kích hoạt khi client/server:
    + connect: tạo kết nối
    + message: nhận được thông điệp
    + disconnect: ngắt kết nối
Ví dụ:
socket.on("message", function(msg){
    // console.log("Received: "+ msg);
 });

- Để gửi dữ liệu, ta dùng phương thức send().Dữ liệu có thể là đối tượng (được chuyển thành chuỗi json) và sẽ nhận được qua sự kiện message.
Ví dụ: socket.send("Hello world");
- Socket.IO có thể gửi và nhận các event tự tạo với phương thức emit(). Hai phía gửi và nhận phải biết được tên của event đó để thực hiện giao tiếp:
Ví dụ:
// send:
socket.emit("hello",{msg: "welcome");
// receive:
socket.on("hello", function (data) {
            console.log(data);
           }
        );

1.1.5.      Ví dụ

Trong ví dụ này, tôi sẽ tạo một ứng dụng cho phép client gửi các chuỗi biểu thức toán đến server. Server sẽ tính kết quả và trả về cho client.

Server:

Tạo một tập tin server.js với nội dung sau:
var io = require('socket.io');
 var socket = io.listen(5555);
socket.sockets.on('connection',function(socket){           
        socket.on('message', function(expr){
            console.log('Received expression from client ',expr);
            // catch error for bad expression          
            try{
                socket.send(eval(expr));
            }catch(err){
                socket.emit("error",err.message);
            }
        });               
        socket.on('disconnect', function(){
            // console.log('Disconnected');
        });
});
Sau đó bạn chạy server bằng cách vào cửa sổ console gõ lệnh (:
node [path to js file]
Do tôi chuyển đến thư mục chứa file js nên chỉ cần gõ:
node server.js
Client:
<html>   
    <head>
    <title>WebSocket Client</title>
;   <script src="http://localhost:5555/socket.io/socket.io.js "></script>
    <script>
    window.onload = function(){
        var input = document.getElementById('input');
        var output = document.getElementById('output');
        var socket = io.connect('localhost',{port: 5555});
        socket.on("connect",function(){
            console.log("Connected to the server");
        });
        socket.on('message',function(data) {           
            output.innerHTML = '=' + data;         
        });       
        socket.on('error', function (data) {
            console.log("error:",data);
           }
        );              
        window.sendMessage = function(){           
             socket.send(input.value);
        };     
    } 
    </script>
    </head>
    <body>
        <input type='text' id='input' />
        <span id='output'></span>
        <br/>
        <input type='button' id='send' value='calc' onclick='sendMessage();' />        
    </body>
</html>

Kết quả:


Monday, 21 October 2013

[HTML 5] Tìm hiểu Web SQL Database

===========================================
 Nguồn: internet
===========================================
Web SQL Database là một công nghệ kết hợp giữa trình duyệt và SQLite  để hỗ trợ việc tạo và quản lý database ở phía client. Các thao tác với database sẽ được thực hiện bởi javascript và sử dụng các câu lệnh SQL để truy vấn dữ liệu.

1. Giới thiệu

Lợi ích của SQLite là có để được tích hợp vào các ứng dụng với một thư viện duy nhất để truy xuất được database. Chính vì vậy, bạn có thể sử dụng nó làm cơ sở dữ liệu cho những ứng dụng nhỏ và không cần thiết cài đặt bất kì phần mềm hoặc driver nào. Hiện tại Web SQL Database được hỗ trợ trong các trình duyệt Google Chrome, Opera và Safari.
Trong javascript, bạn sử dụng các phương thức chính sau để làm việc với Web SQL Database.
-          openDatabase: mở một database có sẵn hoặc tạo mới nếu nó chưa tồn tại.
-          transaction/readTransaction: hỗ trợ thực hiện các thao tác với database và rollback nếu xảy ra sai sót.
-          executeSql: thực thi một câu lệnh SQL.

2. Open Database

Phương thức này có nhiệm vụ mở một database có sẵn hoặc tạo mới nếu nó chưa tồn tại. Phương thức này được khai báo như sau:
Database openDatabase(
    in DOMString name,
    in DOMString version,
    in DOMString displayName,
    in unsigned long estimatedSize,
    in optional DatabaseCallback creationCallback
);
Tham số:
-          name: tên của database.
-          version: phiên bản. Hai database trùng tên nhưng khác phiên bản thì khác nhau.
-          displayname: mô tả.
-          estimatedSize: dung lượng được tính theo đơn vị byte.
-          creationCallback: phương thức callback được thực thi sau khi database mở/tạo.
Ví dụ tạo một database với tên “mydb” và dung lượng là 5 MB:
var db = openDatabase("mydb", "1.0", "My First DB", 5 * 1024 * 1024);

3. Transaction

Bạn cần thực thi các câu SQL trong ngữ cảnh của một transaction. Một transaction cung cấp khả năng rollback khi một trong những câu lệnh bên trong nó thực thi thất bại. Nghĩa là nếu bất kì một lệnh SQL nào thất bại, mọi thao tác thực hiện trước đó trong transaction sẽ bị hủy bỏ và database không bị ảnh hưởng gì cả.
Về database, bởi vì nó phụ thuộc vào từng trình duyệt nên vị trí này sẽ do mỗi trình duyệt quyết định. Thông thường thì các dữ liệu sẽ được lưu trong cùng thư mục với ứng dụng hoặc một thư mục dành riêng để lưu trữ dữ liệu cho mỗi ứng dụng.Chẳng hạn với Chrome thì bạn có thể xem trong thư mục sau:
C:\Documents and Settings\{USERNAME}\Local Settings\Application Data\Google\Chrome\User Data\Default\
Interface Database hỗ trợ hai phương thức giúp thực hiện điều này là transaction() và readTransaction().
Điểm khác biệt giữa chúng là transaction() hỗ trợ read/write, còn readTransaction() là read-only. Như vậy sử dụng readTransaction() sẽ cho hiệu suất cao hơn nếu như bạn chỉ cần đọc dữ liệu.
void transaction(
    in SQLTransactionCallback callback,
    in optional SQLTransactionErrorCallback errorCallback,
    in optional SQLVoidCallback successCallback
);

Ví dụ:
var db = openDatabase("mydb", "1.0", "My First DB", 5 * 1024 * 1024);
db.transaction(function (tx) {
  // Using tx object to execute SQL Statements
});

4. Execute SQL

executeSql() là phương thức duy nhất để thực thi một câu lệnh SQL trong Web SQL.
Nó được sử dụng cho cả mục đích đọc và ghi dữ liệu
void executeSql(
    in DOMString sqlStatement,
    in optional ObjectArray arguments,
    in optional SQLStatementCallback callback,
    in optional SQLStatementErrorCallback errorCallback
);

 Ví dụ 1:

Tạo bảng Customers và thêm hai dòng dữ liệu vào bảng này.
db.transaction(function (tx) {
  tx.executeSql("CREATE TABLE IF NOT EXISTS CUSTOMERS(id unique, name)");
  tx.executeSql("INSERT INTO CUSTOMERS (id, name) VALUES (1, 'peter')");
  tx.executeSql("INSERT INTO CUSTOMERS (id, name) VALUES (2, 'paul')");
});
Tuy nhiên cách thực thi SQL trên không được rõ ràng và có thể bị các vấn đề về bảo mật như SQL injection. Vì vậy tốt hơn bạn nên để các tham số cần truyền cho câu SQL trong một mảng và đặt vào làm tham số thứ 2 của phương thức executeSql(). Các vị trí trong câu SQL chứa tham số sẽ được thay thế bởi dấu ‘?’:
tx.executeSql("INSERT INTO CUSTOMERS (id, name) VALUES (?,?)", [1,"peter"]);
tx.executeSql("INSERT INTO CUSTOMERS (id, name) VALUES (?,?)", [2,"paul"]);

Ví dụ 2:

Hiển thị dữ liệu của bảng Customer lên trang web dưới dạng table:
db.readTransaction(function(tx){
    showCustomers(tx);
});
function showCustomers(tx)
{
    var table="",row="";
    var i;
    tx.executeSql("SELECT * FROM CUSTOMERS", [], function (tx1, results) {
    for (i=0;i < results.rows.length; i++){
        var customer=results.rows.item(i);
        row="<td>"+customer.id+"</td>";
        row+="<td>"+customer.name+"</td>";
        table+="<tr>"+row+"</tr>";
    }
    table="<table border='1'><th>Id</th><th>Name</th><tbody>"+table+"</tbody></table>";
    document.write(table);
    }, null);
}


Bạn có thể xem các database được tạo ra trong thẻ Resources của Chrome Developer Tools (Ctrl+Shift+I).
Ví dụ hoàn chỉnh
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var db = openDatabase("mydb", "1.0", "My First DB", 5 * 1024 * 1024);
db.transaction(function (tx) {
  tx.executeSql("CREATE TABLE IF NOT EXISTS CUSTOMERS(id unique, name)");
tx.executeSql("INSERT INTO CUSTOMERS (id, name) VALUES (?,?)", [1,"peter"]);
tx.executeSql("INSERT INTO CUSTOMERS (id, name) VALUES (?,?)", [2,"paul"]);
});
db.readTransaction(function(tx){
    showCustomers(tx);
});
function showCustomers(tx)
{
    var table="",row="";
    var i;
    tx.executeSql("SELECT * FROM CUSTOMERS", [], function (tx1, results) {
    for (i=0;i < results.rows.length; i++){
        var customer=results.rows.item(i);
        row="<td>"+customer.id+"</td>";
        row+="<td>"+customer.name+"</td>";
        table+="<tr>"+row+"</tr>";
    }
    table="<table border='1'><th>Id</th><th>Name</th><tbody>"+table+"</tbody></table>";

    document.write(table);
    }, null);
}
</script>
</head>
<body>
</body>
</html>