Tag Info

Hot answers tagged

39

I would say a great way to learn is for her to break the applications she has already written. Assuming she is writing web applications, point her towards the OWASP Top 10. Have her see if she can find any of those flaws in her own code. There is no better way to learn about security concepts than actually seeing it happen on your own code. Once a flaw has ...


16

Languages are useful for doing things. What type of things it's suitable for completely depends on the type of language, the frameworks available for it, what OSes have interpreters / compilers for it, etc. Let's look at the ones you've mentioned: Perl Scripting language General purpose Available on most *nix OSes since the '90s. Great for quick hacks ...


11

Half of cryptography is about the raw algorithms, like SHA-256 or AES. The other half is about assembling these algorithms into complete protocols like, for instance, SSL/TLS; designing a secure protocol is not easier than building a secure algorithm. When a developer meddles with an algorithm, then, by definition, he is in the process of creating his own ...


11

While I agree in principle with Everett, there is another point of view. The point of a lesson is to learn a concept, which can then be further built on. This lessens the slope of the learning curve. Teaching too much too fast is overwhelming; when faced with an onslaught of information, most brains "leak". It's great to say "Secure coding practices should ...


11

I'm going to take the position that may get me flambéed... The problem I see, is that secure programming is taught as an add on. Best practices should be taught from the beginning (including security). The lie people are taught is that practice makes prefect. The truth is practice makes permanent. So if you are doing it wrong, you have to unlearn what ...


11

