예제 #1
0
    def run(self):
        result = {
            "title": "Application Makes Insecure Function Calls",
            "details": "",
            "severity": "Medium",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        matches = re.findall(self.function_calls, symbols)
        if matches:
            result.update({
                "report":
                True,
                "details":
                "The following function symbols were \
found: * {}".format("\n* ".join(sorted(set(matches))))
            })

        return {"{}_result".format(self.name()): result}
예제 #2
0
    def run(self):
        result = {
            "title": "Application Uses Weak Random Functions",
            "details": "",
            "severity": "Low",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        matches = re.findall(self._regex, symbols)
        if matches:
            result.update({
                "report":
                True,
                "details":
                "The following evidence were found:\n* {}".format("\n* ".join(
                    sorted(set(matches))))
            })

        return {"{}_result".format(self.name()): result}
예제 #3
0
    def run(self):
        result = {
            "title": "Application Was Compiled Without Stack Smashing \
Protections",
            "details": "",
            "severity": "Medium",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        if not re.search(self._regex, symbols):
            result.update({
                "report": True,
                "details": "No evidence of stack smashing protections found."
            })

        return {
            "{}_result".format(self.name()): result
        }
예제 #4
0
    def run(self):
        result = {
            "title": "Application Does Not Disable Clipboard Access",
            "details": "",
            "severity": "Medium",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        if not re.search(self._regex, symbols):
            result.update({
                "report":
                True,
                "details":
                "No evidence of the application trying to disable \
clipboard access."
            })

        return {"{}_result".format(self.name()): result}
예제 #5
0
    def run(self):
        result = {
            "title": "Application Does Not Check If A Passcode Is Set",
            "details": "",
            "severity": "Low",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        matches = re.findall(self._regex, symbols)
        if not matches:
            result.update({
                "report":
                True,
                "details":
                "No evidence of checking for passcode set found."
            })

        return {"{}_result".format(self.name()): result}
예제 #6
0
    def run(self):
        result = {
            "title": "Application Does Not Use Prepared Statements",
            "details": "",
            "severity": "Low",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        sqlite_matches = re.findall(self._sqlite_regex, symbols)
        matches = re.findall(self._regex, symbols)
        if sqlite_matches and not matches:
            result.update({
                "report":
                True,
                "details":
                "Evidences of SQLite being used were found but no \
evidence of prepared statements being used was found."
            })

        return {"{}_result".format(self.name()): result}
예제 #7
0
    def run(self):
        result = {
            "title": "Application Does Not Check For Third-Party Keyboards",
            "details": "",
            "severity": "Medium",
            "report": False
        }

        symb_module = SymbolsModule()
        symb_module.binary = self.binary
        symbols_result, symbols = symb_module.run(), None
        for key in symbols_result:
            if key.endswith("_symbols"):
                symbols = symbols_result[key]

        if not symbols:
            return {"print": "Couldn't get symbols from binary."}

        Log.info("Analysing Symbols")
        if not re.search(self._regex, symbols):
            result.update({
                "report":
                True,
                "details":
                "No evidence of third party keyboard detection \
functions found."
            })

        return {"{}_result".format(self.name()): result}