최근 이메일을 이용해 악성 링크를 삽입하거나 악성 파일을 첨부하는 형태로 해킹 시도가 계속해서 발생하고 있다. 모르는 사람한테 받은 메일을 클릭하고, 악성 링크 또는 악성 파일을 다운로드하여 실행하면 중요 정보가 노출될 수 있다.


과거부터 현재까지 이용한 악성메일의 사례를 분석하고, 메일 훈련 솔루션에 적용하여 분기별 훈련을 한다면 악성 메일의 보안 의식을 향상시킬 수 있다.

 

HTA - msfvenom

HTA (HTML Application) 는 HTML로 작성된 어플리케이션이다. HTML 파일은 웹 브라우저로 연결되지만 HTA 파일은 기본 윈도우로 연결된다.


파일의 구조는 HTML 형식을 따르고 있으므로 확장자를 .html로 변경해서 실행하면 HTML 파일과 동일한 결과를 확인할 수 있다. 지메일의 경우 HTA 파일은 차단하지만 확장자를 HTML로 변경하면 차단하지 않고 정상적으로 전송된다.


메타스플로잇 프레임워크 (MSF, Metasploit Framework) 에서 제공하는 msfvenom 명령어를 이용해 hta-psh 파일 형식의 쉘코드를 생성한다.



hta_calc_01.hta 파일은 윈도우에 문자열을 출력해주는 기본적인 기능을 한다. 생성된 쉘코드를 복사하여 <body> 태그에 붙여 넣는다.



hta_calc_01.hta 파일을 더블클릭하여 실행하면 윈도우에 문자열이 출력된 후 계산기가 실행된다.



Word - msfvenom

msfvenom 명령어를 이용해 워드 파일에서 인식 가능한 vba-exe 파일의 쉘코드를 생성한다.



생성된 payload 파일을 보면 상단의 비주얼 베이직 코드와 하단의 쉘코드가 존재한다.



새로운 워드 문서를 열어 payload 파일의 쉘코드를 본문 내용에 붙여 넣는다.



Alt + F11을 누르면 비주얼 베이직 작업을 수행할 수 있는 매크로 창이 출력된다. 좌측 프로젝트의 ThisDocument를 클릭하고, payload 파일의 비주얼 베이직 코드를 붙여 넣는다.



매크로 창에서 저장하려고 하면 매크로 기능을 포함한 문서를 저장할 수 없다는 경고 창이 출력된다. 이 문제를 해결하려면 확장자를 docm 형식으로 저장하면 된다.



저장된 문서를 실행하면 상단의 노란색 보안 경고가 생성된다. "콘텐츠 사용" 버튼을 클릭한다.



버튼을 클릭하면 매크로 내의 비주얼 베이직 및 쉘코드가 실행되어 계산기가 실행된다.



Word - 수동 작업

매크로 창을 보면 좌측 프로젝트의 Microsoft Word 개체에 모듈을 삽입하면 하단의 모듈을 입력할 수 있는 폴더가 생성되고, 오른쪽에 코드를 입력할 수 있는 창이 생성된다.


AuoOpen() 메소드는 문서를 열면 자동으로 IE_Func() 메소드를 호출하는 역할을 한다.

 

매크로를 저장 후 다시 문서를 실행하면 상단의 보안 경고가 생성된다. 콘텐츠 사용 버튼을 클릭하면 비주얼 베이직 코드가 실행되어 웹 페이지가 로드된다.


Word - Inject-Macro

Inject-Macro는 워드 또는 엑셀에 자동으로 매크로를 주입해주는 파워쉘 스크립트이다.


매개변수로 –Doc는 주입할 doc 또는 xls 파일 이름, -Macro는 비주얼 베이직 코드가 존재한 매크로 파일 이름을 적어주면 된다.



매크로가 주입된 워드 문서를 열면 동일하게 보안 경고 문구가 출력된다. 콘텐츠 허용 버튼을 클릭하면 메시지 박스가 출력된다.



word_macro 파일은 기본적으로 메시지 박스를 실행해주는 코드가 존재한다. 파일의 코드를 중 메시지 박스를 출력하는 코드를 삭제한 후 웹 페이지를 로드하도록 변경한다.



