기생충과 같은 맬웨어에 대해
4364 단어 CTF
처음에
이 기사는, 거기서 나온 「기생충과 같은 멀웨어」라고 하는 문제를 푸는 열쇠가 되었다 Helminth
왜 다시인가라고 하면, DNS 쿼리는 꺼냈습니다만, 디코드시에 팀 메이트와 에스퍼로 FLAG를 통해 버렸기 때문입니다. (내 KOSEN 보안의 writeup은 여기)
또 실수 등 있으면 가르쳐 주시면 다행입니다.
기생충 같은 악성코드
문제의 내용은 다음과 같습니다.
Helminth
는 맬웨어에서 자주 사용되는 TXTレコード
대신 Aレコード
를 사용하는 것 같습니다. (자세한 내용은 참고 문헌을 참조해 주시면 좋겠습니다.)
Helminth
는 Aレコード
의 제약으로, 게재되는 정보는 8bit
까지이므로, 거기에 넣기 위해서 ASCII 코드 (7bit)
입니다.
통신 내용 꺼내기
먼저 tshark
를 사용하여 127.0.0.1의 DNSクエリ
를 꺼냅니다.
패킷의 내용을 보면 s.com
의 통신으로 행해지고 있는 것을 알기 때문에, 다음과 같이 실행합니다. (참고 문헌에 있다 기사 보다 인스파이어 했습니다.)
tshark -r helminth.pcapng -T fields -e dns.resp.name | grep s.com | awk -F . '{print $1}'
이것을 실행하면 불필요한 것도 나오므로 삭제합니다.
꺼낸 후00L01000JQ30D0A433A5C55736572735C7368753E747970652022433A5C
00L01001YRE50726F6772616D2046696C65735C526F6F6B69655C435446
00L01002QSF5C464C41472E74787422200D0A464C41477B48656C6D696E
00L010034YQ74685F6E69686F6E676F5F64655F6B697365696368755F72
00L01004K33617369796F21777777777D0D0A
통신 세부사항
다음에 통신은 이하의 형식이 되기 때문에 DATA
의 부분만 꺼냅니다.
00[botid][cmdid][partid][(random)][DATA].domain
cmdid ← 実行コマンド応答時の cmdid
partid ← 実行結果を分割したときの通し番号(001,00Aとか)
DATA ← 実行結果(ASCIIコード 16進数表現)
botid
는 ASCII 코드의 10진수 표현을 IP 주소로서 임베드하고 있는 것 같기 때문에, 최초의 IP 주소가 76.0.0.0
이므로 L
입니다.
또 random
의 부분의 문자수는 3 문자와 같기 때문에, 그것도 제거합니다.
최종 문자열0D0A433A5C55736572735C7368753E747970652022433A5C
50726F6772616D2046696C65735C526F6F6B69655C435446
5C464C41472E74787422200D0A464C41477B48656C6D696E
74685F6E69686F6E676F5F64655F6B697365696368755F72
617369796F21777777777D0D0A
이 캐릭터 라인을 cyberchef 에 돌진해 ASCII 코드이므로 16 진수로 디코드 합니다.
FLAG는 FLAG{Helminth_nihongo_de_kiseichu_rasiyo!wwww}
이었습니다.
절차
쓸데없이 쓰고 버려, 순서를 이해하기 어려울지도 모르기 때문에, 여기까지의 순서를 정리합니다.
문제의 내용은 다음과 같습니다.
Helminth
는 맬웨어에서 자주 사용되는 TXTレコード
대신 Aレコード
를 사용하는 것 같습니다. (자세한 내용은 참고 문헌을 참조해 주시면 좋겠습니다.)Helminth
는 Aレコード
의 제약으로, 게재되는 정보는 8bit
까지이므로, 거기에 넣기 위해서 ASCII 코드 (7bit)
입니다.통신 내용 꺼내기
먼저
tshark
를 사용하여 127.0.0.1의 DNSクエリ
를 꺼냅니다.패킷의 내용을 보면
s.com
의 통신으로 행해지고 있는 것을 알기 때문에, 다음과 같이 실행합니다. (참고 문헌에 있다 기사 보다 인스파이어 했습니다.)tshark -r helminth.pcapng -T fields -e dns.resp.name | grep s.com | awk -F . '{print $1}'
이것을 실행하면 불필요한 것도 나오므로 삭제합니다.
꺼낸 후
00L01000JQ30D0A433A5C55736572735C7368753E747970652022433A5C
00L01001YRE50726F6772616D2046696C65735C526F6F6B69655C435446
00L01002QSF5C464C41472E74787422200D0A464C41477B48656C6D696E
00L010034YQ74685F6E69686F6E676F5F64655F6B697365696368755F72
00L01004K33617369796F21777777777D0D0A
통신 세부사항
다음에 통신은 이하의 형식이 되기 때문에
DATA
의 부분만 꺼냅니다.00[botid][cmdid][partid][(random)][DATA].domain
cmdid ← 実行コマンド応答時の cmdid
partid ← 実行結果を分割したときの通し番号(001,00Aとか)
DATA ← 実行結果(ASCIIコード 16進数表現)
botid
는 ASCII 코드의 10진수 표현을 IP 주소로서 임베드하고 있는 것 같기 때문에, 최초의 IP 주소가 76.0.0.0
이므로 L
입니다.또
random
의 부분의 문자수는 3 문자와 같기 때문에, 그것도 제거합니다.최종 문자열
0D0A433A5C55736572735C7368753E747970652022433A5C
50726F6772616D2046696C65735C526F6F6B69655C435446
5C464C41472E74787422200D0A464C41477B48656C6D696E
74685F6E69686F6E676F5F64655F6B697365696368755F72
617369796F21777777777D0D0A
이 캐릭터 라인을 cyberchef 에 돌진해 ASCII 코드이므로 16 진수로 디코드 합니다.
FLAG는
FLAG{Helminth_nihongo_de_kiseichu_rasiyo!wwww}
이었습니다.절차
쓸데없이 쓰고 버려, 순서를 이해하기 어려울지도 모르기 때문에, 여기까지의 순서를 정리합니다.
00[botid][cmdid][partid][(random)][DATA].domain
의 형식에 따라 DATA
botid
는 첫 번째 서버의 응답으로 판단하고 random
부분은 3자이므로 삭제합니다. 마지막으로
나에게 멀웨어 통신을 파싱하는 것이 처음이었다.
그 중에서 확실히 어떤 형태로 전송되고 있는지 특징을 알고 나서 다시 FLAG를 얻을 수 있어서 좋았습니다.
참고문헌
[1] 표적형 공격에서 사용된 악성코드를 해석하여 C2 서버를 만들었다. 그 악성코드는 DNS 터널링을 하는 드문 것이었다.
[2] Google CTF 및 Trendmicro CTF - 생산성이 없는 이야기
Reference
이 문제에 관하여(기생충과 같은 맬웨어에 대해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yu1hpa/items/57ccb10f08f28bebd3c7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[1] 표적형 공격에서 사용된 악성코드를 해석하여 C2 서버를 만들었다. 그 악성코드는 DNS 터널링을 하는 드문 것이었다.
[2] Google CTF 및 Trendmicro CTF - 생산성이 없는 이야기
Reference
이 문제에 관하여(기생충과 같은 맬웨어에 대해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yu1hpa/items/57ccb10f08f28bebd3c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)