이번 QuarkEngine즉 Quark Agent를 소개하게된 계기는 이번 캡스톤 디자인을 설계할때, Quark Agent를 활용한 서비스를 개발하였습니다. 하지만 이번 공부 과정에서 QuarkEngine을 소개하는 글이 많이 없다는 생각을해, 이번달 블로그 주제로 선정하였습니다.
먼저 quarkEngine에서 제공하는 yara룰 기반 json파일들이 있습니다. json파일을 스캔을 진행할
python코드를 사용하면 관련 취약점의 위험도를 체크해볼 수 있습니다.
from quark.script import runQuarkAnalysis, Rule
SAMPLE_PATH = "ovaa.apk"
RULE_PATH = "loadExternalCode.json"
targetMethod = [
"Landroid/content/pm/PackageManager;",
"checkSignatures",
"(Ljava/lang/String;Ljava/lang/String;)I"
]
ruleInstance = Rule(RULE_PATH)
quarkResult = runQuarkAnalysis(SAMPLE_PATH, ruleInstance)
for ldExternalCode in quarkResult.behaviorOccurList:
callerMethod = [
ldExternalCode.methodCaller.className,
ldExternalCode.methodCaller.methodName,
ldExternalCode.methodCaller.descriptor
]
ifnot quarkResult.findMethodInCaller(callerMethod, targetMethod):
print(f"Method: {targetMethod[1]} not found!")
print(f"CWE-94 is detected in {SAMPLE_PATH}")
활용방안
이제 저같은 경우에는 quarkengine에서 제공하는 모든 rule들을 사용하여 모바일앱 취약점 점검 기능을 진행하는 모듈을 개발하였습니다. 추후에 버그바운티와 같은 활동을 진행할때 이와같이 위험도를 측정한 후에 이에 관련된 취약점 위주로 트리거를 찾는다면, 보다 쉽게 취약점 점검을 진행할 수 있을거 같습니다.