Inject-Macro를 다시 실행 후 워드 문서를 열면 웹 페이지가 로드된다. 해당 문서의 매크로 창을 보면 변경한 매크로 파일의 소스가 주입된다. 또한, ThisDocument 개체에 주입된 것이 아닌 삽입된 모듈에 주입된다.



Excel - DDE

동적 데이터 교환(DDE,Microsoft Dynamic Data Exchange)는 프로그램 간의 서로 통신이 되도록 해주는 기술이다.


즉, 원노트 내의 엑셀 시트를 포함하거나 워드 내의 엑셀 표를 포함한 것이 가능하다. 엑셀 문서를 열어 다음과 같은 공격 패턴을 입력한다.

 

 ○ =MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c calc.exe'!''



기존의 cmd.exe 공격 패턴은 사용자가 쉽게 눈치를 채는 단점이 존재한다. 이를 위해 MSEXCEL 패턴을 변경하여 입력하면 엑셀을 실행 문구가 출력된다.



출력되는 경고창에서 예 버튼을 클릭하면 계산기가 실행된다.



정상적으로 공격이 진행 되었으므로 파일을 저장한다. 이 때, 기본 확장자인 .xlsx로 저장하게 되면 공격이 진행되지 않으므로 .xls로 저장한다.


저장된 파일을 실행하면 마찬가지로 경고창이 출력되는데 업데이트 버튼을 클릭한다.



동일한 경고창이 출력되는데 예 버튼을 클릭하면 계산기가 실행된다. 이것을 응용하여 A1 셀에 다음과 같은 파워쉘 스크립트를 주입 후 엑셀 문서를 열면 웹 사이트가 로드된다.


 ○ =cmd|'/c powershell.exe $e=(new-object -ComObject \"InternetExplorer.Application\");$e.navigate2(\"https://goo.gl/8dUxxmeoi6\");while($e.busy){start-sleep -milliseconds 1000}$e.visible=$true;powershell -e $e'!A1



▶ 모의해킹이란

▶ Metasploit meterpreter 기능 및 사용법

▶ ISMS 위험 시나리오

▶ UAC(User Account Control) 우회 - PowerShell

▶ CVE-2014-6332 취약점 분석 (Internet Explorer)


OneNote - DDE

마이크로소프트 오피스 버전 2013부터 원노트에서 엑셀 스프레드 시트를 삽입할 수 있는 기능이 추가됐다.


이 기능을 이용하면 DDE 공격 패턴이 삽입된 엑셀 스프레드 시트를 원노트로 가져와 실행시킬 수 있다. 하지만, 이것은 공격 성공률이 낮은 편에 속한다.


 ○ 오피스 2013 이상 버전의 경우 자동 업데이트를 무시하도록 설정되어 있어야 함

 ○ 오피스 2013 미만 버전의 경우 제한된 보기를 활성화 해야 함


엑셀 문서를 열어 다음과 같은 공격 패턴을 입력한다.


 ○ =MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c calc.exe'!''



공격 패턴을 입력하면 MSEXCEL 실행 경고 창이 출력된다. 실행하기 위해 '예' 버튼을 클릭하면 계산기가 실행된다.



정상적으로 공격이 진행 되었으므로 파일을 .xls로 저장한 후 원노트에서 엑셀 파일을 가져온다.


 ○ 삽입 > 스프레드 시트 > 기존 Excel 스프레드시트 > 파일 선택 > 스프레드시트 삽입


오피스 2013 이상 버전의 환경에서 원노트에 삽입된 엑셀을 실행하면 스크립트가 실행되지 않는다. 하지만, 엑셀 옵션의 '자동 연결 업데이트 확인'을 체크 해제하면 스크립트가 실행 된다.



오피스 2013 미만 버전의 환경에서 원노트에 삽입된 엑셀을 실행하면 다음과 같은 경고 창이 출력된다. 해당 경고를 무시하고 실행하기 위해 '확인' 버튼을 클릭한다.



엑셀이 실행되면 상단의 '제한된 보기' 경고 메시지가 출력된다.



제한된 보기를 클릭하면 상세한 정보를 확인할 수 있으면 편집하기 위해 계속 편집 버튼을 클릭한다.



오피스 2013 미만 버전도 동일하게 엑셀 문서 열 때, 자동으로 업데이트 확인이 활성화 되어 있다. 이것을 허용하기 위해 '콘텐츠 사용' 버튼을 클릭한다.



