Thứ Hai, 23 tháng 6, 2014

cấu trúc password và cách xem trong linux

let me explain first what is etc/Passwd is? Where it is used?
In Linux/Unix operating system etc/Passwd is place where all passwords are stored in encrypted format. To be more clear, /etc/passwd file stores essential information, which is required during login i.e. user account information. /etc/passwd is a text file, that contains a list of the system's accounts, giving for each account some useful information like user ID, group ID, home directory, shell, etc. It should have general read permission as many utilities, like ls use it to map user IDs to user names, but write access only for the superuser (root).

UNDERSTANDING FIELDS IN /ETC/PASSWD

The /etc/passwd contains one entry per line for each user (or user account) of the system. All fields are separated by a colon (:) symbol. Total seven fields as follows.
Generally, passwd file entry looks as follows (click to enlarge image):





  1. Username
    : It is used when user logs in. It should be between 1 and 32 characters in length.
  2. Password: An x character indicates that encrypted password is stored in /etc/shadow file.
  3. User ID (UID): Each user must be assigned a user ID (UID). UID 0 (zero) is reserved for root and UIDs 1-99 are reserved for other predefined accounts. Further UID 100-999 are reserved by system for administrative and system accounts/groups.
  4. Group ID (GID): The primary group ID (stored in /etc/group file)
  5. User ID Info: The comment field. It allow you to add extra information about the users such as user's full name, phone number etc. This field use by finger command.
  6. Home directory: The absolute path to the directory the user will be in when they log in. If this directory does not exists then users directory becomes /
  7. Command/shell: The absolute path of a command or shell (/bin/bash). Typically, this is a shell. Please note that it does not have to be a shell.

TASK: SEE USER LIST

/etc/passwd is only used for local users only. To see list of all users, enter:
$ cat /etc/passwd
To search for a username called tom, enter: 
$ grep tom /etc/passwd


/ETC/PASSWD FILE PERMISSION

The permission on the /etc/passwd file should be read only to users (-rw-r--r--) and the owner must be root:
$ ls -l /etc/passwd
Output:
-rw-r--r-- 1 root root 2659 Sep 17 01:46 /etc/passwd

READING /ETC/PASSWD FILE

You can read /etc/passwd file using the while loop and IFS separator as follows:
#!/bin/bash# seven fields from /etc/passwd stored in $f1,f2...,$f7# while IFS=: read -r f1 f2 f3 f4 f5 f6 f7do echo "User $f1 use $f7 shell and stores files in $f6 directory."done < /etc/passwd


YOUR PASSWORD IS STORED IN /ETC/SHADOW FILE

Your encrpted password is not stored in /etc/passwd file. It is stored in /etc/shadow file. In the good old days there was no great problem with this general read permission. Everybody could read the encrypted passwords, but the hardware was too slow to crack a well-chosen password, and moreover, the basic assumption used to be that of a friendly user-community.
Almost, all modern Linux / UNIX line operating systems use some sort of the shadow password suite, where /etc/passwd has asterisks (*) instead of encrypted passwords, and the encrypted passwords are in /etc/shadow which is readable by the superuser only.

Ẩn file với streams mà windows không phát hiện ra

Windows has NTFS and FAT file systems, when NTFS is used, Alternative Data Streams can be created to hide malware within standard Windows Operating System files.  ADS cannot be detected using Explorer or Task Manager, both the executable and the processes are undetectable to the OS.  ADS was created to maintain compatibility with the MAC file system called HFS.

Step 1 – Create an ADS directory

Copy calc.exe and notepad.exe into this ADS directory – as you’ll be hiding the notepad.exe inside the calculator to prove how this works.



Step 2 – Check the filesize of both calc and notepad

Check the filesizes of both calc.exe and notepad.exe before you start, so that you can see the OS is unable to report the hidden or secret file inside calc.exe.



Step 3 – INJECTION SYNTAX (Inject notepad into calc)

type c:\windows\system32\notepad.exe > calc.exe: notepad.exe

or the safer option

type c:\ADS\notepad.exe > c:\ADS\calc.exe:notepad.exe



Step 4 – Recheck filesizes of calc

Notice how Windows can not detect the change in filesize.


Step 5 – Execute malware with “Start”

start c:\ads\calc.exe



Calc will run.

 Step 6 – Use taskmanager to check only calc.exe is shown

Step 7 – Download a special tool to enumerate Alternative NTFS data streams.



nstall streams.  Run a new cmd prompt, change to streams dir.

streams c:\ADS\calc.exe




