Este repositório contém o código para o artigo Dimva'18: "JAST: Detecção totalmente sintática de JavaScript malicioso (ofuscado)".
Observe que, em seu estado atual, o código é um POC e não uma API de produção totalmente pronta para produção.
Nossa implementação, que visa detectar amostras maliciosas de JavaScript, é dividida em vários pacotes com funcionalidades distintas:
Detecção de amostras de JavaScript, respeitando a gramática definida pela ECMA-International, detecção de JavaScript quebrado e arquivos não escritos em JavaScript.
Para usar esta ferramenta: Python3 <Path-of-JS/IS_JS.PY> --HELP .
Uma análise baseada em AST de amostras de JavaScript pode ser realizada. Este estudo é baseado em uma análise de frequência dos n-gramas presentes nos arquivos considerados.
Se você usa o JAST para pesquisa acadêmica, é altamente encorajado a citar o seguinte artigo:
@inproceedings{fass2018jast,
author="Fass, Aurore and Krawczyk, Robert P. and Backes, Michael and Stock, Ben",
title="{textsc{JaSt}: Fully Syntactic Detection of Malicious (Obfuscated) JavaScript}",
booktitle="Proceedings of the International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment~(DIMVA)",
year="2018"
}
O JavaScript é um idioma de script de navegador criado inicialmente para aprimorar a interatividade dos sites e melhorar sua facilidade de uso. No entanto, à medida que descarrega o trabalho para o navegador do usuário, ele pode ser usado para se envolver em atividades maliciosas, como mineração de criptografia, ataques de download de drive-by ou redirecionamentos para sites que hospedam software malicioso. Dada a prevalência de scripts tão nefastos, a indústria antivírus aumentou o foco em sua detecção. Os atacantes, por sua vez, fazem uso crescente de técnicas de ofuscação, de modo a dificultar a análise e a criação das assinaturas correspondentes. No entanto, essas amostras maliciosas compartilham semelhanças sintáticas em nível abstrato, que permitem ignorar a ofuscação e detectar variantes de malware desconhecidas.
Neste artigo, apresentamos o JAST, uma solução de baixa sobrecarga que combina a extração de características da árvore de sintaxe abstrata com um classificador de floresta aleatório para detectar instâncias maliciosas de JavaScript. É baseado em uma análise de frequência de padrões específicos, que são preditivos de amostras benignas ou maliciosas. Embora a análise seja totalmente estática, ela gera uma alta precisão de detecção de quase 99,5% e tem uma baixa taxa falsa negativa de 0,54%.
Este é um trabalho de pesquisa e sua intenção é publicar os resultados, tornar os resultados verificáveis e promover a segurança da informação. Ele não reflete necessariamente a política ou posição oficial do Bundesamt für Sicherheit em Der InformationStechnik (BSI). Embora o autor tenha feito todos os esforços para garantir que as informações nesta publicação estivessem corretas, o autor não assume e, por meio deste, se isenta de qualquer responsabilidade a qualquer parte por qualquer perda, dano ou interrupção causado por erros ou omissões, se tais erros ou omissões resultam de negligência, acidente ou qualquer outra causa.
Die von Dem Benutzer AUF Github Bereitgestellten INALTE SPIEGELN NICHT DIE MEINUNG DES BSI MAIS.
Die Verwendung der Bereitgestellten INALTE GESCHIEHT AUF EIGENE GEFAHR DES ANWERS. Eine haftung für die richtigkeit, vollständigkeit und aktuualität dieser inalte kann seitens des bsi nicht übernommen werden.
Das bsi é nicht verrantwortlich und übernimmt keinerlei haftung für schäden, unter andrerem für direkte, indirekte, zufälllige, vorab konkret zu melhorimende folgessert, dienretblich shurch diken diewend a direna diejurwend a dique de diada, a diada da diada, a diada, a diarada, a sonda, a sonda, a diada.
Esprima, criado e mantido por Ariya Hidayat, foi usado para executar a análise lexical e sintática dos arquivos JavaScript.
"Copyright JS Foundation e outros colaboradores, https://js.foundation/
Redistribuição e uso em formulários de origem e binária, com ou sem modificação, são permitidos, desde que as seguintes condições sejam atendidas:
Este software é fornecido pelos detentores de direitos autorais e colaboradores "como está" e quaisquer garantias expressas ou implícitas, incluindo, entre outros, as garantias implícitas de comercialização e condicionamento físico para um determinado objetivo. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DANO."