셀에 삽입된 공격 패턴을 실행 유무를 물어보는 경고 창이 출력된다.



삽입 된 공격 패턴이 실행되어 계산기가 실행된다.



OneNote - File Attach

문서 파일, 실행 파일을 원노트로 드래그하면 자동으로 파일 첨부가 완료되며 원노트 실행 시 첨부된 파일을 바로 확인할 수 있다.



첨부 된 파일을 실행하면 다음과 같은 경고 창이 출력되며 '확인' 버튼을 클릭하면 첨부 된 파일이 실행된다.



Powerpoint - PPA

MS Office 문서들은 문서가 열릴 때 매크로에 존재하는 코드가 자동으로 실행되게 할 수 있다. 엑셀 또는 워드는 Workbook_open 이벤트가 존재하며 이 이벤트를 이용하여 자동으로 실행된다.


하지만, 파워포인트는 Workbook_open 이벤트를 이용할 수 없다. 파워포인트의 ppa, ppam Add In 기능이 존재한다. 이 기능은 파워포인트의 추가 기능으로 매크로 내의 Auto_Open() 함수를 사용하고, 확장자를 ppa로 저장하면 문서가 열릴 때, 자동으로 코드가 실행된다.


새로운 파워포인트 문서를 열고 매크로 창에서 삽입된 모듈에 비주얼 베이직 코드를 삽입한다.


 ○ Sub Auto_Open() : 파워포인트 문서가 열릴 때 자동으로 매크로에 존재하는 코드가 실행(ppa)



파일을 다른 이름으로 저장 시 확장자를 ppa로 선택하여 저장한다.



저장된 파일을 실행하면 매크로 관련해서 보안 경고 창이 출력된다. 매크로 포함 버튼을 클릭하면 매크로에 존재하는 코드가 실행되어 웹 페이지가 로드된다.



Powerpoint - Custom UI

Auto_Open() 함수는 파워포인트의 ppa 외의 문서에서 실행되지 않는다. 하지만, Custom UI 편집기를 사용하면 문서가 열릴 때 자동으로 코드를 실행되게 할 수 있다.



문서를 pptm 파일로 저장 후 Custom UI 편집기에서 저장된 문서를 연다. 문서 이름에 마우스 우측 클릭하여 Office 2007 Custom UI Part를 클릭한다.



Office 2007 Custom UI Part를 클릭하면 XML을 추가할 수 있는 customUI.xml이 생성한다.


소스코드를 보면 onLoad="Auto_Open"이 존재한다. 이 코드는 문서가 열릴 때 자동으로 실행되게 할 함수를 지정하는 코드로 매크로에 존재하는 함수가 실행된다.



SFX - WinRAR

자동 압축 해제(SFX, Self-extracting archive)는 압축 프로그램 없이 자동으로 압축된 파일을 해제할 수 있는 기능을 수행한다.


보통 압축 파일은 별도의 압축 프로그램을 사용해서 압축을 해제한다. 하지만, 프로그램마다 호환성이 달라 압축이 해제되지 않는 경우가 존재한다.


이 경우 압축 프로그램내의 자동 압축 해제 기능을 사용해서 사용자에게 배포하면 더블 클릭만으로 자동으로 해제된다.

WinRAR을 이용해 디렉토리에 존재하는 모든 파일을 자동으로 압축 해제하고, 비주얼 베이직 스크립트가 실행되도록 한다.



비주얼 베이직 스크립트를 보면 WSH로 인터넷 익스플로러를 열어주는 역할을 한다.



모든 파일을 드래그하여 마우스 우측 클릭에 보이는 압축 파일에 파일 추가 메뉴를 클릭한다.



압축 옵션의 자동실행(SFX) 압축파일 추가(x)를 체크하면 압축파일 이름이 자동으로 exe로 변경된다.



자동실행(SFX) 압축파일 추가를 체크하면 고급 탭의 자동실행(SFX) 옵션이 활성화 된다. 해당 옵션을 클릭한다.



압축을 푼 후, 실행은 압축을 해제한 후 자동으로 실행될 파일로 비주얼 베이직 스크립트 이름을 적어준다.