Streams displays calc.exe:notepad.exe:$DATA 193546.
This is showing that calc.exe has notepad hidden inside it, but Windows can’t detect that.
The malware datasize is 193546.
$DATA is the name of the attribute or the PRIMARY DATA STREAM.
We are hiding programmes in the SECONDARY data stream – which uses the : as a separator.  Calc.exe:notepad.exe = the secret stream is notepad.exe.  The syntax to hide hacking malware is:

type c:\malware.exe > c:\windows\system32\calc.exe:malware.exe


Step 8 – How to hide Calc.exe inside a JPEG file

We will hide the calc program inside a JPEG.  ADS7.jpg was created for this article.

type c:\ads\calc.exe > ads7.jpg:calc.exe



Double Check our Injection has worked

Streams c:\ads\ads7.jpg




Streams reports that :calc.exe is hidden inside a secondary data stream.

We’ve INJECTED calc.exe into a very small JPEG file (65K).




So why is this important?

It’s important to realise that Windows 7 cannot detect secondary data streams – so rootkits and trojans can be hidden within windows system files or small photos.

So what?

You have created “malware” by hiding one program inside a windows system file or even a small photo.

Note how windows can’t detect the change in filesize or the running process.  This protects the hacker from discovery.

Only NTFS has ADS capabilities.

If you transfer a file from NTFS to FAT32 you’ll automatically destroy the Alternative Data Stream.

ADS CANNOT BE DISABLED IN WINDOWS.

The countermeasure is Tripwire – which runs a hash against the files – system file hashing will detect ADS.  That’s why hashes are so important as a safety net.

Thứ Hai, 16 tháng 6, 2014

9 commands to check hard disk partitions and disk space on Linux

1. fdisk

Fdisk is the most commonly used command to check the partitions on a disk. The fdisk command can display the partitions and details like file system type. However it does not report the size of each partitions.

Each device is reported separately with details about size, seconds, id and individual partitions.

2. sfdisk

Sfdisk is another utility with a purpose similar to fdisk, but with more features. It can display the size of each partition in MB.


3. cfdisk

Cfdisk is a linux partition editor with an interactive user interface based on ncurses. It can be used to list out the existing partitions as well as create or modify them.
Here is an example of how to use cfdisk to list the partitions.


Cfdisk works with one partition at a time. So if you need to see the details of a particular disk, then pass the device name to cfdisk.
$ sudo cfdisk /dev/sdb

4. parted

Parted is yet another command line utility to list out partitions and modify them if needed.
Here is an example that lists out the partition details.


5. df

Df is not a partitioning utility, but prints out details about only mounted file systems. The list generated by df even includes file systems that are not real disk partitions.
Here is a simple example


5. df

Df is not a partitioning utility, but prints out details about only mounted file systems. The list generated by df even includes file systems that are not real disk partitions.
Here is a simple example


To display only real disk partitions along with partition type, use df like this


Note that df shows only the mounted file systems or partitions and not all.

6. pydf

Improved version of df, written in python. Prints out all the hard disk partitions in a easy to read manner.


Again, pydf is limited to showing only the mounted file systems.

7. lsblk

Lists out all the storage blocks, which includes disk partitions and optical drives. Details include the total size of the partition/block and the mount point if any.
Does not report the used/free disk space on the partitions.


If there is no MOUNTPOINT, then it means that the file system is not yet mounted. For cd/dvd this means that there is no disk.
Lsblk is capbale of displaying more information about each device like the label and model. Check out the man page for more information

8. blkid

Prints the block device (partitions and storage media) attributes like uuid and file system type. Does not report the space on the partitions.


9. hwinfo

The hwinfo is a general purpose hardware information tool and can be used to print out the disk and partition list. The output however does not print details about each partition like the above commands.

Hướng dẫn lưu chuyển email giữa 2 tài khoản Gmail

Việc sở hữu nhiều tài khoản email đã không còn là chuyện quá lạ lẫm trong cộng đồng người dùng máy tính nói chung và các doanh nhân nói riêng. Nhiều email cho phép bạn phân chia dễ dàng theo từng mục đích: email cho gia đình và bạn bè, email cho đối tác, email cho tình yêu bé nhỏ…
 
Tuy nhiên, việc quản lý nhiều email không phải lúc nào cũng dễ dàng và việc đưa các bức thư điện tử về một mối sẽ giúp cho bạn tiết kiệm rất nhiều thời gian đăng nhập và kiểm tra ở từng hòm thư một. Dưới đây là một số bước cơ bản để “tụ tập” tất cả các email từ nhiều hòm thư Gmail về một mối:

