Python Forensics trong Linux

Mối quan tâm chính của các cuộc điều tra kỹ thuật số là bảo mật bằng chứng hoặc dữ liệu quan trọng bằng mã hóa hoặc bất kỳ định dạng nào khác. Ví dụ cơ bản là lưu trữ mật khẩu. Do đó, cần phải hiểu cách sử dụng hệ điều hành Linux để triển khai pháp y kỹ thuật số để bảo mật những dữ liệu có giá trị này.

Thông tin cho tất cả người dùng cục bộ chủ yếu được lưu trữ trong hai tệp sau:

  • /etc/passwd
  • etc/shadow

Cái đầu tiên là bắt buộc, lưu trữ tất cả các mật khẩu. Tệp thứ hai là tùy chọn và nó lưu trữ thông tin về người dùng cục bộ bao gồm cả mật khẩu được băm.

Các vấn đề nảy sinh liên quan đến vấn đề bảo mật lưu trữ thông tin mật khẩu trong một tệp mà mọi người dùng đều có thể đọc được. Do đó, mật khẩu băm được lưu trữ trong/etc/passwd, trong đó nội dung được thay thế bằng một giá trị đặc biệt "x".

Các băm tương ứng phải được tra cứu trong /etc/shadow. Các cài đặt trong/etc/passwd có thể ghi đè các chi tiết trong /etc/shadow.

Cả hai tệp văn bản trong Linux đều bao gồm một mục nhập trên mỗi dòng và mục nhập bao gồm nhiều trường, được phân tách bằng dấu hai chấm.

Định dạng của /etc/passwd như sau -

Sr.No. Tên & Mô tả Trường
1

Username

Trường này bao gồm các thuộc tính của định dạng con người có thể đọc được

2

Password hash

Nó bao gồm mật khẩu ở dạng được mã hóa theo chức năng mã hóa Posix

Nếu mật khẩu băm được lưu dưới dạng empty, khi đó người dùng tương ứng sẽ không yêu cầu bất kỳ mật khẩu nào để đăng nhập vào hệ thống. Nếu trường này chứa giá trị không thể được tạo bởi thuật toán băm, chẳng hạn như dấu chấm than, thì người dùng không thể đăng nhập bằng mật khẩu.

Người dùng có mật khẩu bị khóa vẫn có thể đăng nhập bằng các cơ chế xác thực khác, ví dụ: khóa SSH. Như đã đề cập trước đó, giá trị đặc biệt "x"có nghĩa là mật khẩu băm phải được tìm thấy trong tệp bóng.

Các password hash bao gồm những điều sau -

  • Encrypted salt - Sự encrypted salt giúp duy trì khóa màn hình, ghim và mật khẩu.

  • Numerical user ID- Trường này biểu thị ID của người dùng. Nhân Linux chỉ định ID người dùng này cho hệ thống.

  • Numerical group ID - Trường này đề cập đến nhóm chính của người dùng.

  • Home directory - Các quy trình mới được bắt đầu với một tham chiếu của thư mục này.

  • Command shell - Trường tùy chọn này biểu thị trình bao mặc định sẽ được khởi động sau khi đăng nhập thành công vào hệ thống.

Pháp y kỹ thuật số bao gồm thu thập thông tin có liên quan để theo dõi bằng chứng. Do đó, id người dùng rất hữu ích trong việc duy trì hồ sơ.

Sử dụng Python, tất cả thông tin này có thể được tự động phân tích cho các Chỉ số Phân tích, tái tạo lại hoạt động hệ thống gần đây. Theo dõi đơn giản và dễ dàng với việc triển khai Linux Shell.

Lập trình Python với Linux

Thí dụ

import sys
import hashlib
import getpass

def main(argv):
   print '\nUser & Password Storage Program in Linux for forensic detection v.01\n' 
  
   if raw_input('The file ' + sys.argv[1] + ' will be erased or overwrite if 
         it exists .\nDo you wish to continue (Y/n): ') not in ('Y','y') : 
   sys.exit('\nChanges were not recorded\n') 
  
   user_name = raw_input('Please Enter a User Name: ')
   password = hashlib.sha224(getpass.getpass('Please Enter a Password:')).hexdigest()
   
   # Passwords which are hashed  
   try: 
      file_conn = open(sys.argv[1],'w') 
      file_conn.write(user_name + '\n') 
      file_conn.write(password + '\n') 
      file_conn.close() 
   except: 
      sys.exit('There was a problem writing the passwords to file!')
      
if __name__ == "__main__": 
   main(sys.argv[1:])

Đầu ra

Mật khẩu được lưu trữ ở định dạng thập lục phân trong pass_db.txtnhư thể hiện trong ảnh chụp màn hình sau đây. Các tệp văn bản được lưu để sử dụng thêm trong pháp y tính toán.