자동 모드는 사용자가 압축 파일을 더블 클릭 했을 때 진행 과정을 보여주거나 숨기는 설정이다. 정상적인 압축 파일이라고 확신시키기 위해 자동 모드의 모두 표시를 선택한다.



덮어쓰기 모드는 현재 디렉토리에 동일한 파일이 있을 경우 사용자에게 확인하는 역을 한다. 여기서는 사용자와 상호작용 하지 않기 위해 확인없이 덮어쓰기를 선택한다.



자동 압축 해제 파일은 기본적으로 아이콘이 설정되어 있다. 사용자가 의심할 만한 아이콘을 사용하지 않지만, 의심하는 사용자를 속이기 위해 아이콘을 변경한다.



기본적인 설정이 완료되었으므로 확인 버튼을 클릭하면 현재 디렉토리에 자동 압축 해제 파일이 생성된다. 해당 파일의 속성을 보면 실행 파일 구조(EXE)이다. 더블 클릭하면 현재 디렉토리에 압축이 해제된다.



압축이 해제되면 자동으로 문서들이 생성되고, 자동으로 실행되는 스크립트로 인해 웹 페이지가 로드된다.


현재 디렉토리를 보면 비주얼 베이직 파일이 숨김 설정으로 배포 하였으므로 존재하지 않다.



자동 실행 해제 파일은 실행 파일의 구조를 띄고 있지만 압축 파일이다.


이 말은 마우스 우측 클릭으로 압축을 해제할 수 있다. 하지만, 7z 압축 파일 이외의 압축 파일은 압축 해제 메뉴가 나타나지 않는다. 7z 압축 파일로 압축 해제하면 스크립트가 자동으로 실행되지 않는다.



lnk - 숨김 파일 실행

2017년 8월, 입사 지원서를 위장한 악성 파일을 메일로 유포되는 사례가 발생했다.


첨부 된 파일은 압축 파일로 압축 파일을 해제하면 2개의 링크 파일과 1개의 실행 파일(숨김 파일)이 존재한다. 사용자가 링크 파일을 더블 클릭하면 숨김 파일이 실행된다.


일반적으로 사용자 PC는 숨김 파일을 보여주는 기능, 확장자를 보여주는 기능이 활성화 되어 있지 않다. 또한, 링크 파일은 아이콘 왼쪽 하단의 화살표 표시가 되어 있는데, 일반 사용자는 이것을 알아채기 어렵다.


악성 메일을 이용한 침해사고 사례 중 공격자들이 많이 이용하는 방법 중 하나이고, 공격 성공률도 높으니 본 시나리오대로 해보도록 한다.



지원합니다 디렉토리 목록을 보면 Bandizip.exe, 문의사항, 신분증 사본 총 3개의 파일이 존재한다.


Bandizip.exe 파일은 SFX 기법을 이용해 비주얼 베이직 파일이 실행되도록 구현되어 있다. 문의사항과 신분증 사본 파일은 Bandizip.exe 파일을 실행시키는 링크 파일이다.


 ○ 대상 : C:\Windows\System32\cmd.exe /c "Bandizip.exe"

 ○ 시작 위치 : 공백

 ○ 실행 : 최소화

 ○ 시스템 아이콘 경로 : %SystemRoot%\system32\SHELL32.dll (운영체제 버전 별 아이콘 위치 차이 존재)



3개의 파일을 egg 형식으로 압축 후 사용자에게 악성 메일을 보낸다. 사용자가 첨부한 파일을 다운로드 받아 압축을 해제하면 Bandizip.exe 파일은 숨김 파일이므로 보이지 않는다.



문의사항 또는 신분증 사본 파일을 실행하면 바로가기 링크 대상인 Bandizip.exe 파일이 실행된다.


Bandizip.exe 파일은 자동으로 압축 해제하여 임시 디렉토리에 존재하는 비주얼 베이직 스크립트 파일이 실행되어 인터넷 익스플로러 창으로 웹 페이지가 로드된다.



그림 파일 - Invoke-PSImage

평창 동계 올림픽을 목표로 한 문서형 악성 코드가 파워쉘 스크립트를 숨기기 위해 스테가노그래피 기법을 사용했다.


Invoke-PSImage는 이미지 파일의 픽셀에 파워쉘 스크립트를 숨기는 역할을 한다.