Bước 1: Trước tiên, bạn hãy đăng nhập vào email cũ (hoặc email phụ) rồi nhấn vào Settings > Forwarding > POP và chọn Enable POP for all Mail. Sau đó nhấn vào nút Save Changes bên dưới.

Bước 2: Bạn hãy đăng nhập vào các tài khoản mà mình sẽ sử dụng chính và chọn Settings > Accounts > Add a mail account. 

Bước 3: Bạn hãy nhập các địa chỉ Gmail phụ của mình vào hộp nhập liệu và nhấn Next. 

Bước 4: Tiếp đó, bạn nhập mật khẩu của các tài khoản email phụ rồi chọn pop.gmail.com từ ô chọn POP Server. Sau đó bạn nhấn Add Account. 
Bước 5: Bạn sẽ được hỏi xem liệu có muốn gửi email sử dụng tên của các hòm thư phụ hay không. Mục này có nghĩa là nếu bạn có hòm thư chính là a@gmail.com và hòm thư phụ b@gmail.com và thiết lập ở chế độ cho phép thì các Email gửi từ a@gmail.com cũng có thể được coi như gửi từ b@gmail.com. Đây là tính năng khá tiện lợi nếu bạn muốn sử dụng tài khoản email mới nhưng vẫn muốn giữ liên lạc với bạn bè cũ bằng tài khoản email cũ một cách trực tiếp.

Bước 6: Bạn hãy nhập tên của các email phụ rồi chọn xem liệu mình có muốn hồi đáp thư đến bằng địa chỉ email phụ hay chính tùy ý. Nếu bạn quyết định sử dụng email chính để gửi/nhận thư, bạn có thể gửi kèm thông báo chuyển địa chỉ email tới những người mà bạn đang liên lạc bằng hòm thư phụ. 

Bước 7: Bước này rất đơn giản, bạn chỉ cần xác nhận mình là chủ nhân hợp pháp của các địa chỉ email phụ bằng cách nhấn vào Send Verification. Sau đó bạn hãy đăng nhập vào mỗi hòm thư phụ rồi lấy mã số xác nhận trong email được gửi đến, nhập vào hộp thoại hiện ra ở bước này và nhấn Verify là xong.

Bước 8: Công đoạn cuối cùng của bạn là ngồi nhìn Gmail tự động chuyển toàn bộ các thư sẵn có trong hòm thư phụ về tập trung vào hòm thư chính. Điều này đặc biệt quan trọng nếu bạn mới đăng kí một hòm thư chính mới. Nếu hòm thư phụ cũ lưu quá nhiều email thì việc chuyển đổi này có thể mất vài tiếng.

Các bước trên cũng có thể sử dụng để giúp bạn chuyển từ sử dụng email cũ sang email mới một cách thuận tiện: vừa giữ được các mối liên lạc cũ đồng thời duy trì được kho thư từ của mình. 

Thứ Năm, 12 tháng 6, 2014

Howto: Scan target for checking CVE, OSVDB database with NMAP

1. Download vulscan from http://flexydrive.com/n52wqgdaic0b
2. Extract it to /usr/share/nmap/script/
3. Scan target with script
nmap -sS -sV --script=vulscan/vulscan.nse 192.168.0.110
nmap -sS -sV --script=vulscan/vulscan.nse --script-args vulscandb=scipvuldb.csv 192.168.0.110

Using nmap to scan for DDOS reflectors

nmap -sU -A -PN -n -pU:19,53,123,161 -script=ntp-monlist,dns-recursion,snmp-sysdescr <target>
- ntp-monlist -> while any open NTP service can be used in a reflective DDOS attack the maximum amplification is achieved with NTP services that permit the monlist command to be executed. This script will do a check to see if monlist can be executed against an open NTP port.
- dns-recursion -> Normally public DNS servers will only answer DNS queries for which they are authoritative. A DNS server that permits and processes queries for names it is not authoritative are called recursive DNS servers and recursive DNS servers in most cases are misconfigured.
- nmp-sysdescr -> attempts to extract more information from the SNMP service.
- With the snmp-sysdescr script it will usually display more information which may tell you more about the device you are scanning

Thứ Năm, 5 tháng 6, 2014

Tài liệu link mediafire

Tài liệu học môn CCNA

tài liệu học Linux LPI-1 và Linux LPI-2 (Bo Sung)

Tài liệu tham khảo cho môn học hacker mũ trắng

