CyberChef는 GCHQ가 만든 자칭 'Cyber Swiss-Army Knife'입니다. 웹 브라우저에서 데이터 변환, 추출 및 조작을 위한 환상적인 도구입니다.
도구를 제작한 @GCHQ에게 전적으로 감사드립니다. 참조: https://gchq.github.io/CyberChef/
CyberChef(또는 모든 DFIR 작업)에서 데이터 조작을 최대한 활용하려면 정규식을 익히는 것이 중요합니다. 다음은 제가 계속해서 찾아보고 있는 몇 가지 정규식입니다.
Base64 추출: [a-zA-Z0-9+/=]{30,}
16진수 추출: [a-fA-F0-9]{10,}
문자 코드 추출: [d]{2,3}(,|')
(?<=foo)(.*)
^.*(?=bar)
(?<=')(.*?)(?=')
CyberChef는 외부 리소스에 대한 HTTP 요청을 허용하는 HTTP 요청 작업(레시피 22 참조)을 제공합니다. SOP(Same Origin Policy) 또는 Cross-Origin 리소스 공유 구성 부족으로 인해 많은 기능이 작동하지 않습니다. SOP는 CORS를 통해 명시적으로 허용하지 않는 서버에서 교차 사이트 응답을 읽지 못하게 하는 최신 브라우저의 보안 조치입니다. CyberChef에 대한 @GlassSec의 강연을 확인하세요. 웹 보안 없이 Chrome을 부팅하여 제한된 API(예: Virus Total)에 대한 HTTP 요청을 활성화하는 팁이 포함되어 있습니다.
CyberChef 요리법의 예:
레시피 1: base64 추출, 원시 팽창 및 미화
레시피 2: 난독화 호출
레시피 3: CharCode에서
레시피 4: 그룹 정책 기본 설정 암호 해독
레시피 5: 루프와 레이블 사용
레시피 6: Google ei 타임스탬프
레시피 7: x86 어셈블리에 대한 다단계 COM 스크립트릿
레시피 8: 16진수 추출, 내장 PE 파일에 대한 16진수 덤프로 변환
레시피 9: base64의 역방향 문자열, 문자 대체
레시피 10: Squid 프록시 캐시에서 객체 추출
레시피 11: GPS 좌표를 Google 지도 URL로 추출
레시피 12: 큰 숫자 처리
레시피 13: 레지스터를 사용하여 DNS PTR 레코드 구문 분석
레시피 14: POSHC2 실행 파일 디코딩
레시피 15: $MFT $SI 타임스탬프 구문 분석
레시피 16: PHP gzinflate 및 base64 웹셸 디코딩
레시피 17: Powershell Meterpreter 역방향 TCP 스크립트에서 쉘코드 추출
레시피 18: 하위 섹션과 병합을 사용하는 휴지통 파서
레시피 19: 정규식 강조 표시를 사용하여 난독화된 Base64 식별
레시피 20: 난독해제된 악성 스크립트와 함께 Yara 규칙 사용
레시피 21: 악성 LNK 파일에 첨부된 16진수로 인코딩된 VBE 스크립트의 인라인 난독화 해제
레시피 22: HTTP 요청 및 등록을 사용한 JA3 API 검색
레시피 23: 정규식 캡처 그룹을 사용하여 악성 DOC 파일에 포함된 DOSfuscation 방지
레시피 24: 6바이트 문자열에서 임의의 문자 선택
레시피 25: Wi-Fi QR 코드 생성
레시피 26: 다단계 PHP 웹셸 추출 및 디코딩
레시피 27: Auto Visitor PHP 스크립트 디코딩
레시피 28: 쉘코드를 얻기 위해 조건부 점프를 사용하여 코발트 타격 비콘의 난독화 해제
레시피 29: 하위 섹션과 레지스터를 사용한 로그 파일 타임스탬프 조작
레시피 30: Cobalt Strike 비콘을 위한 CharCode 난독화된 PowerShell 로더
레시피 31: .NET 바이너리에서 인코딩된 문자열 난독 해제
레시피 32: 난독화된 레지스트리 데이터에서 악성 Gootkit DLL 추출
레시피 33: Emotet PowerShell 스크립트에 포함된 URL 식별
레시피 34: OOXML 파일의 URL 분석
레시피 35: REvil PowerShell 랜섬웨어 샘플 복호화
레시피 36: CyberChef 비밀번호 생성기 만들기
레시피 37: 샌드박스 압축 이메일에서 악성 URL로
레시피 38: 비행기, 두개골, 봉투 - Live 및 Let PowerShell
레시피 39: GoldMax(Sunshutte 암호화 구성 파일) 해독
레시피 40: 모스 부호의 광기
레시피 41: PHP 혼합 16진수와 8진수 인코딩
레시피 42: 계층화된 난독화를 사용한 PHP 웹셸
레시피 43: 마젠토 스키머 난독화 해제
레시피 44: JobCrypter 랜섬웨어 복호화
레시피 45: Sqiud 프록시 로그 타임스탬프 변환
레시피 46: 상황에 맞게 정규식 조정하기
레시피 47: Trickbot Visual Basic 스크립트
레시피 48: vjw0rm Emoji Madness
레시피 49: EICAR 테스트 파일 디스어셈블
레시피 50: 보안 설명자 정의 언어 출력 구문 분석
레시피 51: Base-45 디코더
레시피 52: 항목 목록을 무작위로 작성
레시피 53: Powershell로 Olevba 출력
레시피 54: Windows 이벤트 ID 1029 해시
레시피 55: BazarLoader(일명 TA551 Maldoc) 디보퓨스카이팅
레시피 56: PCAP에서 JA3 또는 JA3S 해시 값 계산 및 조회
레시피 57: CyberChef로 밈 만들기
레시피 58: Maldoc에서 IcedID 2단계 URL 추출
레시피 59: 코발트 스트라이크 비콘 구성 분석
레시피 60: Microsoft Safelinks로 보호되는 URL 디코딩
레시피 61: Qakbot Excel Maldocs에서 2단계 URL 추출
레시피 62: Emotet Maldoc에서 PowerShell로
레시피 63: Dridex 난독화된 VBS에서 URL 추출
레시피 64: 문자열을 VirusTotal Grep 쿼리로 변환
레시피 65: MSF Venom PowerShell 역방향 셸 페이로드 난독 해제
레시피 66: 중첩된 하위 섹션의 예
레시피 67: MSI ProductCode를 레지스트리 설치 프로그램 ProductID로 변환
레시피 68: 자바 부호 있는 바이트 배열 변환
레시피 69: Bumblebee Powershell 스크립트에서 DLL 페이로드 추출
레시피 70: Android 네트워크 보안 구성에서 엔드포인트 추출
매우 일반적인 시나리오: Base64를 추출하고, 확장하고, 코드를 아름답게 만듭니다. 그런 다음 다음 단계에 따라 추가 처리나 동적 분석을 수행해야 할 수도 있습니다.
파일명 : ahack.bat
압축된 파일: cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54_183SnuOIVa.bin.gz
샘플: SHA256 cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54
https://www.hybrid-analytic.com/sample/cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54?environmentId=120
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Generic Code Beautify","args":[]}]
CyberChef는 모든 유형의 호출 난독화를 처리할 수는 없지만 여기에서는 디코딩할 수 있는 유형이 있습니다.
파일 이름: 승인 NUT-95-52619.eml
압축된 파일: 1240695523bbfe3ed450b64b80ed018bd890bfa81259118ca2ac534c2895c835.bin.gz
샘플: SHA256 1240695523bbfe3ed450b64b80ed018bd890bfa81259118ca2ac534c2895c835
https://www.hybrid-analytic.com/sample/1240695523bbfe3ed450b64b80ed018bd890bfa81259118ca2ac534c2895c835?environmentId=120
[{"op":"Find / Replace","args":[{"option":"Regex","string":"\^|\\|-|_|\/|\s"},"",true,false,true,false]},{"op":"Reverse","args":["Character"]},{"op":"Generic Code Beautify","args":[]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"http:"},"http://",true,false,true,false]},{"op":"Extract URLs","args":[false]},{"op":"Defang URL","args":[true,true,true,"Valid domains and full URLs"]}]
악성 코드와 스크립트는 AV 및 EDR 솔루션을 회피하기 위해 문자를 표현하기 위해 Charcode를 사용하는 경우가 많습니다. CyberChef가 이것을 먹어치웁니다.
파일 이름: 3431818-f71f60d10b1cbe034dc1be242c6efa5b9812f3c6.zip
출처: https://gist.github.com/jonmarkgo/3431818
[{"op":"Regular expression","args":["User defined","([0-9]{2,3}(,\s|))+",true,true,false,false,false,false,"List matches"]},{"op":"From Charcode","args":["Comma",10]},{"op":"Regular expression","args":["User defined","([0-9]{2,3}(,\s|))+",true,true,false,false,false,false,"List matches"]},{"op":"From Charcode","args":["Space",10]}]
새 GPP가 생성되면 관련 구성 데이터와 함께 SYSVOL에 생성된 관련 XML 파일이 있으며, 제공된 비밀번호가 있는 경우 AES-256비트 암호화됩니다. Microsoft는 \SYSVOL<DOMAIN>Policies에 저장된 비밀번호를 해독하는 데 사용할 수 있는 AES 키를 게시했습니다.
크레딧: @cyb3rops
출처 1: https://twitter.com/cyb3rops/status/1036642978167758848
소스 2: https://adsecurity.org/?p=2288
[{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["None"]},{"op":"AES Decrypt","args":[{"option":"Hex","string":"4e9906e8fcb66cc9faf49310620ffee8f496e806cc057990209b09a433b66c1b"},{"option":"Hex","string":""},"CBC","Hex","Raw",{"option":"Hex","string":""}]},{"op":"Decode text","args":["UTF16LE (1200)"]}]
CyberChef는 레이블을 사용하여 레시피의 일부를 식별한 다음 루프백하여 작업을 여러 번 수행할 수 있습니다. 이 예에는 추출 및 디코딩되는 Base64 인코딩 라운드가 29개 있습니다.
크레딧: @pmelson
소스 파일: hmCPDnHs.txt
출처 1: https://pastebin.com/hmCPDnHs
출처 2: https://twitter.com/pmelson/status/1078776229996752896
또한 Base64를 통한 루프의 더 많은 예를 확인하세요: https://twitter.com/QW5kcmV3/status/1079095274776289280(신용: @QW5kcmV3)
[{"op":"Label","args":["top"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Jump","args":["top",28]},{"op":"Generic Code Beautify","args":[]}]
Google은 자체 타임스탬프인 ei time을 사용하며 이를 URL에 삽입합니다.
출처: https://bitofhex.com/2018/05/29/cyberchef/
[{"op":"From Base64","args":["A-Za-z0-9-_=",true]},{"op":"To Hex","args":["None"]},{"op":"Take bytes","args":[0,8,false]},{"op":"Swap endianness","args":["Hex",4,true]},{"op":"From Base","args":[16]},{"op":"From UNIX Timestamp","args":["Seconds (s)"]}]
이는 Base64, Gunzip, RegEx 및 Disassemble x86 명령어를 사용하는 11단계 디코딩된 COM 스크립트릿입니다.
크레딧: @JohnLaTwC
파일 이름: 41a6e22ec6e60af43269f4eb1eb758c91cf746e0772cecd4a69bb5f6faac3578.txt
소스 1: https://gist.githubusercontent.com/JohnLaTwC/aae3b64006956e8cb7e0127452b5778f/raw/f1b23c84c65 4b1ea60f0e57a860c74385915c9e2/43cbbbf93121f3644ba26a273ebdb54d8827b25eb9c754d3631be395f06d8cff
출처 2: https://twitter.com/JohnLaTwC/status/1062419803304976385
[{"op":"Regular expression","args":["","[A-Za-z0-9=/]{40,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[A-Za-z0-9+/=]{40,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","[A-Za-z0-9+/=]{40,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["Space"]},{"op":"Remove whitespace","args":[true,true,true,true,true,false]},{"op":"Disassemble x86","args":["32","Full x86 architecture",16,0,true,true]}]
이 파일에는 PE 파일(SHA 256: 26fac1d4ea12cdceac0d64ab9694d0582104b3c84d7940a4796c1df797d0fdc2, R5Sez8PH.exe, VT: 54/70)이 포함되어 있습니다. CyberChef를 사용하면 16진수를 정규식으로 변환하고 더 쉽게 볼 수 있는 16진수 덤프로 변환할 수 있습니다.
소스 1: https://pastebin.com/R5Sez8PH (죄송합니다: 더 이상 사용할 수 없습니다!)
출처 2: https://twitter.com/ScumBots/status/1081949877272276992
[{"op":"Regular expression","args":["User defined","[a-fA-F0-9]{200,}",true,true,false,false,false,false,"List matches"]},{"op":"From Hex","args":["Auto"]},{"op":"To Hexdump","args":[16,false,false]}]
대체할 일부 보조 바이트가 있는 base64의 blob입니다. @pmelson이 Python으로 원본 디코딩을 수행하고 CyberChef로 변환했습니다.
크레딧: @pmelson
출처 1: https://pastebin.com/RtjrweYF / RtjrweYF.txt
출처 2: https://twitter.com/pmelson/status/1076893022758100998
[{"op":"Reverse","args":["Character"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"%"},"A",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"×"},"T",true,false,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"÷"},"V",true,false,false,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hexdump","args":[16,false,false]}]
Squid 캐시 개체를 수동으로 조각하지 마세요. CyberChef에 파일을 업로드하기만 하면 됩니다. 이 레시피는 매직 바이트 0x0D0A0D0A를 검색하고 그 이후의 모든 것을 추출합니다. 그런 다음 gzip은 다운로드할 개체의 압축을 풉니다.
출처: 00000915(출력은 SHA256 e95eca399dfe95500c4de569efc4cc77b75e2b66a864d467df37733ec06a0ff2를 사용하여 TrueCrypt_Setup_7.1a.exe여야 함)
[{"op":"To Hex","args":["None"]},{"op":"Regular expression","args":["User defined","(?<=0D0A0D0A).*$",true,false,false,false,false,false,"List matches"]},{"op":"From Hex","args":["Auto"]},{"op":"Gunzip","args":[]}]
사진이 촬영된 위치를 신속하게 분류해야 하고 GPS 위도와 경도가 내장되어 있을 만큼 운이 좋다면 이 방법을 사용하여 위치를 식별하는 데 사용할 수 있는 Google 지도 URL을 빠르게 만드세요.
[{"op":"Extract EXIF","args":[]},{"op":"Regular expression","args":["User defined","((?<=GPSLatitude:).*$)|((?<=GPSLongitude: ).*$)",true,true,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Extended (\n, \t, \x...)","string":"\n"},",",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":" "},"https://maps.google.com/?q=",true,false,true,false]}]
CyberChef는 엄청난 숫자를 처리할 수 있습니다. 여기서는 간단한 방법을 사용하여 38자리 X509SerialNumber를 해당하는 16진수 X.509 인증서 일련 번호로 변경할 수 있습니다. 그런 다음 16진수를 정규식으로 변환하고 콜론을 삽입하여 올바른 형식으로 변환할 수 있습니다.
크레딧: @QW5kcmV3
출처: https://twitter.com/QW5kcmV3/status/949437437473968128
[{"op":"To Base","args":[16]},{"op":"Regular expression","args":["User defined","[a-f0-9]{2,2}",true,true,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Extended (\n, \t, \x...)","string":"\n"},":",true,false,true,false]}]
DNS PTR 레코드의 IP 주소는 최하위 옥텟으로 먼저 저장됩니다. 예를 들어 167.139.44.10.in-addr.arpa는 IP 주소 10.44.139.167과 관련됩니다. CyberChef의 레지스터를 사용하면 각 옥텟을 메모리 레지스터(또는 그렇게 생각하는 것이 더 쉬운 경우 변수)에 할당할 수 있습니다. 그런 다음 IP 주소를 다시 정렬하기 위해 이를 반대로 할 수 있습니다. 찾기/바꾸기는 나머지 기록을 정리합니다. DNS PTR 레코드에서 검색하기 위해 '일반' IP 주소를 변환하려는 경우 이를 반대로 할 수 있습니다.
[{"op":"Fork","args":["\n","\n",false]},{"op":"Register","args":["(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R0.$R1.$R2.$R3"},"$R3.$R2.$R1.$R0",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":".in-addr.arpa"},"",true,false,true,false]}]
PoshC2는 Powershell을 활용하여 침투 테스터의 레드 팀 구성, 공격 후 및 측면 이동을 지원하는 프록시 인식 C2 프레임워크입니다. 드로퍼는 PowerShell을 기반으로 하며 이중 Base64로 인코딩되고 압축된 PowerShell 스크립트로 구성됩니다. 문자열 추출은 아래에 설명된 대로 CyberChef를 사용하여 수행할 수 있습니다. 실행 파일의 설정 및 사용자 정의에 따라 레시피를 조정해야 할 수도 있습니다.
크레딧: @a_tweeter_user
출처: https://twitter.com/a_tweeter_user/status/1100751236687642624
출처: posh.zip
[{"op":"Strings","args":["All",4,"Alphanumeric + punctuation (A)",false]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+=]{200,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[a-z0-9/\\+=]{100,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]}]
CyberChef는 데이터로 무엇이든 할 수 있습니다. 다음은 $MFT 항목의 원시 16진수 바이트입니다. 특정 바이트를 선택하고 CyberChef의 다양한 기능을 사용하여 필요에 따라 데이터의 모든 부분을 구문 분석할 수 있습니다. 이 레시피는 $SI 타임스탬프를 추출하고 구문 분석합니다. 더 이상 넣지 마세요!
[{"op":"Take bytes","args":[160,64,false]},{"op":"Regular expression","args":["User defined",".{16}",true,true,true,false,false,false,"List matches with capture groups"]},{"op":"Fork","args":["\n","\n",false]},{"op":"Swap endianness","args":["Hex",10,true]},{"op":"Remove whitespace","args":[true,true,true,true,true,false]},{"op":"Windows Filetime to UNIX Timestamp","args":["Nanoseconds (ns)","Hex"]},{"op":"From UNIX Timestamp","args":["Nanoseconds (ns)"]},{"op":"Merge","args":[]},{"op":"Register","args":["(.*)\n(.*)\n(.*)\n(.*)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R0"},"$SI Creation Time: $R0",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R1"},"$SI Modified Time: $R1",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R2"},"$SI MFT Change Time: $R2",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"$R3"},"$SI Access Time: $R3",false,false,true,false]}]
웹쉘은 모양과 크기가 다양합니다. PHP 웹셸의 경우 gzinflate와 base64의 조합을 사용하여 평가 데이터를 난독화할 수 있습니다. 이 예에는 레이블과 루프를 사용하여 신속하게 구문 분석할 수 있는 21라운드 압축과 base64가 있습니다.
출처: https://github.com/LordWolfer/webshells/blob/b7eefaff64049e3ff61e90c850686135c0ba74c4/from_the_wild1.php
[{"op":"Label","args":["start"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{10,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Block",false,false]},{"op":"Jump","args":["start",21]}]
@pmelson의 Pastbin 봇 @scumbots에서 흔히 볼 수 있는 이 방법은 인코딩된 Powershell 스크립트의 여러 레이어를 벗겨내어 쉘코드를 표시합니다. 여기에서 PUSH 문을 추출하여 IP 주소와 포트를 식별할 수 있지만 잘못된 긍정이 너무 많이 발생합니다. 따라서 scdbg와 같은 도구를 사용하는 것이 더 좋습니다(참조: http://sandsprite.com/blogs/index.php?uid=7&pid=152).
출처: https://twitter.com/ScumBots/status/1121854255898472453
출처 : https://pastebin.com/9DnD6t6W / 9DnD6t6W.txt
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Remove null bytes","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9=/+]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["None"]},{"op":"Disassemble x86","args":["32","Full x86 architecture",16,0,true,true]}]
하위 섹션 및 병합은 전체 입력 파일이 아닌 선택한 데이터에 성분을 적용할 수 있는 CyberChef의 강력한 도구입니다. 그런 다음 이 섹션을 함께 병합하여 전체 입력을 계속할 수 있습니다. 멋진 작품에서 @GlassSec는 CyberChef를 사용하여 Windows 휴지통 파서를 만들어 이러한 기능의 가능성이 무한함을 보여주었습니다.
출처: https://gist.github.com/glassdfir/f30957b314ec39a8aa319420a29ffc76
크레딧: https://twitter.com/GlassSec
[{"op":"Conditional Jump","args":["^(\x01|\x02)",true,"Error",10]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(\x02.{23})(....)"},"$1",false,false,false,false]},{"op":"Subsection","args":["^.{24}(.*)",true,true,false]},{"op":"Decode text","args":["UTF16LE (1200)"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(.*)."},"\nDeleted File Path: $1",false,false,false,false]},{"op":"Merge","args":[]},{"op":"Subsection","args":["^.{16}(.{8})",false,true,false]},{"op":"Swap endianness","args":["Raw",8,true]},{"op":"To Hex","args":["None"]},{"op":"Windows Filetime to UNIX Timestamp","args":["Seconds (s)","Hex"]},{"op":"From UNIX Timestamp","args":["Seconds (s)"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(.* UTC)"},"\nFile Deletion Time: $1",true,false,true,false]},{"op":"Merge","args":[]},{"op":"Subsection","args":["^.{8}(.{8})",true,true,false]},{"op":"To Hex","args":["None"]},{"op":"Swap endianness","args":["Hex",8,true]},{"op":"From Base","args":[16]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^(.*)"},"\nDeleted File Size: $1 bytes",true,false,true,true]},{"op":"Merge","args":[]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^.{8}"},"******** WINDOWS RECYCLE BIN METADATA ********",true,false,false,false]},{"op":"Jump","args":["Do Nothing",10]},{"op":"Label","args":["Error"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"^.*$"},"This doesn't look like a Recycle Bin file to me ",true,false,true,false]},{"op":"Label","args":["Do Nothing"]}]
레시피가 적고 기술이 더 많습니다. 정규식 구성 요소의 '강조 표시' 기능을 사용하면 base64 데이터가 비전통적인 base64 문자 집합으로 분할된 위치를 명확하게 표시할 수 있습니다. 여기서는 '@<!' 시퀀스입니다. 자동 인코딩 변환을 난독화하고 방해하는 데 사용됩니다. 스크립트를 더 자세히 살펴보면 시퀀스가 'A'로 대체된 다음 추출 전에 찾기/바꾸기로 삽입할 수 있습니다. 이는 관심 영역이 공개될 때까지(실행 가능한 이전 항목과 함께) 여러 라운드 동안 계속됩니다.
출처: https://pastebin.com/TmJsB0Nv & https://twitter.com/pmelson/status/1167065236907659264
[{"op":"Find / Replace","args":[{"option":"Simple string","string":"@<!"},"A",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{20,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{50,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"@<!"},"A",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{50,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]}]
가장 편리한 방법은 아니지만 CyberChef는 레시피 출력에 대해 야라 규칙을 실행하는 기능을 제공합니다. 다중 입력 기능을 사용하여 이를 결합하여 더 많은 수의 파일을 스캔할 수 있습니다.
출처: https://twitter.com/ScumBots/status/1168528510681538560 & https://pastebin.com/r40SXe7V
[{"op":"Regular expression","args":["User defined","\(.*\);",true,false,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Regex","string":",|\(|\);"}," ",true,false,true,false]},{"op":"From Charcode","args":["Space",10]},{"op":"YARA Rules","args":["rule SuspiciousPowerShell {n meta:n description = "Testing Yara on Cyberchef for Powershell"n strings:n $a1 = "[System.Reflection.Assembly]" asciin $a2 = "IEX" ascii nocasen $a3 = "powershell.exe -w hidden -ep bypass -enc" asciin condition:n 2 of themn}",true,true,true,true]}]
이 레시피는 LNK(Microsoft Shortcut File)에서 VBE 페이로드를 추출한 다음 하위 섹션을 사용하여 인라인으로 16진수 문자열을 디코딩합니다.
출처: 악성.lnk.bin
[{"op":"Microsoft Script Decoder","args":[]},{"op":"Subsection","args":["(?<=\(\")(.*?)(?=\"\))",true,true,false]},{"op":"Fork","args":["\n","\n",false]},{"op":"From Hex","args":["Auto"]}]
HTTP 요청 기능과 레지스터를 사용하면 API나 외부 리소스의 데이터를 통해 데이터를 풍부하게 만들 수 있습니다. 여기서는 3개의 JA3 해시를 검색하여 알려진 문제가 있는지 검색합니다.
출처: 입력 해시: 1aa7bf8b97e540ca5edd75f7b8384bfa, 1be3ecebe5aa9d3654e6e703d81f6928 및 b386946a5a44d1ddcc843bc75336dfce
[{"op":"Comment","args":["https://ja3er.com/search/hash"]},{"op":"Fork","args":["\n","\n",false]},{"op":"Register","args":["(.*)",true,false,false]},{"op":"HTTP request","args":["GET","https://ja3er.com/search/$R0","","Cross-Origin Resource Sharing",false]},{"op":"JSON Beautify","args":[" ",false]}]
이 악성 DOC 파일은 Hybrid-Analytics에서 직접 다운로드됩니다. 압축을 풀고 정규식으로 문서화를 선택한 다음 'set' 기능과 함께 사용되는 임계 섹션을 선택합니다. 이 섹션은 3단계의 역방향 for 루프를 사용하여 난독화됩니다. 따라서 일단 선택하면 문자열을 반전하고 정규식 캡처 그룹을 사용하여 세 번째 문자마다 선택합니다. 이것은 YouTube의 Hack eXPlorer의 훌륭한 작품입니다. 거기 가서 지켜보세요!
출처: 무제-11232018-659370.doc.bin.gz
크레딧: Hack eXPlorer의 비디오에서 발췌 Windows CMD를 사용하여 악성 코드 숨기기 - Dosfuscation
[{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","c:\\.*"",true,true,false,false,false,false,"List matches"]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"^"},"",true,false,true,false]},{"op":"Regular expression","args":["User defined","(?<=9ojB\=)(.*?)(?=\) )",true,true,false,false,false,false,"List matches"]},{"op":"Reverse","args":["Character"]},{"op":"Regular expression","args":["User defined","(.)..",true,true,false,false,false,false,"List capture groups"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\n"},"",true,false,true,false]},{"op":"Extract URLs","args":[false]},{"op":"Extract domains","args":[true]}]
지원 요청으로 인해 레지스터, HTTP 요청 및 일부 Regex를 사용하여 6바이트 문자열에서 임의의 문자를 선택하는 이 레시피가 탄생했습니다.
출처: Steve Thompson의 각색
[{"op":"Register","args":["(.*)",true,false,false]},{"op":"HTTP request","args":["GET","https://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new","","Cross-Origin Resource Sharing",false]},{"op":"Register","args":["(.)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"(.)"},"$R0",true,false,true,false]},{"op":"Regular expression","args":["User defined","(.){$R1}",true,true,false,false,false,false,"List capture groups"]},{"op":"Head","args":["Line feed",1]}]
친구가 게스트 Wi-Fi에 쉽게 액세스할 수 있도록 하거나, 악성 액세스 포인트에 유혹적인 편리함을 추가해야 하는 레드팀을 위해! QR 코드 생성 기능을 사용하면 Android 또는 iOS 장치가 Wi-Fi에 로그온할 수 있습니다.
크레딧: https://twitter.com/mattnotmax/status/1242031548884369408
배경: https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11
Generate_QR_Code('PNG',5,2,'Medium')
정규식, ROT13, HTTP 요청, 레지스터 등을 사용하여 Cyberchef 내에서 SANS가 문서화한 웹셸을 완전히 디코딩합니다!
크레딧: https://twitter.com/thebluetoob
[{"op":"Regular expression","args":["User defined","(?<=')(.*?)(?=')",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"ROT13","args":[true,true,13]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"ROT13","args":[true,true,13]},{"op":"Extract URLs","args":[false]},{"op":"Register","args":["(.*)",true,false,false]},{"op":"HTTP request","args":["GET","$R0","","Cross-Origin Resource Sharing",false]},{"op":"Strings","args":["Single byte",4,"Alphanumeric + punctuation (A)",false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+=/]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Regular expression","args":["User defined","(?<=')(.*?)(?=')",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"ROT13","args":[true,true,13]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+=/]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]}]
정규식, ROT13, 다중 압축 해제 알고리즘 및 하위 섹션 을 사용하여 Cyberchef 내에서 PHP로 작성된 자동 방문자 스크립트를 디코딩합니다! 고려해야 할 핵심 사항은 서로 다른 난독화 라운드를 사용하는 두 가지 변수가 있다는 것입니다. 몇 가지 옵션이 있습니다. 여러 CyberChef 창에서 작업하여 최종 결과를 얻거나, 아래와 같이 각 변수에 대한 하위 섹션과 greg를 사용하여 각각을 독립적으로 조작하고 하나의 스크립트에서 난독화 해제된 두 출력을 모두 가져옵니다. 루프를 사용하여 Raw Inflate의 여러 라운드를 점프하면 레시피를 더욱 단축할 수 있습니다.
크레딧: @NtSetDefault가 제공한 원본 스크립트, @thebluetoob이 만든 원본 Cyberchef 레시피, @mattnotmax가 정제하여 하나의 레시피로 만들었습니다.
[{"op":"Regular expression","args":["User defined","(?<=')(.*?)(?=')",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"ROT13","args":[true,true,13]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"ROT13","args":[true,true,13]},{"op":"Subsection","args":["(?<=\$Fadly.*?")(.*?)(?=\")",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"URL Decode","args":[]},{"op":"From HTML Entity","args":[]},{"op":"Merge","args":[]},{"op":"Subsection","args":["(?<=\$Gans.*?")(.*?)(?=\")",true,true,false]},{"op":"Reverse","args":["Character"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Label","args":["jump"]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Jump","args":["jump",2]},{"op":"Zlib Inflate","args":[0,0,"Adaptive",false,false]},{"op":"Zlib Inflate","args":[0,0,"Adaptive",false,false]}]
쉘코드를 구문 분석하기 위해 CyberChef 조건부 점프를 통해 비콘 스크립트에 어떤 난독화 유형이 있는지 결정하는 @0xtornado의 이 독창적인 스크립트로 독을 선택하세요. 먼저 코드는 간단한 정규식 'bxor'를 찾은 다음 레시피의 해당 섹션으로 이동합니다. 그렇지 않으면 두 번째 유형을 구문 분석합니다. CyberChef '탭'을 사용하면 두 가지 다른 스크립트를 로드하고 데이터를 꺼낼 수 있습니다. 동료와 친절한 레드팀 또는 현지 APT 직원에게 깊은 인상을 남겨주세요!
크레딧: https://twitter.com/0xtornado/status/1255866333545316352
[{"op":"Conditional Jump","args":["bxor",false,"Decode_Shellcode",10]},{"op":"Label","args":["Decode_beacon"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Gunzip","args":[]},{"op":"Label","args":["Decode_Shellcode"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"XOR","args":[{"option":"Decimal","string":"35"},"Standard",false]}]
모든 사람이 CyberChef를 로그 파일 분석 도구로 생각하는 것은 아닙니다. 그러나 목적에 맞게 로그 파일을 변환, 형식 변경 또는 조작해야 하는 경우에는 편리합니다. 여기에는 다른 로그 파일과의 유용한 시간 분석으로 이어지지 않는 타임스탬프가 있는 Apache 로그 파일이 있습니다. 날짜 형식은 정렬할 수 없으며 대괄호로 묶여 있으며 표준 UTC가 아닌 UTC +1입니다. 하위 섹션, 레지스터 및 날짜 및 시간 전치 기능을 사용하여 타임스탬프의 형식을 변경하고 열을 이동하여 다른 데이터와 결합할 수 있습니다. 엄청난!
크레딧: @gazambelli 및 @mattnotmax
[{"op":"Fork","args":["\n","\n",false]},{"op":"Subsection","args":["\[.*\+0100\]",true,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\[|\]"},"",true,false,true,false]},{"op":"Translate DateTime Format","args":["Standard date and time","DD/MMM/YYYY:HH:mm:ss ZZ","Etc/GMT-1","YYYY-MM-DDTHH:mm:ss ZZ","UTC"]},{"op":"Merge","args":[]},{"op":"Fork","args":["\n","\n",false]},{"op":"Register","args":["(.*)(\d{4}-.*\+0000)(.*)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"$R0$R1$R2"},"$R1 $R0 $R2",true,false,true,false]}]
Cobalt Strike용 표준 PowerShell 로더의 변형입니다. 여기서 난독화의 첫 번째 레이어는 두 개의 CharCode 배열로 분할된 GZipped blob입니다. 최종 결과는 디스어셈블리, 문자열, IP 추출 또는 UserAgent 구문 분석 등 귀하에게 달려 있습니다. 자신만의 모험을 선택하세요.
출처: @scumbots & https://pastebin.com/raw/mUFM4fcQ
[{"op":"Regular expression","args":["User defined","\d{1,3}",true,true,false,false,false,false,"List matches"]},{"op":"From Charcode","args":["Line feed",10]},{"op":"Gunzip","args":[]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"XOR","args":[{"option":"Decimal","string":"35"},"Standard",false]},{"op":"Strings","args":["Single byte",5,"All printable chars (A)",false]}]
SolarWinds 악성 .dll에는 압축 및 base64를 사용하여 난독화된 문자열이 포함되어 있습니다. 분석에서 컨텍스트를 잃지 않고 하위 섹션이 있는 문자열을 선택한 다음 변환하여 인라인으로 빠르게 난독화를 해제할 수 있습니다. 그 결과 컨텍스트에 따라 읽을 수 있고 잠재적으로 오류가 발생하기 쉬운 잘라내기 및 붙여넣기를 방지하는 함수가 탄생했습니다.
크레딧: @cybercdh & @Shadow0pz
출처: https://twitter.com/cybercdh/status/1338885244246765569 & https://twitter.com/Shadow0pz/status/1338911469480661000
[{"op":"Subsection","args":["(?<=\(\")(.*)(?=\"\))",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]}]
Gootkit은 DLL을 인코딩된 PowerShell로 레지스트리 내에 저장합니다. CyberChef는 소위 '파일 없는' 악성 코드를 잘게 다져 만듭니다. @StefanKelm이 제공하는 편리한 레시피는 '파일'을 '파일 없는' 상태로 되돌립니다. (예, 제가 직접 생각한 것입니다. 우리 친구는 최대 레시피 32까지입니다...)
출처: https://github.com/StefanKelm/cyberchef-recipes
[{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",false,false]}]
@Cryptolaemus1의 편리한 레시피는 레지스터의 강력한 작업을 사용하여 Emotet 악성 문서에서 PowerShell의 난독화된 URL을 추출합니다. 여기서 캡처 그룹은 URL을 난독 해제하는 찾기/바꾸기 문자열을 가져오는 데 사용됩니다. 멋진 것들.
크레딧: @Cryptolaemus 및 @NtRaiseException()
출처: https://twitter.com/Cryptolaemus1/status/1319357369902649344
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Find / Replace","args":[{"option":"Regex","string":"'\)?\+\(?'"},"",true,false,true,false]},{"op":"Register","args":["\(+'(=[\w\d]*)'\)+,'/'\)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"$R0"},"/",true,false,true,false]},{"op":"Register","args":["\/(.)http",true,false,false]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"$R1"},"\n",true,false,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"'"},"\n",true,false,true,false]},{"op":"Extract URLs","args":[false]}]
Didier Stevens는 OOXML 문서(예: .docx 파일)에서 URL을 추출하여 CyberChef의 놀라운 단순성과 유용성을 보여줍니다. 파일의 압축을 풀고 '알려진 양호한' 항목을 필터링하면 나머지 URL을 검사할 수 있습니다. 불필요한 클릭이나 운영 보안 실수를 방지하려면 디팡을 잊지 마세요. CyberChef '탭' 기능과 결합하면 파일 배치를 분석할 수 있습니다.
크레딧: @DidierStevens
출처: https://isc.sans.edu/diary/27020
[{"op":"Unzip","args":["",false]},{"op":"Extract URLs","args":[false]},{"op":"Filter","args":["Line feed","http://schemas\.openxmlformats\.org/",true]},{"op":"Filter","args":["Line feed","http://schemas\.microsoft\.com/",true]},{"op":"Filter","args":["Line feed","http://purl\.org/",true]},{"op":"Filter","args":["Line feed","http://www\.w3\.org/",true]},{"op":"Defang URL","args":[true,true,true,"Valid domains and full URLs"]}]
AES로 암호화된 PowerShell 랜섬웨어 스크립트는 CyberChef와 일치하지 않습니다. 여기에서는 Base64를 16진수로 변환하고, IV와 키를 레지스터로 추출하고 이를 사용하여 blob을 해독할 수 있습니다. 해독되면 데이터를 검사하고 해독된 blob에서 1925바이트의 PE 파일을 식별할 수 있습니다. 이를 추출하면 다른 도구를 사용하여 폭발이나 정적 분석을 포함한 동작을 식별할 수 있습니다.
출처: @mattnotmax
추가 정보: REvil 랜섬웨어를 삭제하는 Powershell
[{"op":"Subsection","args":["(?<=\")([a-zA-Z0-9+/=]{20,})(?=\")",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"To Hex","args":["None",0]},{"op":"Merge","args":[]},{"op":"Register","args":["(?<=\")([a-fA-F0-9]{32})(?=\")",true,false,false]},{"op":"Register","args":["(?<=\")([a-fA-F0-9]{64})(?=\")",true,false,false]},{"op":"Regular expression","args":["User defined","[a-f0-9]{100,}",true,true,false,false,false,false,"List matches"]},{"op":"AES Decrypt","args":[{"option":"Hex","string":"$R1"},{"option":"Hex","string":"$R0"},"CBC","Hex","Raw",{"option":"Hex","string":""},""]},{"op":"Regular expression","args":["User defined","[a-f0-9]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Hex","args":["Auto"]},{"op":"Drop bytes","args":[0,1925,false]},{"op":"SHA2","args":["256",64,160]}]
좋아요, 대부분의 작업이 API에 의해 수행되기 때문에 여기서는 약간의 속임수를 쓰고 있습니다. 그러나 이는 HTTP 요청 작업이 CyberChef를 강화하는 매우 강력한 방법이 될 수 있음을 상기시켜 주는 좋은 예입니다. 여기에서는 CyberChef 입력 창에 약간의 '입력 양식'을 만들고 정규식을 사용하여 API 호출에 대한 주요 매개변수를 레지스터에 캡처했습니다. 약간의 텍스트 마사지만 하면 필요할 때 빠르고 쉽게 생성기를 사용할 수 있습니다. 새로운 사용자에게 빠른 새 비밀번호를 전달해야 하는 경우를 위한 레시피로 저장되었습니다.
출처: @mattnotmax
[{"op":"Register","args":["(?<=number:\s)(.*)",true,false,false]},{"op":"Register","args":["(?<=words:\s)(.*)",true,false,false]},{"op":"Register","args":["(?<=length:\s)(.*)",true,false,false]},{"op":"HTTP request","args":["GET","https://makemeapassword.ligos.net/api/v1/passphrase/plain?pc=$R0&wc=$R1&sp=y&maxCh=$R2","","Cross-Origin Resource Sharing",false]},{"op":"Find / Replace","args":[{"option":"Regex","string":" "},"-",true,false,true,false]}]
대부분의 샌드박스는 일반 비밀번호가 'infected'인 압축 파일을 제공합니다. CyberChef에서 콘텐츠를 추출할 수 있는데 데스크탑으로 추출할 위험이 있는 이유는 무엇입니까? 여기에는 OLE2 파일 첨부가 포함된 이메일 .eml
파일이 있습니다. Strings
Base64를 식별한 다음 추출 및 디코딩하여 두 번째 단계를 가져옵니다.
출처: Any.run
[{"op":"Unzip","args":["infected",false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\n"},"",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{400,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Strings","args":["16-bit littleendian",400,"Null-terminated strings (U)",false]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{2000,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Extract URLs","args":[false]},{"op":"Defang URL","args":[true,true,true,"Valid domains and full URLs"]}]
대체는 대체입니다. 그것은 문자 대 문자, 숫자 대 문자, 또는...해골 문자일 수 있습니까? 여기서 난독화는 처음에는 더 혼란스러워 보일 수 있지만 실제로는 다른 유형과 다르지 않습니다. 찾기/교체, 하위 섹션, Base64에서... CyberChef의 모든 표준 하루입니다. URL 추출을 활성화하기 위해 첫 번째 섹션을 뒤집은 다음 난독화를 계속 진행합니다.
출처: any.run
크레딧: https://twitter.com/neonprimetime/status/1365351048525791232
[{"op":"Find / Replace","args":[{"option":"Regex","string":"☠"},"B",true,false,true,false]},{"op":"Subsection","args":["[a-zA-Z0-9+/=]{300,}",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Decode text","args":["UTF-16LE (1200)"]},{"op":"Reverse","args":["Character"]},{"op":"Merge","args":[]},{"op":"Find / Replace","args":[{"option":"Simple string","string":"_✉✈_"},"A",true,false,true,false]},{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{300,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]}]
Sunshuttle이라고도 알려진 GoldMax는 실행 시 암호화된 구성 파일을 삭제합니다. Microsoft와 Fireeye의 RE 분석에서 알고리즘과 키가 식별되고 게시되었으므로 CyberChef를 사용하여 쉽게 해독할 수 있습니다.
출처 1: https://www.microsoft.com/security/blog/2021/03/04/goldmax-goldfinder-sibot-analyzing-nobelium-malware/
소스 2: https://www.fireeye.com/blog/threat-research/2021/03/sunshuttle-second-stage-backdoor-targeting-us-based-entity.html
[{"op":"From Base64","args":["A-Za-z0-9-_",true]},{"op":"AES Decrypt","args":[{"option":"UTF8","string":"hz8l2fnpvp71ujfy8rht6b0smouvp9k8"},{"option":"Hex","string":"00000000000000000000000000000000"},"CFB","Raw","Raw",{"option":"Hex","string":""}]},{"op":"Subsection","args":["[a-zA-Z0-9+/=]{50,}",true,true,false]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Merge","args":[]},{"op":"Drop bytes","args":[0,16,false]},{"op":"Take bytes","args":[0,120,false]},{"op":"Register","args":["(^.*?)\|(.*?)\|(.*?)\|(.*)\|(.*)",true,false,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":".*"},"MD5 of Execution Time:\t\t\t$R0\nLower/Upper Limit for Sleep Time:\t$R1\nUtilize “blend-in” traffic requests:\t$R2\nEnd execution timestamp:\t\t$R2\nUser-agent for HTTPS requests:\t\t$R4",false,false,false,false]}]
예, CyberChef에는 모스 부호 연산이 있습니다. 예, 언젠가는 사용해야 할 수도 있습니다. 안타깝게도 이는 맬웨어가 아니었지만 여전히 CyberChef가 작업을 수행합니다. 이 항목을 작성해주신 @pmelson과 @cyber__sloth에게 감사드립니다.
출처: https://pastebin.com/raw/PvLuparz
레시피: https://twitter.com/cyber__sloth/status/1367904890157211654
[{"op":"From Binary","args":["Space",8]},{"op":"From Morse Code","args":["Space","Forward slash"]},{"op":"Reverse","args":["Character"]},{"op":"ROT13","args":[true,true,false,13]}]
우리는 무엇을 원합니까? 16진수와 8진수의 혼합 인코딩을 한 세트에! 우리는 언제 그것을 원합니까? 지금!
출처: https://twitter.com/JCyberSec_/status/1368963598475739137
[{"op":"Fork","args":["\n","\n",false]},{"op":"Subsection","args":["\\x[a-fA-F0-9]{2}",true,true,false]},{"op":"From Hex","args":["\x"]},{"op":"Merge","args":[]},{"op":"Subsection","args":["\\\d{3}",true,true,false]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\\"},"",true,false,true,false]},{"op":"From Octal","args":["Space"]}]
이 다층 웹쉘은 하위 섹션 및 점프에 적합한 사례입니다. 단일 CyberChef 레시피에서 여러 부분으로 나누거나 아래와 같이 완성할 수 있습니다.
출처: https://twitter.com/mattnotmax/status/1377829935780274176
[{"op":"Regular expression","args":["User defined","[a-zA-Z0-9+/=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Subsection","args":["(?<=\\x)([a-fA-F0-9]{2})",true,true,false]},{"op":"From Hex","args":["\x"]},{"op":"Merge","args":[]},{"op":"Find / Replace","args":[{"option":"Regex","string":"\\x"},"",true,false,true,false]},{"op":"Subsection","args":["[a-zA-Z0-9+/=]{30,}=",true,true,false]},{"op":"From