Invoke-PSImage 모듈을 사용하면 정상적인 이미지 파일(test_01.png)에 파워쉘 스크립트(powershell_browsing_01.ps1)를 주입한 결과 이미지 파일(image_browsing_steganography_01.png)이 생성된다.


또한, 하단에는 해당 이미지 파일에 숨겨져 있는 파워쉘 스크립트를 실행하기 위한 스크립트가 나열된다.



파워쉘 스크립트가 숨겨져 있는 이미지 파일의 경로를 구하기 위해 resolve-path 명령어를 사용했다. 이 명령어로 이미지 파일의 경로를 대체한다.



steganography 디렉토리에 존재하는 파일의 역할

 ㅇ image_browsing_steganography_01.png

   - 파워쉘 스크립트가 숨겨진 이미지 파일


 ㅇ image_browsing_steganography_01.ps1

   - image_browsing_steganography_01.png 이미지 파일을 실행하기 위한 파워쉘 스크립트 파일

   - 사용자에게 배포 시 숨김 속성으로 배포


 ㅇ image_browsing_win7_01, win10_01

   - image_browsing_steganography_01.ps1 파워쉘 스크립트를 실행하기 위한 링크 파일

   - C:\Windows\System32\cmd.exe /c "powershell.exe -ExecutionPolicy bypass .\image_browsing_steganography_01.ps1"


실행 정책 제한 우회 옵션 적용

스테가노그래피 기법으로 생성된 이미지 파일은 단독으로 실행할 수 없다. 윈도우 운영체제의 이미지 파일은 PE 형식의 구조가 아니므로 자체 실행 권한이 존재하지 않다.


리눅스를 예를 들어 생각해보자. 그림 파일에 웹쉘 실행 코드를 주입하고, 파일을 업로드하여 실행하면 웹쉘 코드가 실행될까?


이것은 웹 서버의 jpeg/png 등과 같은 그림 파일 형식을 php로 해석하라는 구문을 허용하면 가능하다. 하지만, 기본적으로 비활성화 되어 있다.


링크 파일 대상에는 수행할 명령어를 기입하는 곳으로 파워쉘 스크립트가 숨겨진 이미지 파일을 실행하기 위한 코드를 주입하면 된다. 하지만, 해당 명령어의 길이의 제한이 걸려있으므로 숨김 속성의 파워쉘 스크립트(image_browsing_steganography_01.ps1)를 생성했다.


결론적으로 사용자PC에서 보여질 파일은 image_browsing_steganography_01.png, image_browsing_win7_01.lnk 두개의 파일이다.


사용자 입장에서 생각해보면 확장자가 모두 숨겨져 있고, 파워쉘 스크립트도 숨겨져 있으므로 두개의 이미지 파일을 더블 클릭하면 숨겨진 파워쉘 코드가 실행하게 된다.



그림 파일 - Fake Image

Fake Image는 희생자PC를 장악하기 위해 가짜 이미지 파일을 생성하는 기법이다. 가짜 이미지 파일을 생성하기 위한 단계는 세 가지로 분류된다.


첫째, 악성 코드가 포함된 exe 실행 파일을 만든다.

둘째, exe 실행 파일의 확장자를 .jpg.exe로 변경한다.

셋째, 실행 파일의 아이콘을 변경한다.


가짜 이미지 파일은 수동으로 제작하는데 시간이 오래 걸리지 않는다. 하지만, 메타스플로잇 프레임워크와 연동하여 자동으로 생성할 수 있는 FakeImageExploiter를 사용해 알아본다.


FakeImageExploiter를 설치한 디렉토리에 settings 파일부터 살펴보자. 이 파일은 가짜 이미지 파일을 어떤 형식으로 생성할 것인지 정의한 설정 파일이다. 20번 행은 사용자에게 보여줄 이미지 파일의 확장자를 정의한다.



30번 행은 페이로드의 확장자를 정의한 것으로 가짜 이미지 파일이 실행되면 백그라운드로 공격자 서버로부터 페이로드 파일을 다운로드 및 실행한다.



62번 행은 메타스플로잇 페이로드 사용 유무를 결정하기 위한 것으로 기본적으로 메타스플로잇 페이로드를 사용하도록 설정되어 있다. NO로 설정되어 있으면 메타스플로잇 페이로드가 앞서 정의한 파일의 형식(ps1)으로 생성된다.