Tài liệu tham khảo môn bảo mật mạng ACNS

Tài liệu học Mail Exchange 2007

Tài liệu học MCSA 70-290

Đề thi quốc tế

AutoIT

Khôi phục mật khẩu trên Router Cisco

Đặt vấn đề:

Khi cấu hình một router, người quản trị thiết bị thường đặt các mật khẩu để ngăn chặn việc truy nhập không hợp lệ vào thiết bị do mình quản lý. Ví dụ, để ngăn chặn việc truy nhập vào mode privileged từ đó đi đến các mode cấu hình sâu hơn ở bên trong, người quản trị có thể sử dụng enable password hoặc enable secret:

Router(config)#enable password vnpro (cấu hình enable pasword là vnpro)
Router(config)#enable secret cisco (cấu hình enable secret là cisco)

Hoặc thậm chí có thể đặt mật khẩu ngăn chặn đăng nhập không hợp lệ ngay từ cổng console:

Router(config)#line console 0
Router(config-line)#password vnpro
Router(config-line)#login

Việc đặt các mật khẩu như vậy là cần thiết nhằm đảm bảo một mức độ bảo mật cơ bản nhất cho thiết bị. Tuy nhiên, đôi lúc vì bất cẩn, người quản trị có thể đánh nhầm một vài ký tự khi khai báo mật khẩu hoặc có thể quên mất mật khẩu đăng nhập do đó không đăng nhập được vào thiết bị do mình quản lý. Trong trường hợp này, người quản trị cần phải thực hiện một số thao tác nhằm khôi phục lại mật khẩu cho thiết bị. Bài viết này sẽ trình bày nguyên lý cơ bản được sử dụng để khôi phục mật khẩu cho các router của tập đoàn Cisco, kèm theo đó là sự hướng dẫn cụ thể các thao tác để khôi phục mật khẩu trên các dòng router Cisco phổ biến hiện nay là các dòng 2600, 2800.

Nguyên lý cơ bản:
Việc khôi phục mật khẩu dựa trên việc can thiệp vào bước cuối cùng của tiến trình khởi động của router. Để can thiệp vào tiến trình này, người quản trị phải thực hiện thay đổi giá trị của một thông số kỹ thuật trên router có tên gọi là thanh ghi cấu hình (configuration register). Thanh ghi này bao gồm một chuỗi nhị phân 16 bit với mỗi bit đều mang một ý nghĩa, chức năng riêng. Thiết lập các giá trị 1 hay 0 cho các bit có thể ảnh hưởng đến tiến trình khởi động của router. Thanh ghi cấu hình thường được hiển thị dưới dạng số hexa (hệ đếm 16), ví dụ; 0x2102, 0x2142, 0x2100,.v.v… ( kí hiệu “0x” được sử dụng để chỉ ra đây là các số hexa). Ta xem xét tiến trình khởi động của router:

1. POST (Power On Self Test): Đây là bước đầu tiên, diễn ra ngay sau khi bật nguồn của router, quy trình POST sẽ kiểm tra toàn bộ phần cứng của router để đảm bảo các phần cứng hoạt động đúng.

2. Nạp chương trình bootstrap từ ROM vào RAM để chạy, chương trình này chịu trách nhiệm thực hiện quy trình nạp hệ điều hành cho router (IOS)

3. Nạp IOS (hệ điều hành của router) từ bộ nhớ Flash vào RAM để chạy.

4. Sau khi được nạp, IOS sẽ nạp file cấu hình startup-config từ bộ nhớ NVRAM vào bộ nhớ RAM thành file running-config và thực hiện file cấu hình này.

Tất cả các mật khẩu sau khi khai báo đều được lưu lại trong file cấu hình startup-config trên bộ nhớ NVRAM và vì thế sau khi file này được nạp và chạy thì các mật khẩu sẽ phát huy tác dụng. Do đó, để bỏ qua các mật khẩu thì phải điều khiển router bỏ qua file startup-config trong bước này và nạp vào một cấu hình trắng. Sử dụng cấu hình trắng và vào được các mode cấu hình sâu hơn, có thể chỉnh sửa hoặc xóa bỏ các mật khẩu đã lưu trong file cấu hình cũ, từ đó có thể sử dụng lại file cấu hình cũ trong lần khởi động tiếp theo nhưng với các mật khẩu đã được sửa lại theo ý của người quản trị.

