live_dont_exist
September 22nd, 2011, 01:13
Hey Guys,
I've been doing some malware analysis over the last few months. Have read quite a bit, stepped through a lot of Lena's stuff, done quite a few crack me's and challenges, analyzed quite a few samples of malware, blogged about my learnings etc. So I'm sort of getting the hang of things. But now, I feel that I am stuck again.. what's new eh??
. So here's my problem..
When confronted with a new piece of malware, I tend to do as much dynamic analysis as I can on it to try and understand what happens. I then try and load up the binary in IDA and study the static disassembly. Almost every time, I fail here.. as things get too complicated too fast. So then I load up the same malware in a debugger and then step through it, using IDA just to edit the names of functions...i.e sub 4012c9 now becomes => sub start_of_malware
This is more fruitful, and I do move forward, but invariably I am able to proceed to the point of understanding around 7 or 8 functions and their purpose... these functions seem to be very similar to the knowledge I gained while doing dynamic analysis. So you can say, I have confirmed what I learnt while doing dynamic analysis...by doing static analysis on sections of the code.
However, this is in no way complete as I understand, as there are vast parts of the disassembly with plenty of functions still 'un-analyzed'? And since the malware doesn't trigger them directly (something needs to happen).. I'm left with no other choice but to read each function individually and try and understand why its present. And I try doing this, but I get stuck... There have been articles which tell me to change the entry point to the function I want to trigger, but surely they wont run on their own in most cases? There'd be stack arguments and parameters that have to be passed?
No, its not the assembly which is a problem.. I can "understand" the instructions.. as in I can understand MOV AL,1 .. but why is it there? what is its purpose? .. all that seems a bit fuzzy. I just read a very old Win95 tutorial that told me to rename "variables" as well along with "functions" and I'll try that... but just thought I'd ask here too.
So what do you guys advise, to try and learn stuff better? Is the way I am doing it the only way? All suggestions are appreciated
Thnx
Arvind
I've been doing some malware analysis over the last few months. Have read quite a bit, stepped through a lot of Lena's stuff, done quite a few crack me's and challenges, analyzed quite a few samples of malware, blogged about my learnings etc. So I'm sort of getting the hang of things. But now, I feel that I am stuck again.. what's new eh??

When confronted with a new piece of malware, I tend to do as much dynamic analysis as I can on it to try and understand what happens. I then try and load up the binary in IDA and study the static disassembly. Almost every time, I fail here.. as things get too complicated too fast. So then I load up the same malware in a debugger and then step through it, using IDA just to edit the names of functions...i.e sub 4012c9 now becomes => sub start_of_malware
This is more fruitful, and I do move forward, but invariably I am able to proceed to the point of understanding around 7 or 8 functions and their purpose... these functions seem to be very similar to the knowledge I gained while doing dynamic analysis. So you can say, I have confirmed what I learnt while doing dynamic analysis...by doing static analysis on sections of the code.
However, this is in no way complete as I understand, as there are vast parts of the disassembly with plenty of functions still 'un-analyzed'? And since the malware doesn't trigger them directly (something needs to happen).. I'm left with no other choice but to read each function individually and try and understand why its present. And I try doing this, but I get stuck... There have been articles which tell me to change the entry point to the function I want to trigger, but surely they wont run on their own in most cases? There'd be stack arguments and parameters that have to be passed?
No, its not the assembly which is a problem.. I can "understand" the instructions.. as in I can understand MOV AL,1 .. but why is it there? what is its purpose? .. all that seems a bit fuzzy. I just read a very old Win95 tutorial that told me to rename "variables" as well along with "functions" and I'll try that... but just thought I'd ask here too.
So what do you guys advise, to try and learn stuff better? Is the way I am doing it the only way? All suggestions are appreciated

Thnx
Arvind