My take-aways would be: Never roll your own cryptography if you can avoid it. (Sometimes you'll have to for tailor-made solutions / embedded platforms.) If you have to roll your own, always build on known working protocols. Don't rely on hiding your implementation. Obfuscation is a valid layer of defense in depth, but should only be used to add to existing ...


7

Here is a great answer I found on a stack overflow question of similar context by @tqbf: (I copied this answer here, because I believe it gives valid reasons for which they may be prefered, so it might be useful to future readers) You probably want Ruby, because it's the native language for Metasploit, which is the de facto standard open source ...


7

Last night I finished an online course that is offered by Stanford University's Center for Professional Development. Video lectures were by Dan Boneh, a prominent cryptographer and professor at Stanford. He said something that stood out to me that I wanted to share with you, which was: Don't try to implement your own cryptographic protocols (as you've ...


7

Much like other aspects of a real education (perhaps this should be more on Parenting.SE...), I think it comes back to critical thinking. My daughter is also taking some college CS courses, and I'm helping her work through them. In many cases, I explain something very wrong to her, and expect her to call me on it. (She usually does). Sometimes, it's ...


7

Actually putting a class member on public or private has nothing to do with security. This answer on stackoverflow covers it quite well: What are public, private and protected in object oriented programming? Also note that there are languages like Python where there is just a convention to start private methods with an underscore. However every programmer ...


7

For studying malware, you will be doing a lot of reverse engineering to understand what it does as well as a lot of analyzing systems for weaknesses to try to predict which ways malware development might go. A Computer Science degree will be critical and you will want to focus on decompiling and low level development (assembly and C/C++). Understanding ...


6

There are limited, specific situations where field visibility has an impact. I am talking about Java applets. An unsigned Java applet can only do limited system interactions (no access to local files, no connection to external servers except the one which served the applet code, and so on). These restrictions are enforced through a complex framework of ...


6

Not the best answer, but I'd say developers need to learn enough to make good decisions with respect to the risk to their project. I have seen that any project needs someone who knows enough about the entire system to be able to: Diagnose and fix cases where parts won't connect - increases with the number of diverse systems you try to connect together. ...


5

If developers shouldn't use cryptography libraries, then perhaps they shouldn't be available to developers. Given that they are, I simply must assume, as a developer, that I should be able to use them. .NET has many built-in cryptographic algorithms, both in fully "managed" code and as wrappers to the CryptoServiceProviders in the MFCs. Java has a few of ...


4

I think that ultimately it comes down to trying to figure out at what point the security education doesn't obfuscate the point of the lesson. Lesson assignments are usually simplified problems designed to expose a particular problem and show how to solve that particular problem. I think the more ideal way to approach it is to start out with having her do ...


4

No such things exists on a modern system. 10 years ago I would have said one of the samples used in Smashing the Stack for fun and profit (probably example2.c). But today buffer overflows are very complex and no two exploits are the same. Buffer overflows are no longer the tool of choice for criminals.


4

The first thing to consider is what is the purpose of the temp file. If the temp is outputting useful information, an attacker could use this to glean information about the functionality of the programs, settings, error messages, etc (depending on the output). The attacker may be able to have a malicious program occasionally scan such files looking for ...


4

Degree-wise, I'd recommend Computer Science with a strong grounding in code development - the average software engineering classes, with extra effort in lower level languages that touch the system more intimately (C,C++, assembly) and compiler theory. As an add on - ways of breaking through higher level web based technologies is also becoming a trend - so ...


3

I'm a little confused with your question... Reverse-engineering in your case means executing the binary to understand it so you must execute .exe files on MacOsX. So first, you should look at DarWine (Wine for MacOSX), Wine is an alternate Win32 Environnement which can execute your .exe file. After this you can attach a debugger (OllyDbg, Ice, ...) as you ...


3

When a function exits, execution jumps to the address which was saved on the stack. "Classical" exploits of a buffer overflow alter that saved address so that it points to, precisely, the contents of the stack buffer which was just overflown. This assumes that the attacker gets to choose the contents of the buffer, and places there the code he wishes to get ...


3

To really understand IT security (and, more generally, computers), you will have to know how things go inside, so, sooner or later, you will have to learn assembly for one or two architectures (preferably more than two). The low-level exploit codes (e.g. for buffer overflows) don't make sense unless you know assembly. Then move on to C, which is very ...


3

Libraries, Time to write Code, cross-platform compatibility are key here. I found that using Python I was able to come up with Proof-of-concept exploits in a very short amount of time with minimum lines of code. This is possible because of the extensive standard library and additional libraries that you can download as well. I believe that is python's ...


3

Some good answers already to this one but I'll provide another perspective. One reason that scripting languages tend to be used for hacking is that they optimize for speed (and ease) of development which is likely to be a key factor. As an example, for penetration testing scripting I use ruby. It has a number of good libraries for things like HTTP which ...


3

I have zero knowledge in these fields, but the mentioned programming languages all enable rapid programming, i.e. one could try out a much larger number of different ideas in a given time frame than with the more runtime-efficient but inefficient for programming (and debugging) programming languages like C etc. That might be a point.


3

I think what defines a language suited for hacking, is: Usage of the language. Cross platform support. Take an example of Java. It runs on all platforms, and is installed on a lot of system. This ensures a fairly high probability that the hackers code can run, and the language is installed on the system he targets. The community of given highly used ...


3

IDA Pro is widely considered to be the single best static analysis for binary software. It also supports debugging, but in this field other tools (Immunity Debugger, ollydbg, WinDbg, etc.) may be better in various scenarios. Since you have no intention (and you can't) of executing and debugging your binary, we need not worry about that. The recent versions ...


3

As a rough summary, OpenSSL has been designed as a library and was meant to be used as such. The command-line utility was, initially, a tool for testing and for manual tasks. Potential issues with invoking the command-line utility from a C application, with system() or popen(), include the following: The tool expects its inputs as files, which must be ...


2

GNU binutils include the objdump utility which can disassemble executable files into human-readable, or at least programmer-readable, assembly source code. It can do so for any supported target it has been compiled for, regardless of what architecture the tool itself is running on. In particular, it can disassemble a Windows .exe file even when running on ...


2

ASLR is a runtime feature provided by the operating system when the binary file is executed; if the OS decides it so, it will apply it on the DLL loaded by the executable, regardless of how the executable and the DLL were compiled. What can be seen in the executable is whether it is itself "relocatable" (i.e. like a DLL), in which case ASLR can also be ...


2

A good rule-of-thumb with respect to security is to use software, packages, protocols, and mechanisms that have been thoroughly vetted by respected cryptographers. So for example: AES: yes TLS: yes OpenSSL: yes MyPHPLoginSoft: no Even commonly-used products (such as Joomla) frequently contain critical implementation and logic errors. Having a product ...



Only top voted, non community-wiki answers of a minimum length are eligible