Để thực hiện được việc này, cần phải thiết lập giá trị là 1 cho bit thứ 6 của thanh ghi cấu hình (tính từ phải sang trái, bit đầu tiên đứng ngoài cùng bên phải có số thứ tự là 0). Giá trị của cả thanh ghi khi đã thiết lập giá trị 1 cho bit số 6 thường được dùng là : 0x2142 , có ý nghĩa bỏ qua startup-config trong NVRAM khi khởi động. Bình thường, thanh ghi này có giá trị mặc định là 0x2102 (trong đó bit số 6 bằng 0 có ý nghĩa: sử dụng file startup-config trong NVRAM).

Các bước cụ thể khôi phục mật khẩu trên router Cisco các dòng 2600, 2800:

Đầu tiên, giả thiết router đã bị cấu hình sai mật khẩu hoặc mật khẩu bị quên dẫn đến đăng nhập thiết bị không thành công:
Ta tiến hành các bước như sau để khôi phục mật khẩu cho router:
1. Tắt công tắc router và sau khoảng 30s thì bật trở lại, khi router khởi động, màn hình sẽ hiển thị các dòng sau:
( Nhấn Ctrl + Break tại đây)

2. Ctrl +Break là tổ hợp phím ngắt có tác dụng đưa router vào một chế độ đặc biệt gọi là chế độ rommon. Tại chế độ rommon, router sử dụng hệ điều hành phụ trong bộ nhớ ROM để chạy chứ không sử dụng hệ điều hành chính IOS trong flash để chạy:

Lưu ý: Nhấn Ctrl + Break ngay khi bật router có thể làm đứng router. Tốt nhất là chờ nhấn ngắt khi router hiện thông báo về kích thước bộ nhớ chính. Ta cũng có thể nhấn Ctrl +Break trong 15 giây đầu tiên. Lưu ý rằng đối với các chương trình terminal khác nhau, tổ hợp phím ngắt có thể khác nhau. Chương trình terminal phổ biến nhất là Window Hyper Terminal sử dụng tổ hợp phím Ctrl+Break để ngắt.

3. Tại rommon, ta thực hiện lệnh đổi giá trị của thanh ghi cấu hình thành 0x2142.

4. Sau khi đổi xong giá trị của thanh ghi cấu hình, phải khởi động lại router. Trong rommon, lệnh khởi động lại router là lệnh reset.

5. Sau khi khởi động lại, router sau khi nạp xong IOS, sẽ bỏ qua không nạp cấu hình từ NVRAM để chạy nữa mà đi vào mode setup, cho phép ta sử dụng một cấu hình trắng để chạy.
Ta nhập phần trả lời là “no” để sử dụng cấu hình trắng. Khi sử dụng cấu hình trắng, ta đi vào được mode privileged của router, từ đó có thể tiếp tục đi vào các mode cấu hình sâu hơn để chỉnh sửa hoặc loại bỏ mật khẩu trong file cấu hình cũ.

6. Tiếp theo, copy file startup-config vào thành file running-config. Sau khi copy file startup-config vào, ta có thể thay đổi chỉnh sửa lại mật khẩu cũ nằm trên file này.
Ta thấy tên router đã được đổi từ tên mặc định là “Router” thành “Vnpro”. Như vậy, ta đã làm việc trên file cấu hình cũ và bỏ qua được mật khẩu.

7. Kế tiếp, ta chỉ việc xem mật khẩu nào cần chỉnh sửa hoặc loại bỏ để làm các thao tác chỉnh sửa, loại bỏ tương ứng. Ở đây, ví dụ mật khẩu cần sửa lại là enable password, sửa lại thành “vnpro”.
Sau khi sửa xong, nhớ lưu đè cấu hình lên câu hình cũ để từ nay về sau sử dụng mật khẩu mới.

8. Bước cuối cùng, ta phải sửa lại thanh ghi cấu hình về mặc định như cũ là 0x2102 để tiến trình khởi động sau này được diễn ra bình thường.
Thanh ghi cấu hình sau khi được sửa vẫn giữ nguyên giá trị 0x2142, ta phải khởi động lại router thì giá trị mới 0x2102 mới được sử dụng.
Trên đây là nguyên lý và các bước dùng để khôi phục mật khẩu lỗi hoặc bị quên cho router các dòng 2600, 2800 của hãng Cisco. Đối với các dòng khác có thể có biến đổi chút ít về cách thức và dòng lệnh nhưng nguyên tắc thì vẫn giống như vậy, có thể tham khảo thêm trong các tài liệu hướng dẫn đi kèm hoặc trên trang hỗ trợ của Cisco.