
LOKI (Limited Obstructive Keyboard Impersonator) is a RDP File Transfer Tool Using Keypresses
Released as open source by NCC Group Plc - http://www.nccgroup.com/
Developed by Dave Spencer, david [dot] spencer [at] nccgroup [dot] com
http://www.github.com/nccgroup/Loki
Released under AGPL see LICENSE for more information
Loki(Limited Obstructive Keyboard Impersonator)에는 RDP 클라이언트가 내장되어 있으며, 테스터가 메모장이나 다른 텍스트 편집기에 파일을 수동으로 입력하는 능력을 활용합니다. 메모장 사용 시 핵심 문제는 이진 데이터를 입력할 수 없다는 것입니다. 이를 해결하기 위해 hex나 base64와 같은 여러 인코딩을 사용할 수 있지만, 문제는 반대쪽에서 이를 디코딩할 방법이 필요하다는 것입니다. 다행히 Internet Explorer에는 MIME HTML(.mht) 파일에 사용되는 base64 디코더가 내장되어 있습니다. Loki는 주어진 파일을 base64로 변환하고 입력 시뮬레이터(https://inputsimulator.codeplex.com/)를 사용하여 포커스된 텍스트 편집기에 .mht 파일을 입력합니다.
Loki는 Sleipnir(https://github.com/nccgroup/sleipnir) 및 Fenrir(https://github.com/nccgroup/fenrir)와 함께 사용할 수 있습니다.
초기 Loki 인터페이스는 매우 직관적이며 5개의 입력 필드와 2개의 체크 박스로 구성됩니다. “RDP 서버”와 “RDP 포트”는 필수 필드이며 RDP 서버에 연결하는 데 사용됩니다. RDP 게이트가 설치된 경우 “RDP 게이트웨이” 필드를 사용하여 주소를 지정할 수 있습니다. “Metasploit 서버” 및 “Metasploit 포트” 필드는 Fenrir와 함께 사용하기 위한 것입니다. NLA 체크 박스는 클라이언트가 네트워크 수준 인증(Network Level Authentication)을 사용할지 여부를 전환하고, 전체 화면 체크 박스는 클라이언트를 전체 화면 모드로 설정합니다.
연결되면 Loki 사용 인터페이스는 훨씬 더 간단해집니다. “Loki”라는 단일 드롭다운 메뉴와 하나의 옵션(send file)만 사용하며, send keys를 통해 파일을 전송합니다. 가장 먼저 할 일은 텍스트 편집기를 열고(포커스가 되었는지 확인) Loki -> Send File(sendkeys)을 선택하는 것입니다. 그러면 Loki가 두 가지 질문을 합니다:
네트워크가 특히 느린가요? 예를 선택하면 키 입력 사이의 시간이 10ms로 설정되고, 아니요를 선택하면 3ms가 사용됩니다.
원격 브라우저가 Internet Explorer인가요? 예를 선택하면 파일이 mht 파일의 일부로 전송되고, 아니요를 선택하면 다른 브라우저는 mht 형식을 지원하지 않으므로 파일이 삽입된 이미지의 일부로 전송됩니다.
원격 브라우저가 Internet Explorer인 경우 표시되는 형식은 mht입니다. 완료되면 파일을 filename.mht로 저장하고 IE로 연 다음 “웹 페이지, 완료(web page, complete)”로 다시 저장해야 합니다. 그러면 웹 페이지와 임의의 이름을 가진 두 개의 tmp 파일이 포함된 디렉터리가 생성됩니다. 두 파일 중 더 큰 파일의 확장자를 전송된 파일의 확장자로 변경해야 합니다. 예를 들어 실행 파일이 전송된 경우 파일은 mhtC1E4(1).exe가 됩니다.
원격 브라우저가 Internet Explorer가 아닌 경우 표시되는 형식은 HTML 페이지에 삽입된 이미지 형태입니다. 이 경우 HTML 페이지로 저장한 다음 설치된 브라우저로 열고, 링크를 마우스 오른쪽 버튼으로 클릭한 후 다른 이름으로 저장을 선택하고 올바른 파일 이름(이 경우 sleipnir.exe)을 입력해야 합니다. (IE에서는 이 단계를 허용하지 않으므로 두 가지 방법이 사용됩니다.)