É possível ocultar um alias malicioso no Bash no Linux?

9

É possível ocultar a existência de um alias malicioso no Bash em um sistema Linux e executá-lo pelo usuário sem o seu conhecimento?

Pausado até novo aviso.
fonte

Respostas:

13

É possível fazer isso anexando o alias existente ao malicioso e usando o movimento do cursor para ocultá-lo se o aliascomando for usado para exibir definições de alias. Não é um método perfeitamente infalível, mas pode passar despercebido por um tempo. Tubulação aliasatravés hdirá mostrar-lhe se existem seqüências de escape (movimento do cursor) em seus aliases. Aqui está uma prova de conceito de como um comando malicioso pode ser inserido em um alias:

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)
    }'
  • O sedcomando modifica um arquivo chamado "aliases" no lugar - um script real desse tipo iria para a garganta e modifica um arquivo de script real para que o alias malicioso seja ativado na próxima vez em que for executado.
  • A parte maliciosa deste exemplo apenas toca a campainha do terminal para que você saiba que está funcionando.
  • O comando originalmente aliasado será executado com o conteúdo de hidecomo argumento, portanto é possível que você possa obter um erro semelhante ao relatado nesta pergunta . Pode ser possível reverter as partes originais e mal-intencionadas para afetar isso, embora isso interfira nos argumentos fornecidos ao alias. É feita uma tentativa no script acima para marcar o final dos argumentos com --.
  • Em vez de encadeamento as peças originais e mal-intencionados com &&, você poderia tubo de um para o outro e fazer o script malicioso (representado acima pelo simples echocomando) funcionam como um stdinpara stdoutpass-through, quer para modificar os dados como ele está atravessando ou para esconder a sua existência ainda mais por não interferir com outro redirecionamento
  • Outra possibilidade seria incluir o alias original dentro do script mal-intencionado, o que poderia remover a sequência de movimentos do cursor da lista de argumentos e passar o restante para o original.
  • Escolhi arbitrariamente os registros 3 e 4, um código mais inteligente poderia ter como aliases específicos, mas eles precisam ser adjacentes (ou o movimento do cursor pode ser mais complexo).
  • A hidesequência pode ser modificada para incluir diferentes movimentos do cursor e o texto do alias original, para que o aliascomando pareça mostrar o alias não modificado em vez de ocultá-lo junto com a parte maliciosa.
  • Para testá-lo conforme escrito, você precisa ter pelo menos quatro aliases ativos, execute esse script e, em seguida, forneça o arquivo resultante . aliases. Em seguida, você pode tentar usar o alias afetado e ver como fica quando o faz alias|hd.
  • Sem dúvida, isso poderia ser reescrito de cem maneiras diferentes - tudo melhor.
  • Quão realista é esse tipo de ameaça? Eu não tenho idéia. Mas se eu posso fazer isso ...
Pausado até novo aviso.
fonte