앞서 정의한 형식으로 페이로드를 자동으로 빌드하고, 메타스플로잇 핸들러를 생성하기 위한 설정이다.



FakeImageExploiter.sh 파일을 실행하면 가짜 이미지 파일을 생성하기 위해 필요한 패키지가 자동으로 설치된다. 설치가 완료되면 프레임워크 실행 문구가 출력된다.



프레임워크가 실행되면 자동으로 빌드할 페이로드 목록이 출력된다.



페이로드를 선택하면 설정 파일에 정의한 파일 형식대로 페이로드 파일이 생성된다. 이 후 사용자에게 보여줄 이미지 파일을 선택하기 위한 창이 출력된다.



가짜 이미지 파일은 앞서 말했다시피 실행 파일의 구조이므로 사용자를 속이기 위해 실행 파일 아이콘을 변경한다.



아이콘 변경까지 완료되면 저장할 파일 이름을 기입한다.



사용자에게 배포할 가짜 이미지 파일은 자동으로 웹 서버 루트 디렉토리에 복사가 되고, 메타스플로잇 핸들러가 설정된다.



사용자에게 가짜 이미지 파일을 배포하기 전 공격자 서버에 위치한 파일들을 간략히 살펴보자.


웹 서버 루트 디렉토리에는 fake_image_01_zip(=fake_image_01.jpg.exe), payload.ps1 파일이 있고, out 디렉토리에 fake_image_01.jpg.exe, payload.ps1 파일이 존재한다.



사용자가 fake_image_01 압축 파일을 해제하면 fake_image_01.jpg 그림 파일이 생성된다.


대부분 사용자의 시스템에서 파일 확장자 숨기기 설정이 되어 있으므로 뒤의 확장자가 표시 되지 않는다. fake_image_01.jpg 파일을 살펴보면 유형이 응용 프로그램이다. 응용 프로그램이라는 것은 실행 가능한 파일을 뜻한다.



가짜 이미지 파일을 실행하면 이미지가 로드된다. 하지만, 내부적으로 파워쉘이 동작하고 있다.




로드된 이미지의 파일 이름을 보아도 가짜 이미지 파일과 동일하다. 하지만, 가짜 이미지는 파일의 형식이 실행 파일 구조이고, 로드된 이미지는 이미지 파일의 형식이다.


파일을 검색해보면 로드된 이미지는 C:\Users\Public 디렉토리에 위치하며, 가짜 이미지 파일을 실행하면 자동으로 해당 디렉토리에 위치한 이미지를 로드한다.



가짜 이미지 파일을 실행하면 이미지 로드, 내부적으로 파워쉘을 실행하는 역할을 한다. 원본 소스코드를 살펴보면 다음과 같은 구조로 되어 있다.


 ㅇ 공격자 웹 서버에 존재하는 fake_image_01.jpg 파일을 C:\Users\Public 디렉토리에 복사

    - fake_image_01.jpg 파일은 정상적인 이미지 파일


 ㅇ 파워쉘로 C:\Users\Public\fake_image_01.jpg 파일을 실행

    - 가짜 이미지 파일을 실행하면 별도의 이미지 파일이 실행


 ㅇ 파워쉘로 공격자 웹 서버에 존재하는 payload.ps1 파일을 스트링 형식으로 다운로드 및 실행

    - downloadstring은 백신을 우회하기 위해 사용



가짜 이미지 파일의 시그니처를 보면 실행 파일 형식의 구조로 되어 있다.



fake_image_01.jpg 파일의 시그니처를 보면 jpg 파일 형식의 구조로 되어 있다.



payload.ps1 파일은 백그라운드로 동작하는 파워쉘 스크립트이다. downloadstring() 함수를 사용해 파일에 존재하는 문자열을 자동으로 실행하게 된다.


–enc 옵션에 나오는 문자열을 디코딩하면 공격자가 원하는 대로 커스텀마이징이 가능하다.


▶ iOS 바이너리 패칭 (앱 위변조)

▶ 시스템 검사 도구 (Hijack Hunter)

▶ 칼리리눅스 SSL Strip 공격 방어

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유