Un hacker es alguien con alto conocimiento respecto a ordenadores, aunque el termino también puede implicar formar parte de la comunidad de hackers. Copy-paste: "A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular."
Dedicarse a petar sitios web o explotar vulnerabilidades en sistemas es más cosa de crackers y script kiddies, cosa que no significa que un hacker no pueda hacerlo. De todos modos, no es lo que define a un hacker.
PD: Y un hacker debe saber programación por narices, claro ;)