13일 전
자연어를 통해 쉘코드를 생성할 수 있을까? 실증적 연구
Pietro Liguori, Erfan Al-Hossami, Domenico Cotroneo, Roberto Natella, Bojan Cukic, Samira Shaikh

초록
소프트웨어 취약점을 이용하는 코드( exploits )를 작성하는 것은 공격적 보안 분석가들이 공격을 조사하고 예방하기 위해 수행하는 중요한 작업이다. 특히 쉘코드(shellcode)는 어셈블리어로 작성되기 때문에 시간이 오래 걸리고 기술적으로도 큰 도전 과제가 된다. 본 연구에서는 자연어로 기술된 설명만을 근거로 자동으로 쉘코드를 생성하는 문제를 해결하기 위해 신경망 기반 기계 번역(Neural Machine Translation, NMT)을 기반으로 한 접근법을 제안한다. 또한, 공개 데이터베이스에서 수집한 실제 Linux/x86 쉘코드의 어셈블리 코드 조각 3,200개로 구성된 새로운 데이터셋(Shellcode_IA32)을 활용한 실증 연구를 수행한다. 이 데이터셋은 자연어로 주석이 달려 있다. 더불어 NMT가 쉘코드를 생성할 때의 정확도를 평가하기 위한 새로운 평가 지표를 제안한다. 실증 분석 결과, NMT는 자연어로부터 높은 정확도로 어셈블리 코드 조각을 생성할 수 있으며, 많은 경우에 오류 없이 전체 쉘코드를 생성할 수 있음을 확인하였다.